Standortverlauf für immer: Dawarich statt Google Maps Timeline
Google löscht die Timeline-Historie, Dawarich behält sie für immer.
Google zieht sich zunehmend aus der zentralen Verwaltung von Standortdaten zurück und verbannt die Timeline-Historie aufs einzelne Gerät. Mit Dawarich lässt sich dagegen ein eigener, vollständig selbst gehosteter Ersatz betreiben, der Kartenansicht, Statistiken und Reise-Tracking liefert, ohne dass die Daten je einen fremden Server sehen. Der folgende Aufbau kombiniert einen portablen Docker-Stack, PhoneTrack als Nextcloud-Zweitquelle und eine batteriebewusste Tasker-Automatisierung zu einem runden Gesamtsystem.
Übersicht
Google Maps Timeline verliert an Kontrolle
Ende 2023 kündigte Google an, die Timeline-Standortdaten künftig nicht mehr in der Cloud, sondern lokal auf dem Gerät zu speichern. Die Umstellung zog sich durch das gesamte Jahr 2024, standardmäßig werden dabei nur noch die letzten drei Monate der Historie behalten, alles Ältere landet im digitalen Nirwana, sofern nicht rechtzeitig ein Google-Takeout-Export gezogen wurde. Als Nebeneffekt ist die Timeline seither an ein einzelnes Gerät gebunden, ein Zugriff über den Webbrowser oder eine nahtlose Synchronisation zwischen mehreren Smartphones fällt weg, wie unter anderem 9to5google berichtete. Wer seine Standorthistorie über Jahre hinweg auswerten möchte, etwa für Reiseerinnerungen oder saubere Statistiken, steht damit vor einem Problem, das sich nur mit einer eigenen Lösung umgehen lässt.
Dawarich als self-hosted Alternative
Genau hier setzt Dawarich an, ein Open-Source-Projekt, das explizit als Ersatz für Google Timeline entwickelt wurde. Die Anwendung bringt eine interaktive Karte mit mehreren Layern mit, darunter eine Heatmap und den sogenannten Fog-of-War-Modus, der die noch unbesuchten Flecken auf der Karte verschleiert und mit jedem neuen Ort ein Stück lüftet. Dazu kommen Reisestatistiken (besuchte Länder, zurückgelegte Distanz, Tage pro Land) sowie eine automatische Erkennung von Aufenthaltsorten, die sich einzeln bestätigen oder verwerfen lässt. Technisch basiert Dawarich auf Ruby on Rails mit einer PostgreSQL/PostGIS-Datenbank und Sidekiq für die Hintergrundverarbeitung, ausgeliefert wird das Ganze über Docker Compose.

Besonders praktisch: Dawarich ist nicht auf eine einzige Tracking-App festgelegt, sondern versteht die Protokolle von PhoneTrack, OwnTracks, GPSLogger, Overland und sogar Home Assistant. Wer bereits eine dieser Apps im Einsatz hat, muss also nicht zwingend umsteigen, sondern kann den vorhandenen Datenstrom einfach zusätzlich an die eigene Dawarich-Instanz schicken.
Der Docker-Stack ganz ohne Named Volumes
Beim Aufsetzen des Stacks fiel die Entscheidung bewusst gegen klassische Docker-Volumes. Die liegen normalerweise irgendwo unter /var/lib/docker/volumes verborgen und sind an genau diesen Host gebunden. Stattdessen landen sämtliche Daten als Bind-Mounts direkt unterhalb des Ordners, in dem auch die docker-compose.yml liegt. Der Vorteil: Der komplette Stack lässt sich per tar oder rsync auf einen anderen Server umziehen, ohne dass irgendwo ein Volume-Name oder Docker-interne Pfade nachgepflegt werden müssen, einfach Ordner kopieren, Compose starten, fertig. Wie der zugrundeliegende Webserver samt Reverse Proxy und Zertifikaten eingerichtet wird, wurde bereits in einem früheren Artikel beschrieben, dort läuft der Docker-Host als LXC-Container.

Ein aufgeräumtes Beispiel für einen solchen Dawarich-Stack sieht so aus:
# M. Meister
services:
dawarich_redis:
image: redis:7.4-alpine
container_name: dawarich_redis
command: redis-server --save 900 1 --save 300 10 --appendonly no
networks:
- backend
volumes:
- ./dawarich_shared:/data
restart: unless-stopped
dawarich_db:
image: postgis/postgis:17-3.5-alpine
shm_size: 1G
container_name: dawarich_db
volumes:
- ./dawarich_db/data:/var/lib/postgresql/data
- ./dawarich_shared:/var/shared
networks:
- backend
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "changeme"
POSTGRES_DB: dawarich_production
restart: unless-stopped
dawarich_app:
image: freikin/dawarich:latest
container_name: dawarich_app
volumes:
- ./dawarich_app/public:/var/app/public
- ./dawarich_app/storage:/var/app/storage
networks:
- backend
- web
ports:
- "3000"
entrypoint: web-entrypoint.sh
command: ['bin/rails', 'server', '-p', '3000', '-b', '::']
environment:
RAILS_ENV: production
REDIS_URL: redis://dawarich_redis:6379
DATABASE_HOST: dawarich_db
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: "changeme"
DATABASE_NAME: dawarich_production
APPLICATION_HOSTS: maps.beispiel.de
APPLICATION_PROTOCOL: https
SELF_HOSTED: "true"
depends_on:
- dawarich_db
- dawarich_redis
restart: unless-stopped
dawarich_sidekiq:
image: freikin/dawarich:latest
container_name: dawarich_sidekiq
volumes:
- ./dawarich_app/public:/var/app/public
- ./dawarich_app/storage:/var/app/storage
networks:
- backend
entrypoint: sidekiq-entrypoint.sh
command: ['sidekiq']
environment:
RAILS_ENV: production
REDIS_URL: redis://dawarich_redis:6379
DATABASE_HOST: dawarich_db
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: "changeme"
DATABASE_NAME: dawarich_production
SELF_HOSTED: "true"
depends_on:
- dawarich_db
- dawarich_redis
- dawarich_app
restart: unless-stopped
networks:
web:
external: true
backend:
external: true
Die vier Container übernehmen jeweils eine klar abgegrenzte Aufgabe: Redis puffert Jobs, PostGIS speichert die Geodaten inklusive räumlicher Indizes, die Rails-App liefert Web-Oberfläche und API, Sidekiq verarbeitet Importe und Berechnungen im Hintergrund. Die Passwörter sollten selbstverständlich vor dem produktiven Einsatz durch eigene, zufällig generierte Werte ersetzt werden.
Doppelte Datenhaltung über Nextcloud und PhoneTrack
Da die eigenen Standortpunkte ohnehin schon über Jahre in Nextcloud gesammelt wurden, wandern sie zusätzlich in Dawarich. PhoneTrack fungiert dabei weiterhin als Zweitquelle in Nextcloud, während Dawarich die eigentliche Auswertung und Visualisierung übernimmt. Diese Redundanz kostet kaum Aufwand, sorgt aber dafür, dass ein Datensatz als Backup existiert, falls an einer der beiden Instanzen mal etwas schiefgeht.

Tasker steuert die Update-Frequenz
Die eigentliche Übertragung der Position übernimmt Tasker auf dem Smartphone, wie der beigefügte Task-Screenshot zeigt. Nach der Standortermittlung berechnet ein Variablen-Block die Distanz zur zuletzt übermittelten Position, anschließend prüft eine Bedingung, ob diese Distanz einen Schwellenwert von 200 Metern überschritten hat. Ist das der Fall, folgen zwei HTTP-Requests hintereinander, einer für Dawarich, einer für PhoneTrack in Nextcloud, samt Aktualisierung der intern gespeicherten Referenzkoordinaten für die nächste Distanzberechnung.

Der eigentliche Kniff steckt in der Steuerung, wie oft dieser Ablauf überhaupt angestoßen wird: Hängt das Telefon am Ladekabel, prüft Tasker alle 30 Sekunden, ob sich die Position um mehr als 200 Meter verändert hat. Ohne Stromanschluss sinkt die Prüffrequenz auf alle 30 Minuten. Dadurch bleibt die Standortauflösung im Auto oder am Schreibtisch fein genug für eine flüssige Route, während der Akku im Alltag nicht durch minütliches GPS-Polling leergesaugt wird, ein Kompromiss, den PhoneTrack-Nutzer aus eigener Erfahrung häufig als größten Stolperstein melden, wenn die Akkulaufzeit unter Dauer-Tracking leidet. Ich übermittele an jedem Punkt folgende Daten an Dawarich:
{
"_type": "location",
"t": "u",
"tid": "mmphone",
"lat": "%gl_latitude",
"lon": "%gl_longitude",
"alt": "%gl_altitude",
"vel": "%gl_speed",
"cog": "%gl_bearing",
"tst": "%gl_time_seconds",
"batt": "%BATT"
}Vorteile gegenüber Google Maps Timeline
Der offensichtliche Unterschied liegt in der Aufbewahrungsdauer: Während Google standardmäßig nur noch drei Monate Historie behält und der Rest ohne rechtzeitigen Export gelöscht wird, bleibt bei Dawarich jeder einzelne Punkt so lange erhalten, wie Speicherplatz auf dem eigenen Server vorhanden ist. Auch die Bindung an ein einzelnes Gerät entfällt, mehrere Smartphones können parallel in dieselbe Instanz einspeisen, ohne dass eine Timeline dafür extra zusammengeführt werden muss.
Ein Tag meiner Reise... (als ich den Artikel "Nie wieder Google Maps" schrieb 😎)
Besonders nützlich finde ich, dass man so auch gleich ein Fahrtenbuch hat, das einem bei angeblichen Geschwindigkeitsverstößen die Möglichkeit gibt, genau nachzusehen, ob dies wirklich der Fall war. Denn jeder Datenpunkt enthält ja auch die Geschwindigkeit und Richtung.
Hinzu kommt die Kontrolle über die Verarbeitung selbst: Die Erkennung besuchter Orte benötigt bei Dawarich einen Reverse-Geocoding-Dienst wie Photon oder Nominatim, der sich komplett selbst hosten lässt, sodass nicht einmal die Umwandlung von Koordinaten in Adressnamen einen externen Dienst kontaktiert. Und weil Dawarich offen für unterschiedliche Tracking-Apps ist, lässt sich die Datenquelle jederzeit wechseln, ohne die gesamte Historie zu verlieren, ein Szenario, das bei einem geschlossenen Ökosystem wie Google Maps schlicht nicht vorgesehen ist.
Fazit
Die Kombination aus Dawarich, Nextcloud (PhoneTrack) und einer akkuschonenden Tasker-Automatisierung ersetzt Google Maps Timeline vollständig und behält dabei die komplette Standorthistorie dauerhaft unter eigener Kontrolle. Der portable Docker-Aufbau ohne Named Volumes macht den Stack zusätzlich unabhängig vom konkreten Server, auf dem er gerade läuft. Wer seine Bewegungsdaten ohnehin nicht Google überlassen möchte, bekommt mit diesem Setup ein funktionsgleiches, aber datensparsames Gegenstück.

