bjorkan/mqtt-to-meshcoreio-map

By bjorkan

Updated about 1 month ago

MQTT to MeshCore.io Map bridge that uploads verified MeshCore adverts to the MeshCore.io map.

Image
Networking
Web servers
0

1.6K

bjorkan/mqtt-to-meshcoreio-map repository overview

MQTT to MeshCore.io Map Bridge

A containerized bridge that listens to a MeshCore MQTT broker and uploads verified MeshCore adverts to the MeshCore.io map.

The service consumes MQTT observer messages, validates MeshCore packet data, signs accepted map uploads, and posts them to MeshCore.io. It does not run an MQTT broker and does not forward messages to another MQTT broker.

Features

  • Subscribes to MeshCore MQTT observer topics such as meshcore/#
  • Verifies MeshCore advert signatures
  • Uploads only supported map advert types: REPEATER, ROOM, and SENSOR
  • Skips chat adverts, invalid packets, stale replays, and too-frequent reuploads
  • Uses ephemeral MeshCore.io upload identities generated on startup
  • Supports a persistent SQLite store under /data
  • Optional read-only dashboard with queue state, worker state, and recent accepted map coordinates

Tags

  • latest: latest published GitHub release
  • edge: latest push to the main branch

Images are published for linux/amd64 and linux/arm64.

Quick Start

docker run --rm \
  -e SOURCE_MQTT_URL=mqtt://your-broker:1883 \
  -e SOURCE_MQTT_USERNAME= \
  -e SOURCE_MQTT_PASSWORD= \
  -e SOURCE_REJECT_UNAUTHORIZED=true \
  -e TOPIC_FILTER=meshcore/# \
  -v mqtt-to-meshcoreio-map-data:/data \
  bjorkan/mqtt-to-meshcoreio-map:latest

Required Configuration

At minimum, configure the source MQTT broker:

SOURCE_MQTT_URL=mqtt://your-broker:1883
SOURCE_MQTT_USERNAME=
SOURCE_MQTT_PASSWORD=
TOPIC_FILTER=meshcore/#

Supported MQTT URL schemes include:

SOURCE_MQTT_URL=mqtt://your-broker:1883
SOURCE_MQTT_URL=mqtts://your-broker:8883
SOURCE_MQTT_URL=ws://your-broker:8083/mqtt
SOURCE_MQTT_URL=wss://your-broker:8084/mqtt

Dashboard

Enable the optional read-only dashboard:

docker run --rm \
  -p 6543:80 \
  -e ENABLE_DASHBOARD=true \
  -e SOURCE_MQTT_URL=mqtt://your-broker:1883 \
  -v mqtt-to-meshcoreio-map-data:/data \
  bjorkan/mqtt-to-meshcoreio-map:latest

Then open:

http://localhost:6543

Important Environment Variables

MESHCOREIO_WORKERS=1
MESHCOREIO_DRY_RUN=false
MESHCOREIO_MAX_QUEUED_UPLOADS=25
MESHCOREIO_RETRIES_ALLOWED=3
MESHCOREIO_REQUEST_TIMEOUT_MS=10000
MESHCOREIO_MIN_REUPLOAD_SECONDS=3600
ENABLE_DASHBOARD=false
DASHBOARD_PORT=80
SQLITE_PATH=/data/mqtt-to-meshcoreio-map.sqlite
TZ=Europe/Stockholm

Persistence

The container stores observer radio status and dashboard MeshCore.io response history in SQLite.

Default path:

/data/mqtt-to-meshcoreio-map.sqlite

Mount /data as a writable volume for persistent state.

Source

GitHub Container Registry image:

ghcr.io/bjorkan/mqtt-to-meshcoreio-map

Source repository:

https://github.com/bjorkan/mqtt-to-meshcoreio-map

Tag summary

Content type

Image

Digest

sha256:37ca0a7a6

Size

129.2 MB

Last updated

about 1 month ago

docker pull bjorkan/mqtt-to-meshcoreio-map:edge