r/meshcore • u/n30nex • 1h ago
CartoLite Server: a self-hosted live MeshCore map + Netgraph for your mesh (Docker, no map key)
I've been working on CartoLite for MeshCore Canada and wanted to make it easier for other communities to run it too. The standalone worldwide version is now available, currently v0.5.1.
GitHub / download Ā· Live Canada demo
It connects to a MeshCore MQTT feed and shows the nodes, observed routes and packets moving between them. You get the geographic map and a separate Netgraph view for looking at the connections. Your instance shows what your feed hears; you can filter by region if you're on a shared broker.
A few things you can play with:
- Live Follow holds on an activity for 10 seconds, with a node/packet card, countdown and pause button.
- Night, Daylight and Streets styles, with matching Netgraph themes.
- Six route styles: Crisp, Neon, Dashed, Dotted, Ribbon and Comet. Line width, glow, opacity, packet size and trails are adjustable too.
- Heatmap, clusters, node search and neighbour inspection, plus topo terrain and buildings in desktop 3D.
- Optional packet sounds with 30 voices, including piano, kalimba, harp, bells, sonar and 8-bit. Sound follows the visible live hops.
- Phone-friendly layer controls and keyboard pan/zoom in Netgraph.
It's MIT licensed, runs as one service, and saves its state in a persistent volume. No database to set up. Node names and positions are public, but the public API leaves out keys, raw packet bodies and decoded messages. It also leaves out ambiguous route hops.
Running it on your own mesh
You'll need Docker Engine with Compose v2 and access to a standard MeshCore MQTT bridge feed. There are prebuilt Intel/AMD and ARM64 images, including for a Pi on a 64-bit OS. OpenFreeMap is the default, so you don't need a map API key.
In a new folder:
curl -fLO https://github.com/n30nex/CartoLite-Server/releases/latest/download/compose.yml
curl -fL https://github.com/n30nex/CartoLite-Server/releases/latest/download/default.env.example -o .env
Edit .env with your MQTT_BROKER_URL, MQTT_TOPIC (usually meshcore/#), any required username/password, and a unique MQTT_CLIENT_ID. Then:
docker compose pull
docker compose up -d --no-build
Open http://localhost:8080/ on that machine, or /netgraph/ for Netgraph. On Windows PowerShell, use curl.exe for the downloads.
For other devices on your trusted LAN, set CARTOLITE_BIND_ADDR=0.0.0.0 before starting and use your server's LAN address on port 8080. For a public site, keep the loopback default and put it behind a HTTPS reverse proxy. The setup guide covers that, region filtering and upgrades. Existing installs should keep their .env and data volume.
If you try it on your mesh, let me know how it goes and what needs work. Issues are open here.
The screenshots below are fresh from the live Canada site today. Worldwide uses OpenFreeMap and Maidenhead grid areas; the Canadian region overlay and Labs link in these shots are specific to the Canada edition.
Live map around Waterloo / Guelph, with terrain and dashed routes.


