Update meshtastic docs and remove stale mqtt-proxy service
Some checks failed
secret-guardrails / gitleaks (push) Has been cancelled
secret-guardrails / artifact-secret-scan (push) Has been cancelled

This commit is contained in:
Fizzlepoof
2026-06-13 18:57:37 +00:00
parent 28b2edf2a3
commit e19d4a5be3
5 changed files with 48 additions and 80 deletions

View File

@@ -1,9 +1,14 @@
# Meshtastic Stack
## Overview
Self-hosted Meshtastic monitoring and management stack running on PlausibleDeniability.
Self-hosted MeshMonitor stack running on PlausibleDeniability, plus the current operator note for the separate NOMAD-side MeshCore companion observer.
Related NOMAD-side bridge note: a separate MeshCore-to-MQTT relay is running on N.O.M.A.D. as Docker container `mctomqtt` (`mctomqtt:latest`), with config bind-mounted from `/etc/mctomqtt`. The package also includes a systemd unit under `/opt/mctomqtt`, but that is not the active runtime on this host.
Related NOMAD-side bridge note: the legacy `mctomqtt` Docker relay was retired on 2026-06-13. N.O.M.A.D. now uses the LetsMesh companion observer flow via `meshcore-capture.service`, running from `/home/fizzlepoof/.meshcore-packet-capture` and connecting directly to the Heltec over `/dev/serial/by-id/...`.
Important split:
- **PD** hosts the MeshMonitor web/UI stack.
- **NOMAD** owns the USB-attached Heltec companion observer via `meshcore-capture.service`.
- Do not assume MeshMonitor and the companion observer are the same runtime path.
## Stack Location
`/mnt/docker-ssd/docker/compose/meshtastic/`
@@ -12,29 +17,32 @@ Related NOMAD-side bridge note: a separate MeshCore-to-MQTT relay is running on
| Container | Image | Port | Purpose |
|-----------|-------|------|---------|
| meshmonitor | ghcr.io/yeraze/meshmonitor:4.2.0 | 8081→3001 | Main UI + backend |
| meshmonitor (virtual node) | — | 4404 | TCP virtual node server |
| meshmonitor-tileserver | maptiler/tileserver-gl-light | 8082→8080 | Offline map tiles |
| meshmonitor-mqtt-proxy | ghcr.io/ln4cy/mqtt-proxy:master | — | MQTT→TCP bridge |
| meshmonitor | ghcr.io/yeraze/meshmonitor:latest | 8081→3001, 4404→4404 | Main UI + backend; live compose publishes the virtual-node port directly from this container |
| meshmonitor (virtual node) | — | 4404 | TCP virtual node server exposed directly by the meshmonitor container |
| meshmonitor-tileserver | maptiler/tileserver-gl-light:latest | 8082→8080 | Offline map tiles |
| meshmonitor-upgrader | docker:latest | — | Auto-upgrade watchdog |
Live runtime verified on 2026-06-13:
- `docker compose ps` on PD showed `meshmonitor`, `meshmonitor-tileserver`, and `meshmonitor-upgrader` running.
- Repo compose and live runtime now agree that there is no separate `meshmonitor-mqtt-proxy` sidecar in the active stack.
## Architecture
```
Meshtastic Node (10.5.1.172)
MQTT
meshmonitor-mqtt-proxy
↓ TCP (port 4404)
meshmonitor virtual node server
meshmonitor backend
Trusted-LAN mesh node (10.5.1.120)
direct node connection configured by MESHTASTIC_NODE_IP
meshmonitor backend on PD
PostgreSQL (shared-postgres, db: meshmonitor)
Separate path:
NOMAD Heltec companion observer (`meshcore-capture.service`)
↓ upstream MQTT brokers (LetsMesh US / EU + NashMe)
```
## Node Connection
- Node IP: `10.5.1.172`
- Connection type: MQTT via mqtt-proxy (not direct TCP)
- mqtt-proxy connects to meshmonitor's virtual node server on port 4404
- PD MeshMonitor compose is currently configured with `MESHTASTIC_NODE_IP=10.5.1.120`
- MeshMonitor itself publishes port `4404` for the virtual-node path; there is no separate `meshmonitor-mqtt-proxy` service in the active stack
- NOMAD's companion observer is a different ingest path and should not be documented as a MeshMonitor sidecar
## Storage
- Appdata: `/mnt/tank/docker/appdata/meshmonitor/data``/data`
@@ -60,7 +68,7 @@ mkdir -p /mnt/docker-ssd/docker/compose/meshtastic/scripts
## Known Warnings
- Node `!dd972536` has a low-entropy public key — this is a device configuration issue, not a meshmonitor bug
- Frequent connect/disconnect cycles in logs are normal when the MQTT proxy reconnects
- MeshMonitor logs can still show noisy reconnect/admin-session churn during node or radio instability; do not confuse that with the retired NOMAD `mctomqtt` path
## Tiles
Map tiles stored in `./tiles/`. Currently includes `zurich_switzerland.mbtiles` (34MB).
@@ -68,5 +76,4 @@ Tiles directory is gitignored. To add new tiles, download `.mbtiles` files and p
## TODO
- [ ] Document all running meshtastic-map container config
- [ ] Document meshtastic-map-mosquitto and meshtastic-mqtt containers
- [ ] Add healthcheck to meshmonitor container