A dockerized version of the Mesh Map project, designed for easy deployment of a self-hosted Meshcore map and MQTT ingest service.
Copy the example environment file to create your own configuration:
cp .env.example .envEdit .env and configure the following variables:
| Variable | Description | Default |
|---|---|---|
MQTT_HOST |
The hostname or IP of your MQTT broker. | mqtt.example.org |
MQTT_PORT |
The MQTT port (use 1883 for TCP, 8883 for TLS, 443 for WSS). | 1883 |
MQTT_USERNAME |
Username for MQTT authentication. | null |
MQTT_PASSWORD |
Password for MQTT authentication. | null |
MQTT_TOPIC |
Root topic for mesh traffic. | null |
MQTT_USE_WEBSOCKETS |
Set to true to use WebSockets instead of TCP. |
false |
MQTT_USE_TLS |
Set to true to enable TLS encryption. |
false |
MQTT_USE_AUTH_TOKEN |
Set to true if your broker requires auth tokens. |
false |
CENTER_POSITION |
Map center coordinates [LAT, LON] |
|
VALID_DIST |
Max distance (miles) to show nodes from center. | 150 |
SERVICE_HOST |
Internal URL for the API service (usually correct as-is). | http://server:3000 |
Use Docker Compose to build and start the services:
Build and Start:
docker-compose up --build -dView Logs:
docker-compose logs -fStop Services:
docker-compose downOnce running, the map is available at:
http://localhost:3000/wardrive.html
- Server: Node.js API (ported from Cloudflare Workers) dealing with SQLite data storage and serving frontend assets.
- MQTT Service: Python-based ingest service that connects to the specified broker, decodes packets, and posts them to the Server API.
Original project by kallanreed.