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.
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...
Aujourd'hui nous allons parler de Dawarich! Une application qui a pour vocation de remplacer Google Map Timeline, alias Google Location History.
- 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
- Créez votre compose.yml dans le dossier où vous comptez installer Dawarich:
sudo nano compose.yml
- 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:
- On déployer l'application:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- 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
🔌 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
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
Télécharger OwnTracks pour iOS
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
}