# MeshExplorer unified stack configuration. # Copy this file to .env and fill in the values, then run: # docker compose up --build # (add `--profile bot` to also start the Discord relay). # ─── ClickHouse ────────────────────────────────────────────────────────────── # The read/write "default" user is used by the ingest daemon and the migration # runner. Set a real password before deploying. CLICKHOUSE_DB=default CLICKHOUSE_USER=default CLICKHOUSE_PASSWORD=changeme # Read-only user used by the web app and the Discord bot. This account is only # reachable on the internal docker network; the default matches ingest/clickhouse/users.xml. CLICKHOUSE_READONLY_USER=readonly CLICKHOUSE_READONLY_PASSWORD=readonly # ─── MeshCore MQTT ingest ──────────────────────────────────────────────────── # JSON array of MQTT brokers to subscribe to for meshcore packets. Each entry: # { "url": "...", "username": "...", "password": "...", "topics": ["meshcore/#"] } # "topics" is optional and defaults to ["meshcore/#"]. The ingest daemon exits # with an error if this is empty, so configure at least one broker. MQTT_BROKERS=[{"url":"tcp://mqtt.example.com:1883","username":"CHANGE_ME","password":"CHANGE_ME","topics":["meshcore/#"]}] MQTT_CLIENT_ID=meshcore-ingest # ─── Web app ───────────────────────────────────────────────────────────────── # Base URL for client-side API calls. Leave empty to use relative URLs. NEXT_PUBLIC_API_URL= # ─── Discord relay bot (optional, --profile bot) ───────────────────────────── # Required when running the bot. Create a webhook in your Discord server. DISCORD_WEBHOOK_URL= # Optional: post into a specific thread instead of the channel. DISCORD_THREAD_ID= # Region filter for messages (e.g. seattle). MESH_REGION=seattle # Poll interval (ms) and batch size. POLL_INTERVAL=300 MAX_ROWS_PER_POLL=50 # Comma-separated base64 private keys used to decrypt channel messages. PRIVATE_KEYS= # ─── Grafana ───────────────────────────────────────────────────────────────── # Admin password for the bundled Grafana (published on 127.0.0.1:3000). A # ClickHouse datasource is auto-provisioned using the read-only user above. GRAFANA_ADMIN_PASSWORD=admin