Files

81 lines
3.5 KiB
Bash

# ============================================================
# beacon stack, environment
# Loaded into every service that sets `env_file: .env` in
# docker-compose.yml (app, caddy, web). Each var below is only
# *consumed* by the service(s) noted.
# Contains secrets, keep out of git (.env is gitignored).
# ============================================================
# ---- Backend API server (service: app) ----------------------
# Address the Go server listens on inside its container.
LISTEN_ADDR=:8080
# Admin bearer key for /api/v1/admin/*. When set (even empty) it overrides
# auth.api_key; with no key at all, admin routes return 503. Public reads are unaffected.
# At least 16 characters, no whitespace; e.g. `openssl rand -hex 32`.
# BEACON_API_KEY=
# MeshMapper regional or grouped-region API key for enabled imports.
# Your local MeshMapper regional or grouped-region admin can generate the key;
# grouped-region keys cover multiple regions. Never use the mobile App key.
# Overrides meshmapper.api_key, even when empty. Keep this out of VITE_* settings.
# Use the environment setting with backups; saved YAML keys prevent exports.
# MESHMAPPER_API_KEY=
# Override log.level / log.format from config.yaml (defaults: info / text).
# LOG_LEVEL=info
# LOG_FORMAT=json
# Postgres DSN. Host "db" is the compose service name; the password
# must match POSTGRES_PASSWORD in docker-compose.yml.
POSTGRES_DSN=postgres://beacon:CHANGE_DB_PASS@db:5432/beacon?sslmode=disable
# Redis cache. Host "redis" is the compose service name. If unset, the
# server runs with caching disabled and every read hits Postgres.
REDIS_ADDR=redis:6379
# ---- MQTT ingest brokers (service: app) ---------------------
# Live packet sources. Put your real passwords back here.
MQTT_BROKER_1_URL=wss://mqtt1.meshcore.ca:443
MQTT_BROKER_1_USERNAME=CHANGE_NAME
MQTT_BROKER_1_PASSWORD=CHANGE_PASS
# Optional second broker. Leave MQTT_BROKER_2_URL empty to run with one broker.
MQTT_BROKER_2_URL=wss://mqtt2.meshcore.ca:443
MQTT_BROKER_2_USERNAME=CHANGE_NAME
MQTT_BROKER_2_PASSWORD=CHANGE_PASS
# ---- Public domain / TLS (service: caddy) -------------------
# Site address + automatic Let's Encrypt certificate.
DOMAIN=beacon.example.com
# Type 2 server host only: the web frontend's hostname. Caddy redirects everything that is
# not /api/* or /ws there. Not used by the all-in-one stack.
# WEB_DOMAIN=beacon.example.com
# ---- Frontend URLs (service: web) ---------------------------
# Written to /config.js each time the web container starts.
# MUST be the public domain (never localhost) and match DOMAIN above,
# the browser makes these calls, not the container.
# After changing these, restart the web container so they are re-read:
# docker compose up -d web
# (then hard-refresh the page)
VITE_API_BASE=https://beacon.example.com/api/v1
VITE_WS_URL=wss://beacon.example.com/ws
# Default "All" map view (decimal "lat,lon" + zoom). Unset = world view.
VITE_MAP_CENTER=52.5,-96.8
VITE_MAP_ZOOM=3.2
# Optional web settings. Unset = default.
# Hide tabs (comma list): Packets,Channels,Map,Nodes,Observers,Routes,Traces,Analytics
# VITE_DISABLED_TABS=Map,Traces
# Only offer these themes (comma list of ids); the only way to enable meshmapper_dark/meshmapper_light.
# VITE_ENABLED_THEMES=meshmapper_dark,meshmapper_light
# Top-left wordmark (default BEACON).
# VITE_APP_NAME=BEACON
# Skip the once-per-session load splash.
# VITE_SKIP_SPLASH=true
# Notice above the header; [label](url) and bare URLs become links.
# VITE_BANNER=Test instance, data may be reset. Main site: [beacon.example.com](https://beacon.example.com)