Wenn ich mit dem Fahrrad unterwegs bin, möchte ich mich selbst tracken, um Freunden in Echtzeit meinen Standort zeigen zu können. So kann ich sagen: „Hey, schau mal, das ist mein Live-Standort – hier bin ich gerade.“
Unter https://gps.welizia.ch befindet sich eine Karte mit einem Seitenbereich, in dem alle getrackten Benutzer aufgelistet sind. Die Positionen werden alle 5 Sekunden automatisch aktualisiert.
Mit dem App GPSLogger ist es möglich seinen Standort an den Server zu senden.
Ich habe auf meinem Proxmox-Server einen Container (CT) erstellt. Die Standardkonfiguration reicht dafür vollkommen aus – der Container muss nicht besonders leistungsstark sein.
Über meinen internen NGINX-Reverse-Proxy habe ich die Subdomain gps.welizia.ch
eingerichtet und mit einem Let's Encrypt-Zertifikat abgesichert. Diese zeigt intern auf den entsprechenden Server.
Erforderliche Pakete Installieren und MariaDB konfigurieren
(Bis auf die erste Frage alles mit JA bestätigen)
apt-get update
apt-get upgrade
apt-get install nginx php php-fpm php-mysql unzip mariadb-server
mysql_secure_installation
Bei einem Proxmox CT noch Region und Zeit Konfigurieren
Zeigt die aktuelle Zeit Einstellung an
timedatectl
Zeit Einstellen
dpkg-reconfigure locales
dpkg-reconfigure tzdata
Setze einen symbolischen Link mit:
# ls -l /etc/localtime
MariaDB Server einrichten
(Da können wir schon mal unser Passwort eintragen für den Benutzer gpuser)
mysql -u root -p
CREATE DATABASE gpsdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'gpsuser'@'localhost' IDENTIFIED BY '5U3fxpQV56';
CREATE USER 'gpsuser'@'127.0.0.1' IDENTIFIED BY '5U3fxpQV56';
GRANT ALL PRIVILEGES ON gpsdb.* TO 'gpsuser'@'localhost';
GRANT ALL PRIVILEGES ON gpsdb.* TO 'gpsuser'@'127.0.0.1';
FLUSH PRIVILEGES;
EXIT;
NGINX vhost konfigurieren
nano /etc/nginx/sites-available/gps-backend.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
access_log /var/log/nginx/gps_access.log;
error_log /var/log/nginx/gps_error.log;
# Haupt-Routing mit Clean-URL Unterst tzung
location / {
try_files $uri $uri/ $uri.php?$args =404;
}
# F r API-Aufrufe wie /api/logger ^f^r /api/logger.php
location ~ ^/api/.*$ {
try_files $uri $uri.php =404;
}
# PHP-Dateien behandeln
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
# Wichtige Header vom Reverse Proxy bernehmen
fastcgi_param REMOTE_ADDR $http_x_real_ip;
fastcgi_param HTTP_X_FORWARDED_FOR $proxy_add_x_forwarded_for;
}
# .ht-Dateien blockieren
location ~ /\.ht {
deny all;
}
}
Die vhost aktivieren und NGINX neu starten
ln -s /etc/nginx/sites-available/gps-backend.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Webserver Verzeichnis säubern
rm -R /var/www/html/*
Zip herunterladen
Aktualisiert am 10.06.2025 - 18:00 Uhr
Oder gleich in der Konsole
cd /root
https://wiki.welizia.ch/gps_tracking.zip
Zip entpacken
unzip gps_tracking.zip -d /var/www/html/
Berechtigungen setzen
chown -R www-data:www-data /var/www/html/
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Die Verzeichnisstruktur sollte dann so aussehen
/var/www/html/:
total 232
drwxr-xr-x 2 www-data www-data 4096 Jun 9 19:12 api
-rw-r--r-- 1 www-data www-data 261 Jun 9 12:42 config.php
-rw-r--r-- 1 www-data www-data 181408 Jun 9 19:21 favicon.ico
-rw-r--r-- 1 www-data www-data 785 Jun 9 12:33 gps_tracking_schema.sql
-rw-r--r-- 1 www-data www-data 9413 Jun 9 19:48 index.php
-rw-r--r-- 1 www-data www-data 1187 Jun 9 19:53 login.php
-rw-r--r-- 1 www-data www-data 1185 Jun 9 19:24 member.php
-rw-r--r-- 1 www-data www-data 739 Jun 9 16:18 profile.php
-rw-r--r-- 1 www-data www-data 1383 Jun 9 12:43 receive.php
-rw-r--r-- 1 www-data www-data 583 Jun 9 13:35 register.php
-rw-r--r-- 1 www-data www-data 4590 Jun 9 19:54 styles.css
/var/www/html/api:
total 32
-rw-r--r-- 1 www-data www-data 1606 Jun 9 16:52 logger.php
-rw-r--r-- 1 www-data www-data 675 Jun 9 13:13 login.php
-rw-r--r-- 1 www-data www-data 70 Jun 9 13:14 logout.php
-rw-r--r-- 1 www-data www-data 231 Jun 9 13:14 member.php
-rw-r--r-- 1 www-data www-data 685 Jun 9 18:18 member_positions.php
-rw-r--r-- 1 www-data www-data 1178 Jun 9 13:14 profile.php
-rw-r--r-- 1 www-data www-data 1043 Jun 9 15:44 register.php
-rw-r--r-- 1 www-data www-data 382 Jun 9 19:12 track.php
Nun sollte der GPS Tracking Server verfügbar sein unter http://DEINE.IP.DES.SERVER
Wenn der Server über einen NGINX Reverse Proxy erreichbar sein soll, wär der folgende vhost Eintrag zu konfigurieren.
server {
listen 80;
server_name gps.welizia.ch;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
try_files $uri =404;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name gps.welizia.ch;
ssl_certificate /etc/letsencrypt/live/welizia.ch/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/welizia.ch/privkey.pem;
proxy_redirect off;
location / {
proxy_read_timeout 60s;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_set_header Host $host;
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 $scheme;
proxy_pass http://192.168.1.123;
}
}
Mit dem Admin ist es möglich die Datenbank zu Verwalten.
1. Registriere über die Seite ein Admin Account.
2. Setze die Gruppe admin auf deinen admin benutzer
mysql -u gpsuser -p gpsdb -e "UPDATE users SET role='admin' WHERE username='admin';"
3. Nun unter https://gps.welizia.ch/admin.php mit dem Benutzer einloggen.
Der benutze GPS-Logger ist nicht von Google Play sondern eine unabhängige Open Source App somit auch keine Werbung oder solches.
Das Projekt stammt von https://github.com/mendhak/gpslogger und kann entweder direkt Installiert werden oder über F-Droid https://f-droid.org/packages/com.mendhak.gpslogger/.
Folgende Konfigurationen müssen gesetzt werden.
Beim ersten öffnen der App, erlauben dass das App auch im Hintergrund laufen darf.
Damit Android nicht automatisch den Energiesparmodus aktiviert und somit die Verbindung getrennt wird, muss Automatische Verwaltung ausgeschalten werden.
Einstellungen / Apps / Apps verwalten / GPSLogger / Details zum Stromverbrauch / Starteinstellungen
Automatisch verwalten: AUS
Oben Links Menü aufklappen und Benutzerdefinierte URL auswählen.
In eine benutzerdefiniert URL protokollieren | ✅ |
Automatisches Senden erlauben | ❌ |
Offline-Standorte verwerfen | ✅ |
URL | https://gps.welizia.ch/api/logger.php |
HTTP-Text | { "lat": "%LAT", "lng": "%LON", "alt": "%ALT", "spd": "%SPD", "acc": "%ACC", "dir": "%DIR", "timestamp": %TIMESTAMP } |
HTTP-Text | Content-Type:application/json |
HTTP-Methode | POST |
Basic Authentification | Dein Registriertes Login (Wenn du auf der Webseite den Namen oder das Passwort änderts, musst du es hier nachtragen!) |
Zum Beispeil Einfache Ansicht wählen und Aufzeichnung Starten klicken.
Ob die Verbindung klappt, kannst du über den Menüpunkt Protokollansicht feststellen.
Für iOS wäre es wohl ein App wie OwnTracks.