Server that tracks specific Meshtastic nodes
7.9K
Real-time tracking for Meshtastic-equipped racing buoys — a live map, drift alerts, and battery monitoring for buoys moored in tidal waters. Built for yacht clubs; battle-tested on San Francisco Bay.
When a mooring chain breaks, you get an email before the buoy reaches the next county. Everything else is in service of that.
# docker-compose.yml
services:
buoy-tracker:
image: dokwerker8891/buoy-tracker:latest
container_name: buoy-tracker
restart: unless-stopped
ports: ["5103:5103"]
volumes:
- ./config:/app/config
- ./data:/app/data
- ./logs:/app/logs
environment:
PUID: "1000" # your host user, for clean volume ownership
PGID: "1000"
TZ: America/Los_Angeles
mkdir -p config data logs && docker compose up -d
The container runs out of the box on built-in defaults (tracking the SF Bay
mesh). First run drops commented example files into ./config/; customize:
| file | owns |
|---|---|
config/site.config | your fleet — buoy IDs, home coordinates, alert radius |
config/environment.config | your infrastructure — MQTT broker, SMTP, ports |
config/secret.config | admin password, SMTP credentials |
Unset keys fall back to application defaults; app upgrades never require
config merging. Upgrading from a pre-2.1 single-file config: run once
docker exec buoy-tracker python3 /app/tools/split_config.py /app/config/tracker.config
--userns=keep-id) or rootful with PUID/PGIDX-Forwarded-Prefix
(Traefik stripprefix works with zero app config)latest — current stable release2.3.2 — pinned releases (multi-arch: amd64 + arm64)GPL v3. Built on Meshtastic, Flask, Leaflet, OpenStreetMap.
Content type
Image
Digest
sha256:54dcf7068…
Size
67 MB
Last updated
about 1 month ago
docker pull dokwerker8891/buoy-tracker