- Add console.log statements at each step - Show error message in status widget - Add coordinate validation - Remove incorrect success/failure logic 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Telegram Location Tracker
Ein n8n-Workflow zur Verfolgung von Standorten über Telegram, ohne Datenbank-Anforderungen.
Überblick
Dieser Workflow ermöglicht es Nutzern, ihre Standorte über einen Telegram-Bot zu teilen. Die Standortdaten werden in einer einfachen JSON-Datei gespeichert und können über eine API abgerufen werden, um sie auf einer Karte anzuzeigen.
Funktionen
- Standort-Erfassung: Empfängt Standorte über Telegram und speichert sie automatisch
- Historien-Verwaltung: Behält die letzten 100 Standorte
- API-Endpunkt: Stellt Standortdaten per REST-API zur Verfügung
- Web-Oberfläche: Interaktive Karte mit Leaflet.js zur Visualisierung (index.html)
- Bestätigungs-Nachrichten: Sendet Bestätigungen mit Koordinaten und Kartenlink
- Keine Datenbank: Verwendet einfache dateibasierte Speicherung
Voraussetzungen
- Eine laufende n8n-Instanz
- Ein Telegram-Bot mit gültigem API-Token
- Schreibrechte für
/tmp/n8n-locations.jsonauf dem n8n-Server
Installation
-
Workflow importieren:
- Öffne deine n8n-Instanz
- Navigiere zu "Workflows" → "Import from File"
- Wähle die
tracker.jsonDatei aus
-
Telegram-Bot konfigurieren:
- Erstelle einen Bot über @BotFather
- Kopiere das API-Token
- In n8n: Gehe zu "Credentials" und füge die Telegram-API-Credentials hinzu
- Weise die Credentials dem "Telegram Trigger" und "Telegram Bestätigung" Node zu
-
Workflow aktivieren:
- Öffne den importierten Workflow
- Klicke auf "Active" um den Workflow zu aktivieren
-
Testen:
- Sende einen Standort an deinen Telegram-Bot
- Du solltest eine Bestätigungsnachricht mit den Koordinaten erhalten
Verwendung
Standort senden
- Öffne den Chat mit deinem Telegram-Bot
- Klicke auf das Büroklammer-Symbol (Anhang)
- Wähle "Standort"
- Sende deinen aktuellen Standort oder wähle einen auf der Karte
- Der Bot bestätigt den empfangenen Standort mit Details
Standorte abrufen
Der Workflow stellt einen API-Endpunkt zur Verfügung:
GET https://deine-n8n-instanz.de/webhook/location
Beispiel-Antwort:
{
"success": true,
"current": {
"latitude": 48.1351,
"longitude": 11.5820,
"timestamp": "2025-11-14T10:30:00.000Z",
"user_id": 123456789,
"first_name": "Max",
"last_name": "Mustermann",
"username": "maxmuster",
"marker_label": "Max Mustermann",
"display_time": "14.11.2025, 11:30:00",
"chat_id": 123456789
},
"history": [...],
"total_points": 42,
"last_updated": "2025-11-14T10:30:00.000Z"
}
Karten-Ansicht
Die Bestätigungsnachricht enthält einen Link zur Karten-Ansicht:
https://web.unixweb.home64.de/tracker/index.html
Web-Oberfläche (index.html)
Das Repository enthält eine vollständige Web-Oberfläche zur Visualisierung der Standortdaten:
Features:
- 📍 Interaktive Karte mit Leaflet.js
- 🔄 Auto-Refresh alle 5 Sekunden (kann umgeschaltet werden)
- 📊 Aktuellster Standort als Marker mit Popup
- 📈 Standort-Historie als blaue Linie
- ℹ️ Status-Info mit Anzahl der Datenpunkte
- 🎯 Automatische Zentrierung auf aktuellen Standort
Verwendung:
- Öffne die
index.htmlin einem Browser - Die Karte lädt automatisch die neuesten Standorte
- Klicke auf Marker für Details (Name, Zeitstempel)
- Schalte Auto-Refresh nach Bedarf um
Konfiguration:
Passe die API-URL in index.html an deine n8n-Instanz an:
// Zeile 85:
const API_URL = 'https://deine-n8n-instanz.de/webhook/location';
Deployment:
- Hoste die
index.htmlauf einem Webserver (Apache, nginx, etc.) - Oder öffne sie direkt als Datei im Browser (für lokale Tests)
- CORS muss in n8n aktiviert sein (ist standardmäßig der Fall)
Workflow-Struktur
Standort-Erfassung (Hauptfluss)
Telegram Trigger
↓
Hat Location? (Filter)
↓
Location verarbeiten (JS: Daten extrahieren)
↓
Lade existierende Daten (Shell: cat JSON-Datei)
↓
Merge mit History (JS: Neue Daten hinzufügen)
↓
Speichere in File (Shell: JSON schreiben)
↓
Telegram Bestätigung (Nachricht an User)
API-Endpunkt
Webhook - Location API
↓
Lade Daten für API (Shell: cat JSON-Datei)
↓
Format API Response (JS: JSON formatieren)
↓
JSON Response (CORS-Header + JSON zurückgeben)
Datenspeicherung
- Speicherort:
/tmp/n8n-locations.json - Format: JSON-Array mit Standort-Objekten
- Maximale Einträge: 100 (älteste werden automatisch entfernt)
- Persistenz: Die Datei überlebt n8n-Neustarts, kann aber bei System-Neustarts verloren gehen (da in
/tmp)
Empfehlung für Produktion
Für produktiven Einsatz sollte der Speicherort von /tmp/n8n-locations.json zu einem persistenten Pfad geändert werden:
// In den Nodes "Lade existierende Daten" und "Lade Daten für API":
cat /var/lib/n8n/locations.json 2>/dev/null || echo '[]'
// In dem Node "Speichere in File":
echo '...' > /var/lib/n8n/locations.json
Anpassungen
Anzahl gespeicherter Standorte ändern
Im Node "Merge mit History" die Zeile ändern:
// Von 100 zu z.B. 500 ändern:
if (locations.length > 500) {
locations = locations.slice(0, 500);
}
Datumsformat ändern
Im Node "Location verarbeiten" das Locale ändern:
// Von 'de-DE' zu z.B. 'en-US' ändern:
const displayTime = new Date(messageDate * 1000).toLocaleString('en-US');
CORS-Beschränkung
Im Node "Webhook - Location API" unter Options → Response Headers:
// Aktuell: Alle Origins erlaubt
"Access-Control-Allow-Origin": "*"
// Besser für Produktion:
"Access-Control-Allow-Origin": "https://deine-domain.de"
Sicherheitshinweise
- Der API-Endpunkt ist öffentlich zugänglich - implementiere ggf. Authentifizierung
- CORS ist für alle Origins geöffnet - beschränke dies in Produktion
- Die Telegram-Bot-Credentials sollten sicher verwahrt werden
- Standortdaten sind sensibel - beachte DSGVO-Anforderungen
Fehlerbehebung
"Standort gespeichert" wird nicht angezeigt
- Prüfe, ob der Workflow aktiv ist
- Prüfe die Telegram-Bot-Credentials
- Schau in die Workflow-Execution-Historie für Fehler
API gibt leere Daten zurück
- Prüfe, ob die Datei
/tmp/n8n-locations.jsonexistiert - Teste den Shell-Befehl:
cat /tmp/n8n-locations.json - Prüfe Dateiberechtigungen (n8n muss lesen können)
Standorte gehen nach Neustart verloren
- Ändere den Speicherort von
/tmp/zu einem persistenten Pfad - Siehe "Empfehlung für Produktion" oben
Lizenz
Dieses Projekt steht zur freien Verfügung.
Support
Bei Fragen oder Problemen, erstelle bitte ein Issue in diesem Repository.