Eintrag

GPS-Tracking, selbst gehostet: Vom Tracker über den VPS zu den Rohdaten

GPS-Tracking, selbst gehostet: Vom Tracker über den VPS zu den Rohdaten

Wer sein Motorrad, den Wohnwagen, ein Boot oder auch nur das Gepäck orten will, landet schnell bei einem der unzähligen China-GPS-Tracker für ein paar Euro — inklusive Hersteller-App und Cloud-Konto. Der Haken ist selten die Hardware, sondern das Kleingedruckte: deine Standortdaten laufen über einen fremden Server, irgendwo, mit unklarer Lebensdauer der App und des Dienstes.

Es geht auch anders. Derselbe billige Tracker kann genauso gut mit deinem eigenen Server sprechen. Dann bleiben die Rohdaten bei dir, ohne Abo und ohne Cloud dazwischen. Dieser Post zeigt die komplette Kette — Tracker → Mobilfunk → dein VPS → die Daten — und was in den empfangenen Daten alles steckt.

Der Tracker: TK913 & die GT06-Familie

Der Klassiker in dieser Preisklasse ist der TK913 — ein handflächengroßer, meist magnetischer GPS-Tracker mit eingebautem Akku und SIM-Karten-Slot. „TK913” ist dabei weniger ein exaktes Modell als ein Sammelbegriff für eine ganze Familie baugleicher Geräte, die intern das GT06-Protokoll (auch „watch” genannt) sprechen. Firmware, Beschriftung und SMS-Befehle variieren von Charge zu Charge.

Ein paar Dinge, die man vor dem Kauf wissen sollte:

  • Mobilfunk: Die günstigen Varianten funken über 2G/GSM — was in einigen Ländern bereits abgeschaltet wird. Es gibt neuere 4G-Ausführungen; auf das Band achten.
  • SIM: Eine Daten-SIM mit aktiviertem mobilen Datenverkehr, PIN aus. Prepaid mit kleinem Datenpaket reicht — Positionen sind winzig.
  • Laden: je nach Generation USB-C (4G-Modelle) oder Micro-USB (ältere 2G-Modelle), immer mit 5 V / 1 A. Kein Schnellladen — das mögen die kleinen Akkus nicht. (Der TK913 lädt über eine echte USB-Buchse; das magnetische Ladekabel gehört zum ähnlich benannten TK911 — nicht verwechseln.)
  • Eingebaute Alarme: Die meisten Geräte melden von sich aus Vibration, Bewegung, Geschwindigkeit, schwachen Akku, Geo-Zaun und SOS — dazu später mehr, denn diese Ereignisse landen später als eigene Datensätze auf dem Server.

Konkret im Einsatz: In diesem Setup steckt ein TKMARS 4G GPS-Tracker4G (also zukunftssicher gegenüber der nahenden 2G-Abschaltung), magnetisch, 1500-mAh-Akku, ohne Abo und per SMS auf einen eigenen Server konfigurierbar. Da 4G-Modelle über USB-C laden, hängt der Tracker dauerhaft über einen kleinen 12 V → 5 V USB-C-Spannungswandler (3 A, auch für 24-V-Bordnetze) an der Fahrzeugelektrik — so ist der Akku nie der limitierende Faktor, und das Gerät funkt zuverlässig rund um die Uhr.

Klon-Lotterie: Manche Firmware-Varianten akzeptieren partout keinen eigenen Server und hängen fest an der Hersteller-Cloud. Vor dem Verlassen auf das Gerät immer testen, ob wirklich Positionen auf deinem Server ankommen. Die exakten Befehle stehen im (oft dürftigen) Handbuch.

SIM & SMS: den Tracker Schritt für Schritt einrichten

Hardware-Tracker dieser Klasse werden per SMS eingerichtet — man schickt Textbefehle an die Nummer der SIM, die im Tracker steckt. Das klingt altmodisch, ist aber in wenigen Minuten erledigt, und der große Vorteil: der Tracker antwortet auf jeden Befehl per SMS — mit „OK” oder dem abgefragten Wert. Man arbeitet die Liste also nicht blind ab, sondern bekommt nach jedem Schritt sofort Rückmeldung.

Ein Wort zur Syntax: Die genauen Befehle sind firmware-abhängig. Die allermeisten GT06-/„watch”- Geräte (auch der hier verwendete 4G-Tracker) nutzen den pw,PASSWORT,…#-Dialekt — das Werkspasswort ist fast immer 123456. Nur wenige ältere Modelle verwenden die Alternativform (z. B. SERVER,1,…# oder apn123456 …); die steht dann im Handbuch. Die folgende Reihenfolge passt für die große Mehrheit:

0. SIM vorbereiten. PIN-Abfrage deaktivieren (einmal ins Handy stecken, PIN aus), mobile Daten freigeschaltet, etwas Guthaben bzw. ein kleines Datenpaket. Format meist Micro- oder Nano-SIM.

1. Deine Handynummer als Admin hinterlegen. Damit nimmt der Tracker Befehle nur von dir an und schickt Alarme an dich:

1
pw,123456,center,+49170XXXXXXX#      # Admin-/SOS-Nummer setzen

2. APN des Providers setzen — ohne den passenden Access Point kommt das Gerät nicht ins Datennetz (APN-Name steht beim Anbieter, z. B. internet.telekom, web.vodafone.de, pinternet.interkom.de):

1
pw,123456,apn,internet.provider#     # ggf. mit Nutzer/Passwort:  pw,123456,apn,<apn>,<user>,<pass>#

3. Deinen Server + Port eintragen — der wichtigste Befehl. Hier zeigt der Tracker auf deine öffentliche IP (oder einen Hostnamen) und den Port des Geräteprotokolls (GT06/„watch” = typischerweise 5093):

1
pw,123456,ip,dein-server.example,5093#   # Alternativform mancher Firmware: SERVER,1,<host>,5093,0#

4. Sende-Intervall festlegen (in Sekunden; kleiner = dichtere Spur, aber mehr Akku/Daten):

1
pw,123456,upload,10#                 # alle 10 s eine Position

5. IMEI abfragen — die eindeutige Geräte-ID, die du gleich auf dem Server brauchst:

1
pw,123456,imei#                      # Antwort-SMS enthält die 15-stellige IMEI

6. Status prüfen. Viele Geräte kennen eine Abfrage, die GPS-Fix, Signal und Server-Verbindung zurückmeldet:

1
pw,123456,status#                    # bzw. check#  —  zeigt Fix / GSM / Server-Status

Die IMEI ist der Fingerabdruck des Geräts: Unter genau dieser 15-stelligen Nummer ordnet der Server die eintreffenden Positionen zu. Du legst das Gerät auf dem Server mit exakt dieser Kennung an — Zahlendreher, und die Punkte laufen ins Leere.

Tipp zur Fehlersuche: Wenn nach dem Server-Befehl nichts ankommt, liegt es fast immer an APN (falscher Zugangspunkt → kein Datennetz) oder an einem geblockten Port in der Firewall. Bevor du an den Befehlen zweifelst: prüfe mit pw,123456,status#, ob der Tracker überhaupt einen GPS-Fix und GSM-Empfang hat.

Die Verbindung: wie der Tracker den Server erreicht

Sobald der Tracker im Datennetz ist, baut er über GPRS/2G eine TCP-Verbindung zu deinem Server auf und schickt seine Positionen im Geräteprotokoll. Keine Cloud, kein Zwischenhändler — das Gerät redet direkt mit deiner IP.

Interessant wird es, weil es zwei Protokoll-Welten gibt, die problemlos nebeneinander laufen:

flowchart LR
  T["🛰️ GPS-Tracker<br/>TK913 / GT06"] -- "2G / GPRS · TCP :5093" --> N["📡 Mobilfunknetz"]
  P["📱 Handy-App<br/>GPSLogger / OsmAnd"] -- "HTTP :5055 · osmand" --> N
  N --> V["🖥️ dein VPS<br/>GPS-Server"]
  V --> DB["🗄️ Datenbank<br/>Positionen + Events"]
  V --> API["🔌 REST-API + Forwarding<br/>eigene Auswertungen"]
  • Hardware-Tracker sprechen ein binäres Protokoll (GT06 & Verwandte) auf einem eigenen TCP-Port. Kompakt, sparsam, ideal für schwachbrüstige 2G-Geräte.
  • Handy-Apps senden simples HTTP (das „osmand”-Protokoll) — eine einzige URL mit den Positionswerten als Parameter. Perfekt zum Testen der Kette, bevor die China-SIM überhaupt im Tracker steckt.

Ein Server kann beides gleichzeitig annehmen — jedes Protokoll hört einfach auf seinem eigenen Port.

Der Server: ein GPS-Server auf dem VPS

Das Stück in der Mitte ist ein selbst gehosteter GPS-Server. Die naheliegende Wahl ist Traccar — Open Source, versteht rund 200 Geräteprotokolle (GT06/„watch” und osmand inklusive) und läuft bequem als Container. Ein minimales Setup aus Traccar plus PostgreSQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
services:
  traccar:
    image: traccar/traccar:6.14.5
    restart: unless-stopped
    environment:
      DATABASE_DRIVER: org.postgresql.Driver
      DATABASE_URL: jdbc:postgresql://postgres:5432/traccar
      DATABASE_USER: traccar
      DATABASE_PASSWORD: ${DB_PASSWORD}
    ports:
      - "127.0.0.1:8082:8082"   # Web-UI + REST-API  ->  NICHT oeffentlich
      - "5055:5055"             # osmand  (Handy-Apps)
      - "5093:5093"             # watch / GT06  (TK913 & Klone)
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: traccar
      POSTGRES_USER: traccar
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Die Portwahl ist bewusst:

Port Wofür Sichtbarkeit
8082 Web-Oberfläche + REST-API nur intern/VPN — hier liegen deine Daten
5055 osmand (HTTP) öffentlich, für Handy-Apps
5093 watch / GT06 öffentlich, für Hardware-Tracker

Docker umgeht die Firewall. Von Docker per ports: veröffentlichte Ports hängen sich an iptables vorbei an ufw. Deshalb die Web-/API-Ebene explizit an 127.0.0.1 (oder ein VPN-Interface) binden — sonst steht deine komplette Standort-Historie offen im Netz. Öffentlich gehört nur der Geräteport, und auch nur der, dessen Geräte du wirklich nutzt.

Welche Daten kommen an

Pro Ortung schickt der Tracker einen kompakten Datensatz. Was genau, hängt vom Gerät ab, aber der gemeinsame Nenner sieht so aus:

Feld Bedeutung
fixTime Zeitpunkt der Ortung (Gerätezeit)
latitude / longitude Koordinaten
speed Geschwindigkeit (im Protokoll meist in Knoten)
course Fahrtrichtung in Grad
altitude Höhe über Meer
valid ob der GPS-Fix gültig ist
sat / hdop Anzahl Satelliten / Genauigkeitsmaß
battery Akkustand des Trackers
alarm Ereignis: vibration, movement, overspeed, lowBattery, geofence, sos

Beim Handy kann man diesen Datensatz sogar mit bloßem Auge lesen — das osmand-Protokoll ist nur ein GET-Request:

1
GET /?id=860123456789012&lat=52.5163&lon=13.3777&timestamp=1753940472&speed=42&bearing=180&altitude=38&batt=76

Beim Hardware-Tracker steckt derselbe Inhalt in einem binären GT06-Rahmen — der Server dekodiert ihn und legt am Ende dieselben Felder in der Datenbank ab. Und die geräteseitigen Alarme (Vibration, Bewegung, Geo-Zaun, SOS …) landen nicht als Position, sondern als eigene Ereignisse — genau die Meldungen, die der Tracker in seiner Werbung als „intelligente Sicherheitsalarme” anpreist.

Was mit den empfangenen Daten möglich ist

Sobald die Rohdaten auf deinem Server liegen, gehört dir die ganze Auswertung. Ein GPS-Server wie Traccar bringt davon vieles schon mit:

  • Live-Position & Verlauf — wo ist das Gerät jetzt, und welche Strecke ist es gefahren.
  • Fahrten & Berichte — aus dem Positionsstrom werden automatisch Fahrten segmentiert, inklusive Distanz, Dauer, Durchschnitts- und Höchstgeschwindigkeit sowie Stopps.
  • Geo-Zäune — Zonen auf der Karte definieren; beim Betreten/Verlassen entsteht ein Ereignis.
  • Alarme & Benachrichtigungen — Overspeed, schwacher Akku, Bewegung, SOS lassen sich per Mail, Web-Push oder Kommando weiterreichen.
  • REST-API & Forwarding — jeder Datenpunkt ist über eine HTTP-API abrufbar, und Positionen wie Events lassen sich per Webhook an eigene Systeme weiterschicken.

Der letzte Punkt ist der eigentliche Gewinn der Eigenhosting-Variante: Die Daten sind kein Selbstzweck in einer fremden App, sondern ein offener Rohstoff. Was du daraus baust — Dashboards, Automationen, Statistiken, Export in andere Werkzeuge — ist völlig dir überlassen. Die Kette endet nicht beim Server, sie beginnt dort.

Kein Gerät zur Hand? Nimm das Handy

Man muss nicht auf die Post mit dem China-Tracker warten, um die Kette zu testen. Eine App wie GPSLogger (Android, aus F-Droid) oder OsmAnd sendet über dieselbe osmand-URL an denselben Server:

1
http://dein-server.example:5055/?id=DEINE-GERAETE-ID&lat=%LAT&lon=%LON&timestamp=%TIME&speed=%SPD&bearing=%DIR&altitude=%ALT&batt=%BATT

Damit steht die komplette Pipeline in fünf Minuten — Positionen erscheinen sofort auf dem Server. Ideal, um Server, Ports und Firewall zu prüfen, bevor die eigentliche Hardware eintrifft.

Fazit: die Datenhoheit bleibt bei dir

Ein billiger Tracker und ein kleiner VPS genügen, um GPS-Tracking komplett in Eigenregie zu betreiben — ohne Hersteller-Cloud, ohne Abo, mit voller Kontrolle über die Rohdaten.

  Hardware-Tracker (TK913) Handy-App Kommerzieller Cloud-Tracker
Datenhoheit dein Server dein Server Anbieter-Cloud
Kosten ~15 € + Daten-SIM 0 € (vorhandenes Handy) Gerät + Abo
Dauerbetrieb Akku / Fahrzeugstrom Akku, App im Vordergrund integriert
Einrichtung SMS-Befehle (einmalig, 5 Min) App + URL (einfach) Plug & Play
Abo nötig nein nein meist ja

Der Hardware-Tracker punktet, wenn das Gerät autark und dauerhaft funken soll (Fahrzeug, Anhänger, Boot). Das Handy ist der schnellste Weg zum Ausprobieren. In beiden Fällen gilt: Die Positionen landen auf deinem Server — und was danach mit ihnen passiert, entscheidest nur du.

Dieser Eintrag ist vom Autor unter CC BY 4.0 lizensiert.