Self-Hosted-Apps zur Standortverfolgung im Vergleich
Dawarich, Traccar, OwnTracks oder Home Assistant: Finden Sie den passenden Tracker für Verlauf oder Live-Standort und halten Sie den Ingest-Endpunkt aus dem offenen Internet.
Welche selbst gehostete App zur Standortverfolgung passt zu Ihrem Anwendungsfall
Bei selbst gehosteter Standortverfolgung ist eine Frage entscheidend: Möchten Sie den Verlauf für sich selbst speichern oder eine Live-Position gemeinsam mit anderen Personen anzeigen? Dawarich ist für den ersten Fall geeignet. Es ist ein selbst gehosteter Ersatz für die Google Maps-Zeitleiste und importiert den bereits vorhandenen Verlauf. Traccar ist für den zweiten Fall gedacht. Die Anwendung wurde für GPS-Hardware und Fahrzeugflotten entwickelt und behandelt ein Smartphone als weiteren Tracker. OwnTracks bildet mit der Smartphone-App und dem Nachrichtenformat die Grundlage für beide Lösungen. Home Assistant kennt den Standort Ihres Smartphones bereits, wenn Sie die Plattform betreiben. Standardmäßig löscht Home Assistant den Verlauf jedoch nach zehn Tagen.
Wählen Sie nach dem aus, was Sie nächsten Monat anzeigen möchten:
- Eine Karte mit allen Orten, an denen Sie im vergangenen März waren, einschließlich Orten und Fahrten: Dawarich.
- Eine Live-Karte mehrerer Geräte mit Geofences und Ereignisregeln: Traccar.
- Ein Smartphone, das seinen Standort an eine bereits von Ihnen betriebene Anwendung sendet: OwnTracks im HTTP-Modus.
- Automatisierungen für Zuhause und Abwesenheit ohne Interesse an einem Verlauf: Home Assistant allein.
Für die HTTP-Übertragung muss das Smartphone einen von Ihnen kontrollierten HTTPS-Endpunkt erreichen. Deshalb wird die Serverseite weiter unten in einem eigenen Abschnitt behandelt. Wenn Sie noch klären, was außerdem auf den Server gehört, zeigt die erweiterte Liste der sinnvollen Self-Hosting-Anwendungen in diesem Jahr, an welcher Stelle ein Tracker neben den anderen Anwendungen einzuordnen ist.
Traccar: GPS-Hardware, Flotten und Live-Position
Traccar ist ein Tracking-Server. Er spricht die Protokolle dedizierter GPS-Tracker, jeweils auf einem eigenen Port. In der aktuellen Protokollliste sind diese Ports von 5001 bis 5267 nummeriert. Die Docker-Anleitung von Traccar veröffentlicht für TCP und UDP den gesamten Bereich von 5000 bis 5300. Dieselbe Anleitung weist darauf hin, dass jeder veröffentlichte Port einen eigenen docker-proxy-Prozess startet, der viel Speicher benötigt. Daher ist es ressourcenschonender, nur die von Ihren Geräten verwendeten Ports zu veröffentlichen oder den Userland-Proxy von Docker zu deaktivieren, damit stattdessen iptables-NAT verwendet wird. Zusätzlich bietet Traccar eine Live-Karte, Geofences, Ereignisregeln und Berichte. Die Weboberfläche lauscht standardmäßig auf Port 8082.
Für Smartphones gibt es die Traccar-Client-App für Android und iOS. Sie überträgt Daten über das OsmAnd-Protokoll, das standardmäßig auf Port 5055 lauscht. Die Einstellungen bestimmen die Akkulaufzeit und die Anzahl der Datensätze. Distance fordert während der Bewegung alle N Meter eine Aktualisierung an. Interval aktiviert eine zeitbasierte Übertragung, wenn die Distanz 0 ist. Das funktioniert nur unter Android. Eine zeitbasierte Übertragung wird außerdem aktiviert, wenn die Genauigkeit auf höchstgenau eingestellt ist. Angle löst bei einer Änderung der Bewegungsrichtung eine Aktualisierung aus, angegeben in Grad, wenn die Genauigkeit auf höchstgenau eingestellt ist. Stationary Heartbeat legt fest, was geschieht, wenn sich das Gerät nicht bewegt. Die eigene Dokumentation von Traccar weist darauf hin, dass für keine dieser Einstellungen ein genaues Ergebnis garantiert werden kann, weil das Smartphone die Entscheidung trifft.
Traccar wird mit einer eingebetteten H2-Datenbank ausgeliefert, sodass das Installationsprogramm ohne Einrichtung funktioniert. Das Projekt empfiehlt H2 nicht für den Produktivbetrieb. Die Dokumentation beschreibt MySQL, MariaDB und PostgreSQL als Ersatz. Für große Installationen wird TimescaleDB empfohlen, eine auf PostgreSQL basierende Zeitreihendatenbank. Verschieben Sie die Datenbank, bevor sich Verlaufsdaten ansammeln. Wenn Sie diesen Verlauf später behalten wollen, müssen Sie die vorhandenen Daten in die Ersatzdatenbank migrieren.
Wo Traccar weniger geeignet ist: Es dient zur aktuellen Überwachung. Die Berichte enthalten Flottenberichte, Fahrten, Stopps und Zusammenfassungen. Ein Jahr eigener Wochenenden erscheint daher eher als Abfrageergebnis denn als Zeitachse.
OwnTracks: Smartphone-App, Recorder und Frontend
OwnTracks ist die klassische Minimalvariante. Die App veröffentlicht jedes Mal eine kleine JSON-Nutzlast, wenn sie feststellt, dass sich das Gerät bewegt hat. Die Übertragung kann über MQTT (Message Queuing Telemetry Transport) oder über einfaches HTTP erfolgen. Im HTTP-Modus hat der Endpunkt die Form http[s]://[user[:password]@]host[:port]/path und wird mit HTTP Basic authentifiziert. Das Projekt empfiehlt ausdrücklich das Schema https://. Für den OwnTracks Recorder lautet der Pfad /pub.
Der Überwachungsmodus ist wichtiger als jede Servereinstellung. Quiet veröffentlicht nur, wenn Sie dies anfordern. Manual ergänzt die Überwachung von Regionen und eine energiesparende Standortabfrage. Significant ist der normale automatische Modus. Unter iOS veröffentlicht Move, sobald das Gerät locatorDisplacement Meter zurückgelegt hat oder locatorInterval Sekunden vergangen sind, je nachdem, was zuerst eintritt. Die Standardwerte sind 100 Meter und 300 Sekunden. Unter Android fordert Move standardmäßig alle 10 Sekunden eine Standortbestimmung an. Laut OwnTracks verbraucht der Modus Move ähnlich viel Akku wie eine Navigations-App. OwnTracks empfiehlt ihn daher für eine Fahrt oder während des Ladevorgangs und nicht als alltägliche Einstellung.
Der OwnTracks Recorder speichert die eingehenden Daten und stellt eine kleine Karte bereit. Das separate OwnTracks Frontend ergänzt eine umfangreichere Weboberfläche mit Heatmap, Filterung nach Datumsbereich und einer als Punkte oder Linien dargestellten Historie. Viele installieren den Recorder überhaupt nicht, weil die Nutzlast identisch ist, unabhängig davon, ob die App auf den Recorder, auf Dawarich oder auf Home Assistant zeigt. Genau deshalb beginnen wir hier: Die App ist ein stabiler, unauffälliger Produzent, und Sie können den Empfänger später jederzeit ändern.
Dawarich: eine selbst gehostete Google-Maps-Timeline
Dawarich steht unter der AGPL-3.0 und wird über eine Docker-Compose-Datei betrieben. Die aktuelle Standardinstallation besteht aus drei Containern: der Rails-Anwendung mit darin ausgeführten Sidekiq-Hintergrundjobs, PostgreSQL und Redis. Die Anwendung stellt Port 3000 bereit. Zu den Importquellen gehören Google Maps Timeline, OwnTracks, Strava, Immich, GPX- und GeoJSON-Dateien sowie die EXIF-Daten Ihrer Fotos. Diese Importliste macht Dawarich zu einer Timeline und nicht zu einer Live-Karte, weil die Anwendung auch Verlaufsdaten übernehmen kann, die vor der Einrichtung des Servers entstanden sind.
Der Import erfolgt über einen HTTP-Endpunkt, der einen API-Schlüssel von Ihrer Kontoseite verwendet. OwnTracks sendet an /api/v1/owntracks/points?api_key=..., und Overland sendet an /api/v1/overland/batches?api_key=.... GPSLogger verwendet denselben OwnTracks-Endpunkt.
Beachten Sie, wohin dieser Schlüssel übertragen wird. Er steht in der Query-Zeichenfolge. Das Standard-Logformat von nginx schreibt die vollständige Anforderungszeile. Dadurch landet der Schlüssel bei jedem einzelnen Standortpunkt im Klartext in /var/log/nginx/access.log. Behandeln Sie dieses Log als vertrauliche Information. Rotieren Sie den Schlüssel, wenn Sie Logs an eine zentrale Stelle übertragen. Fügen Sie niemals eine funktionierende URL in einen Support-Thread ein.
Für die Compose-Datei selbst, die Volumes und die Restart-Richtlinie verwenden Sie die Container-Grundlagen zum Ausführen von Compose auf einem VPS. Diese Seite behandelt nur die Entscheidung.
Home Assistant: gut für Anwesenheit, ungeeignet für Verlaufsdaten
Wenn Sie Home Assistant bereits betreiben, ist die Geräteverfolgung bereits vorhanden. Die Companion App meldet die Position, und die OwnTracks-Integration stellt eine Webhook-URL sowie einen Verschlüsselungsschlüssel bereit, den Sie in die App eintragen. Wenn MQTT konfiguriert ist, empfängt diese Integration MQTT-Nachrichten statt HTTP.
Die Einschränkung ist die Aufbewahrungsdauer. Der Recorder von Home Assistant speichert standardmäßig purge_keep_days: 10, und die automatische Bereinigung läuft jede Nacht um 04:12 Ortszeit, damit die Datenbank nicht unbegrenzt wächst. Dieser Standard ist für eine Datenbank zur Hausautomation richtig, aber für ein Standortarchiv ungeeignet. Home Assistant beantwortet die Frage „Ist jemand zu Hause?“. Für die Frage „Wo war ich am 14. März?“ müssen Sie den Verlauf speichern, bevor er gelöscht wird: Erhöhen Sie purge_keep_days, deaktivieren Sie auto_purge oder senden Sie denselben Datenstrom an ein System, das ihn aufbewahrt. Ein längerer Verlauf vergrößert die Recorder-Datenbank. Wenn Sie auto_purge deaktivieren, empfiehlt die Dokumentation, regelmäßige recorder.purge-Aufrufe selbst zu planen.
Dauerhafte Verfolgung oder gelegentliches Teilen?
Dauerhafte Verfolgung bedeutet, dass die App den ganzen Tag Daten veröffentlicht, unabhängig davon, ob Sie sich bewegen oder nicht. Das von ihr aufgebaute Archiv ist der eigentliche Zweck. Beim gelegentlichen Teilen beobachten sich die Beteiligten während einer Fahrt gegenseitig. Das Archiv entsteht dabei nur als nicht angeforderter Nebeneffekt. Dieselbe Software kann für beide Szenarien verwendet werden, jeweils mit anderen Einstellungen.
Für die dauerhafte Verfolgung sollten Sie eine positionsbasierte Übertragung gegenüber einem kurzen Zeitintervall bevorzugen. Speichern Sie die Datenbank auf einem Speicher, den Sie tatsächlich sichern. Legen Sie die Aufbewahrungsdauer am ersten Tag fest und nicht erst, wenn der Datenträger voll ist. Beim gelegentlichen Teilen erhöhen Sie die Übertragungsrate nur für den Zeitraum, in dem sie benötigt wird. Versetzen Sie das Telefon danach wieder in einen Energiesparmodus. OwnTracks bietet dafür eine Einstellung in der App. Traccar Client ermöglicht dasselbe über die Felder für Entfernung und Intervall.
Wenn Sie für eine einzelne Fahrt einen Freigabelink benötigen, der zwei Stunden gültig ist, prüfen Sie die Versionshinweise des ausgewählten Servers, bevor Sie sich festlegen. Traccar stellt temporäre Freigabelinks für Geräte bereit. Dawarich bietet Freigabelinks für den aktuellen Standort mit optionaler Passphrase, einem Ablaufdatum und sofortiger Widerrufsmöglichkeit.
Benötigen Sie überhaupt einen MQTT-Broker?
Beginnen Sie ohne Broker. Der HTTP-Modus benötigt eine URL, ein Passwort und TLS (Transport Layer Security). Jeder oben genannte Server unterstützt diesen Modus. Ein Broker lohnt sich, wenn mehrere Komponenten gleichzeitig denselben Datenstrom benötigen. Beispielsweise kann Home Assistant auf eine Zone reagieren, während ein Recorder den Verlauf speichert, oder Familienmitglieder können sich gegenseitig sehen.
MQTT ist ein Publish-Subscribe-Protokoll. Mosquitto ist der übliche Broker. Sein Standard-Listener verwendet Port 1883 im Klartext. Konfigurieren Sie einen TLS-Listener auf Port 8883 und veröffentlichen Sie ausschließlich diesen Listener. Die Zugriffskontrolle erfolgt pro Topic. Dadurch kann ein Konto zum Veröffentlichen auf owntracks/alice/phone berechtigt werden, ohne Leserechte auf andere Topics zu erhalten. Das ist das entscheidende Argument für MQTT in einer Familienumgebung: Der Broker erzwingt auf Anwendungsebene, wer wen sieht. Ein Fehler in einer Anwendung kann diese Einschränkung dadurch nicht erweitern.
Der Nachteil ist ein zusätzlicher Dienst mit eigenem Zertifikat, eigener Benutzerliste und eigenem Fehlerverhalten. Wenn ein Broker keine Verbindungen mehr akzeptiert, wirkt das genauso wie ein Telefon ohne Empfang. Keines von beiden informiert Sie darüber.
Wie viele Positionszeilen erzeugt ein Telefon?
Die folgenden Zahlen sind Berechnungen, keine Messwerte. Sie setzen ein festes Berichtsintervall, eine Zeile pro Bericht und keine weiteren Einträge voraus.
Die Daten hinter diesem Diagramm
[
{
"label": "Every 30 seconds",
"points_30d": "86,400",
"points_365d": "1,051,200"
},
{
"label": "Every 60 seconds",
"points_30d": "43,200",
"points_365d": "525,600"
},
{
"label": "Every 5 minutes",
"points_30d": "8,640",
"points_365d": "105,120"
},
{
"label": "Every 15 minutes",
"points_30d": "2,880",
"points_365d": "35,040"
}
]Ein Telefon, das einmal pro Minute meldet, schreibt 43,200 Zeilen pro Monat und 525,600 Zeilen pro Jahr. Erhöhen Sie das Intervall auf fünfzehn Minuten, sinkt der Jahreswert auf 35,040 Zeilen. Echte Anwendungen verhalten sich unregelmäßiger, weil sie sowohl bei Ortsveränderungen als auch nach Zeitintervallen melden und bei stillliegendem Telefon keine Meldungen senden. Betrachten Sie die Werte daher als Beispiele für ein festes Intervall und nicht als Prognose.
Eine halbe Million Zeilen pro Jahr ist für PostgreSQL wenig. Die erste spürbare Belastung entsteht beim Darstellen: Eine Karte, die ein Jahr Positionsdaten in voller Auflösung rendern soll, lässt den Browser lange vor der Datenbank stocken. Deshalb fassen diese Anwendungen den Verlauf zu Fahrten und Orten zusammen. Messen Sie die tatsächliche Anzahl auf Ihrem eigenen Server, statt einer Zahl aus einem Blogbeitrag zu vertrauen:
SELECT pg_size_pretty(pg_total_relation_size('tc_positions'));Das ist die Positionstabelle von Traccar in PostgreSQL. Führen Sie nach einem Monat normaler Nutzung die entsprechende Abfrage für den von Ihnen gewählten Server aus und multiplizieren Sie das Ergebnis mit zwölf. Home Assistant löscht alte Verlaufsdaten standardmäßig automatisch. Legen Sie eine Aufbewahrungsregel fest, solange die Tabelle noch klein ist, und stellen Sie sicher, dass das Backup die Datenbank und nicht nur die Konfiguration umfasst, weil sich ein Standortverlauf aus keinen anderen Daten rekonstruieren lässt.
Die Akkulaufzeit wird vom Telefon bestimmt, nicht vom Server
Daran ändert Self-Hosting nichts. Das Betriebssystem entscheidet, wann das GPS aktiviert wird, wie lange eine Hintergrundanwendung ausgeführt werden darf und ob sie die Nacht über aktiv bleibt. Android schränkt Hintergrundaktivitäten aggressiv ein. iOS liefert erhebliche Standortänderungen statt einer kontinuierlichen Positionsübermittlung. Der Server hat darauf keinen Einfluss. Ein kürzeres Übermittlungsintervall in der App ist daher nur eine Anforderung. Wie das Telefon darauf reagiert, entscheidet es selbst.
Was Sie auf dem Telefon steuern können: Erteilen Sie der App dauerhaft die Berechtigung für den Standortzugriff im Hintergrund. Nehmen Sie die Tracking-App von der Akkuoptimierung aus. Passen Sie den Übermittlungsmodus an den jeweiligen Tag an. Wenn der Bewegungsmodus die ganze Woche aktiv ist, ist der Akku häufig schon am Nachmittag um vier Uhr leer.
Auf dem Server zeigt sich das durch einen Block von Datensätzen mit alten Zeitstempeln. OwnTracks und Traccar Client halten Positionsdaten bei fehlender Netzwerkverbindung vor, wenn die Offline-Pufferung aktiviert ist, und übertragen sie, sobald die Verbindung wieder verfügbar ist. Deshalb unterscheiden sich der Schreibzeitpunkt und der Zeitpunkt der Positionsbestimmung. Wenn Ihre Karte eine gerade Linie durch eine Stadt zeichnet, fehlen Positionsbestimmungen. Die Linie stellt keine Straße dar.
Die Serverseite: TLS und ein authentifizierter Ingest-Pfad
Das Telefon benötigt einen Hostnamen, den es auflösen kann, und ein Zertifikat, dem es vertraut. Ein selbstsigniertes Zertifikat ist der häufigste Grund dafür, dass eine frische Installation überhaupt nichts empfängt: Die App bricht den TLS-Handshake ab und beendet den Verbindungsversuch. Das Server-Log bleibt leer, weil die Anfrage nie abgeschlossen wurde. Ein leeres Log sieht wie ein Problem des Telefons aus, ist aber keines.
Es gibt zwei saubere Möglichkeiten. Terminieren Sie TLS in nginx mit einem echten Zertifikat, also mit einem Let's-Encrypt-Zertifikat vor nginx, und öffnen Sie die Ports 80 und 443. Port 80 muss erreichbar bleiben, weil das certbot-nginx-Plugin die Domain mit der HTTP-01-Challenge überprüft. Let's Encrypt führt diese Prüfung nur auf Port 80 durch. Leiten Sie Port 80 daher auf HTTPS um, statt ihn zu schließen. Nur mit der DNS-01- oder TLS-ALPN-01-Challenge können Sie ausschließlich Port 443 verwenden. Oder veröffentlichen Sie überhaupt keinen eingehenden Port mit einem Cloudflare Tunnel, sodass auf der öffentlichen IP nichts lauscht. Das passt zu Dawarich und OwnTracks, weil deren Ingest gewöhnliches HTTP verwendet.
Für die Tunnel-Variante gibt es eine Einschränkung. Das OsmAnd-Protokoll von Traccar verwendet HTTP. Ein Telefon-Client kann daher problemlos einen Reverse Proxy oder einen Tunnel durchlaufen. Die Binärprotokolle dedizierter GPS-Hardware verwenden hingegen rohes TCP oder UDP auf eigenen Ports. Dafür benötigen Sie einen tatsächlich geöffneten Port. Öffnen Sie ihn in der Firewall des VPS und in der separaten Netzwerk-Firewall Ihres Providers. Bei den meisten Hosts wird diese über ein anderes Control Panel verwaltet.
Sobald der Endpunkt antwortet, prüfen Sie den Pfad mit einer einzelnen Anfrage, statt anhand der App zu raten:
curl -si -u alice:secret -H 'Content-Type: application/json' \
-d '{"_type":"location","lat":51.5,"lon":-0.12,"tst":1788480000}' \
https://track.example.com/pub | head -1Ein funktionierender Endpunkt antwortet mit einem 2xx-Status. Ein 401 bedeutet, dass der Server die Zugangsdaten abgelehnt oder sie überhaupt nicht empfangen hat. Der Transport funktioniert dann. Wenn curl vor jeder Statuszeile einen Fehler meldet, prüfen Sie dessen Fehlermeldung: DNS, eine abgelehnte Verbindung, ein Timeout und ein TLS-Fehler sind unterschiedliche Probleme. Beheben Sie das gemeldete Problem, bevor Sie die App untersuchen.
Ein offener Ingest-Endpunkt gibt Ihren Standort preis
Eine nicht authentifizierte Ingest-URL verrät Ihre Position jedem, der sie findet. Und solche URLs werden gefunden.
- Jeder, der die URL besitzt, kann Punkte in Ihre Historie schreiben. Falsche Punkte sind schwer zu erkennen und aufwendig zu entfernen.
- Eine URL ist kein Geheimnis. Sie steht in den App-Einstellungen des Telefons, im Access-Log Ihres Reverse Proxy, im Browserverlauf, wenn Sie sie jemals in einem Tab getestet haben, und in jedem Screenshot, den Sie einer Supportanfrage beifügen.
- Eine ungeschützte Lese-API wie
/api/0/lastvon OwnTracks Recorder gibt Ihre letzte Position an jeden weiter, der sie abfragt. - Der Hostname ist unabhängig von Ihrem Vorgehen öffentlich. Ein neu ausgestelltes Zertifikat erscheint innerhalb weniger Minuten in Certificate-Transparency-Logs. Daher bleibt auch eine nie veröffentlichte Adresse auffindbar.
Verwenden Sie für OwnTracks HTTP Basic über TLS, den API-Schlüssel für Dawarich und das Kontomodell von Traccar mit einer eindeutigen Gerätekennung. Sichern Sie die Administrationsoberfläche mit derselben Authentifizierung wie den Ingest-Pfad ab, da dort die gesamte Route lesbar ist. Prüfen Sie anschließend, wer nach der ersten Woche angeklopft hat:
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20In dieser Liste sollten die mobilen IP-Adressen Ihres Telefons überwiegen. Alles andere mit einer hohen Anzahl verdient eine Prüfung. Eine Rate-Limit-Regel für den Ingest-Endpunkt in nginx kostet nichts.
Ein Tracker kann außerdem unbemerkt ausfallen. Der Container stoppt, das Telefon puffert weiter, und Sie bemerken den Ausfall erst Wochen später, wenn eine Fahrt fehlt. Richten Sie einen Container-Healthcheck oder ein systemd OnFailure= auf Ihren eigenen ntfy-Server aus, damit Sie die Stille auf demselben Telefon erreicht, das die Daten meldet.
Wer den Verlauf sonst sehen kann und wie dies durchgesetzt wird
Traccar erzwingt den Zugriff über Benutzer- und Geräteberechtigungen: Ein Konto sieht die Geräte, die ihm ein Administrator zugewiesen hat, und die API verwendet eine Sitzung oder ein Token. OwnTracks über MQTT setzt die Zugriffskontrolle im Broker mit Topic-ACLs durch. Das ist die stärkste dieser Varianten, weil ein Konto, das ein Topic nicht abonnieren darf, es unabhängig von der jeweiligen Anwendung nicht lesen kann. OwnTracks über HTTP verfügt über keine vergleichbare Ebene. Damit bestimmt ausschließlich die Komponente hinter dem Endpunkt die Zugriffskontrolle. Dawarich unterstützt außerdem das Teilen des Live-Standorts innerhalb der Familie. Jedes Mitglied steuert dabei die eigene Freigabe.
Familientracking ist nicht nur eine technische, sondern auch eine Einwilligungsfrage. Jede Person, deren Telefon Daten veröffentlicht, sollte wissen, dass es Daten veröffentlicht, und wie sich dies beenden lässt. Ein Tracker, den eine Person nicht deaktivieren kann, ist keine Familienfunktion.
Was Self-Hosting nicht behebt
- Das Betriebssystem des Telefons entscheidet, wann das GPS aktiviert wird. Der Akkuverbrauch und Lücken in der Aufzeichnung sind daher größtenteils darauf zurückzuführen und nicht auf Ihren Server.
- Google hat geändert, wie Timeline-Daten exportiert werden. Lesen Sie vor der Planung einer Migration die aktuelle Importdokumentation von Dawarich, weil die Datei, die Google Ihnen heute bereitstellt, nicht dieselbe ist, die vor zwei Jahren importiert wurde.
- Ihr Endpunkt sieht bei jeder Anfrage Ihre mobile IP-Adresse. Das gilt auch für jedes Netzwerk dazwischen. Self-Hosting ändert, wer diesen Datensatz speichert. Es entfernt den Datensatz nicht.
- Ein Standortverlauf ist nicht ersetzbar. Sichern Sie die Datenbank, stellen Sie sie einmal wieder her, um die Funktionsfähigkeit des Backups zu prüfen, und bewahren Sie die Kopie verschlüsselt auf, weil sie die sensibelste Datei auf dem Server ist.
FAQ
Welche selbst gehostete Anwendung ersetzt Google Maps Timeline?
Dawarich. Die Anwendung ist als selbst hostbare Alternative zu Google Timeline konzipiert. Sie importiert einen Google-Maps-Timeline-Export sowie Daten aus OwnTracks, Strava, Immich, GPX und GeoJSON und liest Foto-EXIF-Daten ein. Die Historie wird als Orte und Fahrten dargestellt, nicht als Live-Karte. Traccar kann dieselben Punkte speichern, seine Oberfläche ist jedoch eine Flottenkonsole und seine Berichte sind Flottenberichte. Prüfen Sie vor der Migrationsplanung die Importdokumentation von Dawarich auf das erwartete Exportformat, da Google das Exportformat geändert hat.
Kann ich OwnTracks ohne einen MQTT-Broker verwenden?
Ja. Stellen Sie die Anwendung auf den HTTP-Modus ein und geben Sie ihr eine URL im Format http[s]://[user[:password]@]host[:port]/path. Für den OwnTracks Recorder lautet sie /pub. Die Anwendung sendet dieselbe JSON-Nutzlast, authentifiziert mit HTTP Basic. OwnTracks empfiehlt ausdrücklich das Schema https://. Fügen Sie später einen Broker hinzu, wenn zwei Dienste denselben Datenstrom gleichzeitig benötigen oder wenn Sie eine Zugriffskontrolle pro Topic benötigen, sodass der Broker entscheidet, wer welche Daten sehen darf.
Wie viel Speicher benötigt ein Jahr Standortverlauf?
Planen Sie anhand der Zeilenanzahl und nicht anhand von Gigabytes. Eine Meldung pro Minute ergibt 525,600 Zeilen pro Jahr und Telefon. Eine Meldung alle fünfzehn Minuten ergibt 35,040 Zeilen. Beides ist für PostgreSQL eine geringe Datenmenge. Die praktische Grenze entsteht beim Browser, der ein Jahr Standortdaten auf einer Karte darstellen muss. Deshalb aggregieren diese Anwendungen die Daten. Messen Sie nach einem Monat die Größe Ihrer eigenen Tabelle mit pg_total_relation_size und multiplizieren Sie den Wert mit zwölf.
Warum weist mein Standortverlauf Lücken auf?
Das Betriebssystem des Telefons entscheidet, wann das GPS aktiviert und wann eine Hintergrundanwendung beendet wird. Die meisten Lücken entstehen deshalb an dieser Stelle. Erteilen Sie der Anwendung dauerhaft die Berechtigung für den Standortzugriff im Hintergrund. Nehmen Sie sie außerdem von der Akkuoptimierung aus und prüfen Sie den Meldemodus. In OwnTracks für iOS veröffentlicht der Bewegungsmodus alle locatorDisplacement Meter oder locatorInterval Sekunden einen Standort. Standardmäßig sind dies 100 Meter und 300 Sekunden. Unter Android wird standardmäßig alle 10 Sekunden eine Standortbestimmung angefordert. In beiden Fällen verbraucht die Anwendung ähnlich viel Akku wie eine Navigationsanwendung. Wenn Zeilen verspätet in einer Gruppe eintreffen und alte Zeitstempel enthalten, wird der Offline-Puffer geleert. Die Standortbestimmungen wurden dann erfasst, aber erst später hochgeladen.
Reicht eine geheime URL aus, um einen Standort-Endpunkt zu schützen?
Nein. Ein nicht authentifizierter Ingest-Endpunkt ermöglicht jedem, der die URL kennt, das Schreiben falscher Standortdaten in Ihre Historie. Eine URL ist außerdem kein Geheimnis. Sie steht in den Anwendungseinstellungen, im Access-Log Ihres Reverse Proxy, im Browserverlauf und in jedem Screenshot, den Sie teilen. Der Hostname ist unabhängig davon auffindbar, weil ein neues Zertifikat kurz nach der Ausstellung in Certificate-Transparency-Logs erscheint. Verwenden Sie HTTP Basic über TLS oder einen API-Key. Begrenzen Sie die Rate für den Ingest-Pfad und schützen Sie die Administrationsoberfläche mit derselben Authentifizierung.