Files
meshexplorer/.env.example
T
Alex Vanderpot 6a1536410c release-prep: unified docker-compose + .env.example
Single root compose brings up the whole stack on one internal network:
clickhouse (healthchecked) -> migrate (one-shot) -> meshcoreingest + meshexplorer,
with the discord-bot behind a "bot" profile. Web app/bot connect as the readonly
ClickHouse user; ingest/migrate use the default user. Named volume replaces the
host /tank path. .env.example documents every variable with placeholders; root
.gitignore keeps real .env out of git. Drops the per-project compose files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 01:01:33 -04:00

42 lines
2.3 KiB
Bash

# 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=