mirror of
https://github.com/yellowcooln/meshcore-mqtt-live-map.git
synced 2026-04-20 23:23:36 +00:00
185 lines
5.4 KiB
Text
185 lines
5.4 KiB
Text
# =========================
|
|
# Debug / Logging
|
|
# =========================
|
|
DEBUG_PAYLOAD=false
|
|
DEBUG_PAYLOAD_MAX=400
|
|
DEBUG_LAST_MAX=50
|
|
DEBUG_STATUS_MAX=50
|
|
PAYLOAD_PREVIEW_MAX=800
|
|
|
|
# =========================
|
|
# Server / Storage
|
|
# =========================
|
|
WEB_PORT=8080
|
|
STATE_DIR=/data
|
|
BACKUP_ENABLED=false
|
|
BACKUP_INTERVAL_SECONDS=43200
|
|
BACKUP_DIR=/backup
|
|
BACKUP_RETENTION_DAYS=7
|
|
STATE_FILE=/data/state.json
|
|
DEVICE_ROLES_FILE=/data/device_roles.json
|
|
DEVICE_COORDS_FILE=/data/device_coords.json
|
|
NEIGHBOR_OVERRIDES_FILE=/data/neighbor_overrides.json
|
|
CHANNEL_SECRETS_FILE=/data/channel_secrets.json
|
|
STATE_SAVE_INTERVAL=5
|
|
|
|
# =========================
|
|
# Access Control
|
|
# =========================
|
|
PROD_MODE=false
|
|
PROD_TOKEN=change-me
|
|
|
|
TURNSTILE_ENABLED=false
|
|
TURNSTILE_SITE_KEY=
|
|
TURNSTILE_SECRET_KEY=
|
|
TURNSTILE_API_URL=https://challenges.cloudflare.com/turnstile/v0/siteverify
|
|
TURNSTILE_TOKEN_TTL_SECONDS=86400
|
|
TURNSTILE_BOT_BYPASS=true
|
|
TURNSTILE_BOT_ALLOWLIST=discordbot,twitterbot,slackbot,facebookexternalhit,linkedinbot,telegrambot,whatsapp,skypeuripreview,redditbot
|
|
|
|
# =========================
|
|
# Site / UI
|
|
# =========================
|
|
SITE_TITLE=Anonymous Mesh Live Map
|
|
SITE_DESCRIPTION=Live view of mesh nodes, message routes, and advert paths.
|
|
SITE_OG_IMAGE=
|
|
SITE_URL=https://your-domain.example/
|
|
SITE_ICON=/static/logo.png
|
|
SITE_FEED_NOTE=Feed: MQTT broker.
|
|
CUSTOM_LINK_URL=
|
|
PACKET_ANALYZER_URL=
|
|
QR_CODE_BUTTON_ENABLED=false
|
|
PEERS_DEFAULT_LIMIT=8
|
|
|
|
DISTANCE_UNITS=km
|
|
NODE_MARKER_RADIUS=8
|
|
HISTORY_LINK_SCALE=1
|
|
|
|
MAP_START_LAT=42.3601
|
|
MAP_START_LON=-71.1500
|
|
MAP_START_ZOOM=10
|
|
MAP_RADIUS_KM=241.4
|
|
MAP_RADIUS_SHOW=false
|
|
MAP_BOUNDARY_MODE=radius
|
|
MAP_BOUNDARY_FILE=/data/map_boundary.json
|
|
MAP_BOUNDARY_SHOW=false
|
|
MAP_DEFAULT_LAYER=light
|
|
|
|
# Optional coverage map integration (leave blank to hide Coverage button)
|
|
# Legacy example:
|
|
# COVERAGE_API_URL=https://coverage.example.com
|
|
# MeshMapper example:
|
|
# COVERAGE_API_URL=https://meshmapper.net
|
|
# The envs below are MeshMapper-only and are not used by legacy coverage maps.
|
|
# COVERAGE_API_KEY=your_meshmapper_api_key
|
|
# COVERAGE_MAX_AGE_DAYS=30
|
|
# COVERAGE_RATE_LIMIT_COOLDOWN_SECONDS=3600
|
|
# COVERAGE_CACHE_FILE=/data/coverage_cache.json
|
|
# COVERAGE_SYNC_INTERVAL_SECONDS=3600
|
|
COVERAGE_API_URL=
|
|
COVERAGE_API_KEY=
|
|
COVERAGE_MAX_AGE_DAYS=30
|
|
COVERAGE_RATE_LIMIT_COOLDOWN_SECONDS=3600
|
|
COVERAGE_CACHE_FILE=/data/coverage_cache.json
|
|
COVERAGE_SYNC_INTERVAL_SECONDS=3600
|
|
|
|
# =========================
|
|
# Weather Overlay
|
|
# =========================
|
|
# Master radar feature flag. Set false to remove radar from the Weather panel.
|
|
WEATHER_RADAR_ENABLED=true
|
|
# Set true to clip radar tiles to the resolved country around current map center.
|
|
WEATHER_RADAR_COUNTRY_BOUNDS_ENABLED=false
|
|
# Optional override. Keep default unless you host a custom country-bounds endpoint.
|
|
WEATHER_RADAR_COUNTRY_LOOKUP_URL=/weather/radar/country-bounds
|
|
# Master wind feature flag. Set false to remove wind from the Weather panel.
|
|
WEATHER_WIND_ENABLED=true
|
|
# Wind API endpoint. Must return Open-Meteo compatible current wind fields.
|
|
WEATHER_WIND_API_URL=https://api.open-meteo.com/v1/forecast
|
|
# Wind sample density per map view (1-5). Higher = more detail + more API requests.
|
|
WEATHER_WIND_GRID_SIZE=3
|
|
# Wind refresh interval in seconds (minimum 30).
|
|
WEATHER_WIND_REFRESH_SECONDS=180
|
|
|
|
# =========================
|
|
# MQTT
|
|
# =========================
|
|
MQTT_HOST=your-mqtt-host
|
|
MQTT_PORT=443
|
|
# For michaelhart/meshcore-mqtt-broker, use a broker SUBSCRIBER_N account here.
|
|
# Example broker side: SUBSCRIBER_1=meshmap:change-this-password:2
|
|
MQTT_USERNAME=meshmap
|
|
MQTT_PASSWORD=change-this-password
|
|
# Comma-separated list supported, e.g. meshcore/BOS/#,meshcore/CON/#
|
|
MQTT_TOPIC=meshcore/#
|
|
|
|
MQTT_TRANSPORT=websockets
|
|
MQTT_WS_PATH=/
|
|
MQTT_TLS=true
|
|
MQTT_TLS_INSECURE=false
|
|
MQTT_CA_CERT=
|
|
MQTT_CLIENT_ID=
|
|
|
|
MQTT_ONLINE_SECONDS=300
|
|
MQTT_ONLINE_STATUS_TTL_SECONDS=300
|
|
MQTT_ONLINE_INTERNAL_TTL_SECONDS=300
|
|
MQTT_ACTIVITY_PACKETS_TTL_SECONDS=300
|
|
# Legacy compatibility setting; primary MQTT presence now uses status/internal TTL envs.
|
|
MQTT_ONLINE_TOPIC_SUFFIXES=/status,/internal
|
|
MQTT_ONLINE_FORCE_NAMES=
|
|
MQTT_SEEN_BROADCAST_MIN_SECONDS=5
|
|
MQTT_STATUS_OFFLINE_VALUES=offline,disconnected
|
|
|
|
# =========================
|
|
# Device / Route Behavior
|
|
# =========================
|
|
DEVICE_TTL_HOURS=96
|
|
PATH_TTL_SECONDS=172800
|
|
TRAIL_LEN=0
|
|
HEAT_TTL_SECONDS=600
|
|
|
|
ROUTE_TTL_SECONDS=120
|
|
ROUTE_PAYLOAD_TYPES=8,9,2,5,4
|
|
ROUTE_PATH_MAX_LEN=16
|
|
ROUTE_MAX_HOP_DISTANCE=100
|
|
ROUTE_INFRA_ONLY=true
|
|
ROUTE_ALLOW_AMBIGUOUS_ONE_BYTE_FALLBACK=false
|
|
MESSAGE_ORIGIN_TTL_SECONDS=300
|
|
|
|
ROUTE_HISTORY_ENABLED=true
|
|
ROUTE_HISTORY_HOURS=24
|
|
ROUTE_HISTORY_MAX_SEGMENTS=40000
|
|
ROUTE_HISTORY_COMPACT_INTERVAL=120
|
|
ROUTE_HISTORY_FILE=/data/route_history.jsonl
|
|
ROUTE_HISTORY_PAYLOAD_TYPES=8,9,2,5,4
|
|
ROUTE_HISTORY_ALLOWED_MODES=path
|
|
|
|
# =========================
|
|
# Decoder
|
|
# =========================
|
|
DECODE_WITH_NODE=true
|
|
NODE_DECODE_TIMEOUT_SECONDS=2.0
|
|
DIRECT_COORDS_MODE=topic
|
|
DIRECT_COORDS_TOPIC_REGEX=(position|location|gps|coords)
|
|
DIRECT_COORDS_ALLOW_ZERO=false
|
|
|
|
# =========================
|
|
# LOS / Elevation
|
|
# =========================
|
|
LOS_ELEVATION_URL=https://api.opentopodata.org/v1/srtm90m
|
|
LOS_ELEVATION_PROXY_URL=/los/elevations
|
|
LOS_SAMPLE_MIN=10
|
|
LOS_SAMPLE_MAX=80
|
|
LOS_SAMPLE_STEP_METERS=250
|
|
ELEVATION_CACHE_TTL=21600
|
|
LOS_CURVATURE_ENABLED=true
|
|
LOS_CURVATURE_FACTOR=1.333333
|
|
LOS_PEAKS_MAX=4
|
|
|
|
# =========================
|
|
# Update Checks
|
|
# =========================
|
|
GIT_CHECK_ENABLED=false
|
|
GIT_CHECK_FETCH=false
|
|
GIT_CHECK_PATH=/repo
|
|
GIT_CHECK_INTERVAL_SECONDS=43200
|