Installer Dawarich avec Docker
Dawarich

Installer Dawarich avec Docker

Table des matières

GitHub - Freika/dawarich: Self-hosted alternative to Google Location History (Google Maps Timeline)
Self-hosted alternative to Google Location History (Google Maps Timeline) - Freika/dawarich
💡
Dorénavant le fichier docker-compose.yml sera compose.yml car docker-compose.yml est déprécié. docker-compose.yml est toujours supporté, mais un jour ou l'autre ça sera supprimé donc autant passer à compose.y(a)ml.
Si pour une raison ou une autre cela ne fonctionne pas, continuez avec docker-compose.y(a)ml et venez sur Discord ou Matrix pour en discuter.

🎵 Promenons nous dans les boiiiiiiis, pendant que le loup n'y est paaaaaaas.

Alors non je n'ai pas croisé de loups, mais je me suis fait bouffé par les moustiques, attaqué par les ronces et piqué par les orties.

Merci la Nature!

Afin de tester l'application , je me suis mis en route, à pieds, vers 23h pour tester ça en conditions réelles en passant par des endroits un peu compliqués...

Voici mon petit parcours, en partie, à travers la Nature impitoyable... 🤕!

Aujourd'hui nous allons parler de Dawarich! Une application qui a pour vocation de remplacer Google Map Timeline, alias Google Location History.

⚠️
- Le projet est en développement très actif.
- Attendez-vous à des bugs et à des changements importants.
- Exportez vos données depuis Dawarich à l'aide de la fonctionnalité d'exportation intégrée avant de mettre à jour vers une nouvelle version.

⚡Caractéristiques

  • Suivi de localisation: Vous pouvez suivre votre position à l'aide de l'application Owntracks ou Overland.
  • Historique de localisation: Vous pouvez afficher votre historique de localisation sur une carte. Sur la carte, vous pouvez activer/désactiver les couches suivantes : "Carte", "thermique", "Points", "Lignes entre les points."
  • Statistiques: Vous pouvez voir le nombre de pays et de villes visités, la distance parcourue et le temps passé dans chaque pays, répartis en années et en mois.
  • Importer: Vous pouvez importer votre historique de localisation existant à partir de Google Maps Timeline, OwnTracks, Strava, vos fichiers GPX et des données EXIF!

💾 L'installation

  1. Créez votre compose.yml dans le dossier où vous comptez installer Dawarich:
sudo nano compose.yml
  1. Collez ça dedans en prenant soin d'adapter les ports et les volumes suivant votre configuration:
version: '3'
networks:
  dawarich:
services:
  dawarich_redis:
    image: redis:7.0-alpine
    command: redis-server
    networks:
      - dawarich
    volumes:
      - shared_data:/var/shared/redis
  dawarich_db:
    image: postgres:14.2-alpine
    container_name: dawarich_db
    volumes:
      - db_data:/var/lib/postgresql/data
      - shared_data:/var/shared
    networks:
      - dawarich
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
  dawarich_app:
    image: freikin/dawarich:latest
    container_name: dawarich_app
    volumes:
      - gem_cache:/usr/local/bundle/gems
      - public:/var/app/public
    networks:
      - dawarich
    ports:
      - 3700:3000
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['bin/dev']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      MIN_MINUTES_SPENT_IN_CITY: 60
      APPLICATION_HOST: localhost
      APPLICATION_HOSTS: localhost
      TIME_ZONE: Europe/London
      APPLICATION_PROTOCOL: http
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"
    depends_on:
      - dawarich_db
      - dawarich_redis
  dawarich_sidekiq:
    image: freikin/dawarich:latest
    container_name: dawarich_sidekiq
    volumes:
      - gem_cache:/usr/local/bundle/gems
      - public:/var/app/public
    networks:
      - dawarich
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['sidekiq']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      APPLICATION_HOST: localhost
      APPLICATION_HOSTS: localhost
      BACKGROUND_PROCESSING_CONCURRENCY: 10
      APPLICATION_PROTOCOL: http
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"
    depends_on:
      - dawarich_db
      - dawarich_redis
      - dawarich_app

volumes:
  db_data:
  gem_cache:
  shared_data:
  public:
  1. On déployer l'application:
docker-compose up -d

ou avec docker-compose V2:

docker compose up -d
  1. Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 3700 par défaut:
http://ip:3700/

ou votre domaine:

https://mondomaine.com
⚠️
Ne reliez pas trop vite l'application à un domaine/sous-domaine, plus d'explication dans la suite du tutoriel.

🔌 Première connexion

Lorsque vous lancez Dawarich pour la première fois, voici ce que vous voyez:

Cliquez sur Login, tout en haut à droite:

Vous arriverez à cette page pour vous connecter, avec le compte administrateur par défaut:

  • Email => user@domaine.com
  • Password => password

Cliquez sur Log in pour vous connecter, ce qui donne:


👤 Modifier le compte administrateur par défaut

Cliquez en haut à droite sur user@domaine.com:

Ensuite sur Account:

Modifier le compte par défaut en remplissant les informations demandées:

  • Email => Indiquez l'e-mail souhaité.
  • Password => Choisissez un mot de passe fort.
  • Password confirmation => Confirmez ce mot de passe.
  • Current password => Indiquez le mot de passe actuel: password.

Cliquez sur Update pour terminer.

Déconnectez-vous pour tester votre nouveau compte administrateur:

Entrez les informations du nouveau compte et cliquez sur Log in:

Tout fonctionne bien:


🔑 Récupération de la clé API

Toujours dans la partie Account, vous avez l'information nécessaire pour récupérer la clé API et le lien qui la précède, sous OwnTracks.

Copiez le lien complet et envoyez-vous ça par mail afin que ce soit facile à copier pour l'introduire dans l'application OwnTracks:


📱 Configurer l'application de tracking sur votre smartphone

💡
Copiez déjà sur votre smartphone, le lien que vous vous êtes envoyé.

Laissons de côté Dawarich pour le moment et concentrons-nous sur l'application mobile qui va se charger du tracking.

Il faudra accorder quelques permissions comme le fonctionnement en fond de tâche, sans quoi cela ne fonctionnera pas.

Télécharger OwnTracks pour Android

OwnTracks - Apps on Google Play
Your location companion

Télécharger OwnTracks pour iOS

‎OwnTracks
‎OwnTracks - Your location companion OwnTracks allows you to keep track of your own location. You can build your private location diary or share it with your family and friends. OwnTracks is open-source and uses open protocols for communication so you can be sure your data stays secure and private.…

Configurer OwnTracks

Lancez l'application OwnTracks et rendez-vous dans Préférences:

Dans l'option Mode, choisissez HTTP:

Cliquez sur Endpoint, qui se trouve sous Mode, collez votre lien avec la clé API, validez avec OK:

Pour terminer, rendez-vous sur précédemment et indiquez les informations du compte que vous avez créé précédement dans Dawarich:

Retournez sur la page principale de l'application et cliquez sur la flèche vers le haut:

Si vous voyez un carré, cela veut dire que l'envoie de données vers Dawarich est désactivé, cliquez sur le carré et cliquez sur ▶️ ou encore, conseillé le mode Move pour plus de précision, mais plus énergivore.

Si tout fonctionne bien, dans la partie notification de votre smartphone, vous devez voir votre localisation et l'indication Connecté:

C'est terminé, pour le moment, côté smartphone.


🗺️ Enregistrer vos parcours et les visualiser sur Dawarich

Maintenant que OwnTracks fonctionne, il va enregistrer vos déplacements.

Il faut parfois un peu de temps, de l'ordre de quelques minutes, pour que Dawarich retranscrive toutes les données sur la carte.

Voyons ça de plus près. Allez sur Dawarich, sur l'onglet Map:

Vous verrez votre parcours:

En cliquant en haut à droite sur l'icône ressemblant à une pile de feuilles, vous pourrez modifier l'affichage de votre parcours:

Sous l'onglet Points, vous pourrez retrouver toutes vos coordonnées:

Vous avez également un onglet Stats, pour afficher les statistiques et les onglets Imports et Exports, pour importer vos données de Google ou exporter celles de Dawarich.


🔽 Exporter les données de Dawarich

Cliquez sur Points, sélectionnez les entrées et cliquez sur Export points:

Sous l'onglet Exports, vous pourrez retrouver vos exportations:


🌐 Configuration du reverse proxy

Si vous reliez Dawarich à un domaine/sous-domaine, n'oubliez pas de refaire les procédures:

  • Récupération de la clé API
  • Configurer l'application de tracking sur votre smartphone

La première chose à faire quelque soit la méthode (sauf Caddy) c'est d'éditer le compose.yml qui devra ressembler à ça:

version: '3'
networks:
  dawarich:
services:
  dawarich_redis:
    image: redis:7.0-alpine
    command: redis-server
    networks:
      - dawarich
    volumes:
      - shared_data:/var/shared/redis
  dawarich_db:
    image: postgres:14.2-alpine
    container_name: dawarich_db
    volumes:
      - db_data:/var/lib/postgresql/data
      - shared_data:/var/shared
    networks:
      - dawarich
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
  dawarich_app:
    image: freikin/dawarich:latest
    container_name: dawarich_app
    volumes:
      - gem_cache:/usr/local/bundle/gems
      - public:/var/app/public
    networks:
      - dawarich
    ports:
      - 3000:3000
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['bin/dev']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      MIN_MINUTES_SPENT_IN_CITY: 60
      APPLICATION_HOST: localhost
      APPLICATION_HOSTS: dawarich.mondomaine.com
      TIME_ZONE: Europe/London
      APPLICATION_PROTOCOL: http
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"
    depends_on:
      - dawarich_db
      - dawarich_redis
  dawarich_sidekiq:
    image: freikin/dawarich:latest
    container_name: dawarich_sidekiq
    volumes:
      - gem_cache:/usr/local/bundle/gems
      - public:/var/app/public
    networks:
      - dawarich
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['sidekiq']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      APPLICATION_HOST: localhost
      APPLICATION_HOSTS: dawarich.mondomaine.com
      BACKGROUND_PROCESSING_CONCURRENCY: 10
      APPLICATION_PROTOCOL: http
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"
    depends_on:
      - dawarich_db
      - dawarich_redis
      - dawarich_app

volumes:
  db_data:
  gem_cache:
  shared_data:
  public:

Il faut, à chaque entrée APPLICATION_HOSTS, il y en a deux, modifier la ligne comme ceci:

  • APPLICATION_HOSTS: dawarich.mondomaine.com

Attention, juste le domaine, sans HTTP/HTTPS.

Sauvez votre compose.yml.

Avec Cosmos Cloud

Il suffira d'ajouter dans Target URL, http://ip.port correspondant respectivement à l'ip de votre serveur et le port de Dawarich:

Ensuite cochez Use Host et d'entrer votre domaine:

Avec NGINX

Voici le virtual host:

server {

	listen 80;
	listen [::]:80;
	server_name example.com;

	location / {
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto https;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header Host $http_host;
		proxy_redirect off;

		proxy_pass http://ipserver:3700/;
	}

}

Veillez à remplacer:

  • example.com; par votre domaine, par exemple, dawarich.mondomaine.com.

Apache2

Commencez par activer ces modules:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers

Voici le virtual host:

<VirtualHost *:80>
    ServerName example.com

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>

    Header always set X-Real-IP %{REMOTE_ADDR}s
    Header always set X-Forwarded-For %{REMOTE_ADDR}s
    Header always set X-Forwarded-Proto https
    Header always set X-Forwarded-Server %{SERVER_NAME}s
    Header always set Host %{HTTP_HOST}s

    ProxyPass / http://ipserver:3700/
    ProxyPassReverse / http://ipserver:3700/

</VirtualHost>

Caddy

Comme le dit la documentation:

Voici la configuration minimale de Caddy avec laquelle vous aurez besoin pour présenter Dawarich. Veuillez garder à l'esprit que si vous exécutez Caddy séparément de votre stack Dawarich, vous devrez disposer d'un réseau partagé entre eux.

Tout d'abord, créez le réseau Docker qui sera utilisé entre les stacks, si nécessaire:

docker network create frontend

Deuxièmement, créez un réseau Docker que Dawarich utilisera comme réseau backend :

docker network create dawarich

Ajustez votre compose.yaml afin que l'application Web soit exposée à votre nouveau réseau et au réseau backend Dawarich :

version: '3'
networks:
  dawarich:
  frontend:
    external: true
services:
  dawarich_redis:
    image: redis:7.0-alpine
    command: redis-server
    networks:
      - dawarich
    volumes:
      - ./dawarich/redis:/var/shared/redis
  dawarich_db:
    image: postgres:14.2-alpine
    container_name: dawarich_db
    volumes:
      - ./dawarich/db:/var/lib/postgresql/data
      - ./dawarich/shared:/var/shared
    networks:
      - dawarich
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
  dawarich_app:
    image: freikin/dawarich:latest
    container_name: dawarich_app
    volumes:
      - ./dawarich/gems:/usr/local/bundle/gems
      - ./dawarich/public:/var/app/public
    networks:
      - dawarich
      - frontend
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['bin/dev']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      MIN_MINUTES_SPENT_IN_CITY: 60
      APPLICATION_HOSTS: <YOUR FQDN HERE (ex. dawarich.example.com)>
      TIME_ZONE: America/New_York
    depends_on:
      - dawarich_db
      - dawarich_redis
  dawarich_sidekiq:
    image: freikin/dawarich:latest
    container_name: dawarich_sidekiq
    volumes:
      - ./dawarich/gems:/usr/local/bundle/gems
      - ./dawarich/public:/var/app/public
    networks:
      - dawarich
    stdin_open: true
    tty: true
    entrypoint: dev-entrypoint.sh
    command: ['sidekiq']
    restart: on-failure
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: password
      DATABASE_NAME: dawarich_development
      APPLICATION_HOSTS: <YOUR FQDN HERE (ex. dawarich.example.com)>
    depends_on:
      - dawarich_db
      - dawarich_redis
      - dawarich_app

Le fichier conf de Caddy:

{
	http_port 80
	https_port 443
}

<YOUR FQDN HERE (ex. dawarich.example.com)> {
	reverse_proxy dawarich_app:3000
}

zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.