Configuration Reference
Every key in .mesh-dash_config with defaults, types, and descriptions sourced from the code.
MeshDash reads its configuration from .mesh-dash_config in the install directory on startup. The format is KEY=VALUE — one per line. Comments start with #. All values are coerced to their correct types at load time.
After editing the file, restart the service:
sudo systemctl restart mesh-dash. Some keys (AUTH_SECRET_KEY, LOG_LEVEL, etc.) can also be changed via the System Config API and take effect immediately without a full restart.Authentication
AUTH_SECRET_KEY64-character hex string used to sign JWT session tokens. Never share this value. Changing it invalidates all active sessions. Defaults to a random value generated at startup if not set.
AUTH_TOKEN_EXPIRE_MINUTESSession lifetime in minutes. Default:
10080 (7 days). Tokens are silently refreshed at the /api/status endpoint when less than half their life remains.Radio Connection
MESHTASTIC_CONNECTION_TYPESERIAL | TCP | BLE | WEBSERIAL. Default: SERIAL.MESHTASTIC_SERIAL_PORTSerial device path. Example:
/dev/ttyACM0. Only used when type is SERIAL.MESHTASTIC_HOSTIP address for TCP mode. Default:
192.168.0.0.MESHTASTIC_PORTTCP port. Default:
4403 (standard Meshtastic port).MESHTASTIC_BLE_MACBluetooth MAC address for BLE mode. Example:
AA:BB:CC:DD:EE:FF.Web Server
WEBSERVER_HOST0.0.0.0 (accessible on LAN) or 127.0.0.1 (local only). Default: 0.0.0.0.WEBSERVER_PORTPort number. Default:
8000.NETWORK_WEBSERVER_PORTPort for the optional network analyzer sub-app. Default: same as
WEBSERVER_PORT.Data Storage
DB_PATHPath to the main SQLite database. Default:
meshtastic_data.db.TASK_DB_PATHPath to the tasks/scheduler database. Default:
tasks.db.NETWORK_DB_PATHPath to the optional network analyzer database. Default:
meshtastic_network_data.db.MAX_PACKETS_MEMORYNumber of packets held in the in-memory deque for the live feed. Default:
200. Increasing this uses more RAM.HISTORY_DAYSDays of data retained. Records older than this are pruned hourly. Default:
1. Set to 30, 90, etc. for longer retention.LOG_LEVELINFO | DEBUG | WARNING. Default: INFO. Use DEBUG for troubleshooting — very verbose.PUBLIC_MODEtrue | false. When true, authentication is bypassed and databases are ephemeral (in-memory). Intended for demo or public-display deployments only. Default: true until setup is completed.Community API & Remote Access
COMMUNITY_APItrue | false. Enables community map heartbeat and C2 remote access. Default: false.COMMUNITY_API_KEYYour unique node API key. Generated by the Setup Wizard. Treat as a password.
HEARTBEAT_INTERVAL_MINUTESHow often (minutes) the C2 worker syncs with the community server. Default:
1.C2_ACCESS_LEVELoff | heartbeat | monitor | read | operator | full. Controls what can be accessed remotely. Default: read. See Remote Access for tier details.C2_EXTRA_ENDPOINTSPipe-separated list of additional endpoints to allow remotely. E.g.
/api/nodes|/api/status.C2_BLOCKED_ENDPOINTSPipe-separated endpoints to always block, overriding tier settings.
C2_MAX_REQUESTS_PER_SYNCMaximum proxy requests processed per sync cycle. Default:
10.C2_MAX_RESPONSE_KBMaximum size (KB) of any single proxied response. Default:
512.C2_SYNC_INTERVAL_SECONDSHow often (seconds) to poll for pending remote requests. Default:
15.C2_UPLOAD_INTERVAL_SECONDSBulk data upload frequency (seconds). Default:
60.Location Privacy
SEND_LOCAL_NODE_LOCATIONtrue | false. Share your own node's GPS position on the community map. Default: true.SEND_OTHER_NODES_LOCATIONtrue | false. Share positions of other nodes your radio hears. Default: true.LOCATION_OFFSET_ENABLEDtrue | false. Add a random offset to all reported positions for privacy. Default: false.LOCATION_OFFSET_METERSMaximum fuzzing radius in metres. Only used when
LOCATION_OFFSET_ENABLED=true. Default: 0.0.Connection Scheduler / Tuning
SCHEDULER_MAX_RETRIESNumber of reconnection attempts before backing off. Default:
3.SCHEDULER_RETRY_DELAY_SECONDSWait time between retries. Default:
10.SCHEDULER_CONNECT_TIMEOUTSeconds to wait when establishing a connection. Default:
10.0.SCHEDULER_RW_TIMEOUTSeconds to wait for a read/write operation on an active connection. Default:
30.0.Initial Admin (One-time, Auto-removed)
INITIAL_ADMIN_USERNAMEUsed during first-boot setup only. Written by the setup wizard, consumed on startup to create the admin account, then removed from the config file automatically.
INITIAL_ADMIN_PASSWORDSame as above — plaintext password consumed once on startup, hashed with bcrypt and stored in the database, then removed from config.
Example Config
# ---------------------------------------------------------
# MeshDash Configuration
# ---------------------------------------------------------
AUTH_SECRET_KEY=a1b2c3d4e5f6...64chars
AUTH_TOKEN_EXPIRE_MINUTES=10080
MESHTASTIC_CONNECTION_TYPE=SERIAL
MESHTASTIC_SERIAL_PORT=/dev/ttyACM0
WEBSERVER_HOST=0.0.0.0
WEBSERVER_PORT=8000
DB_PATH=meshtastic_data.db
TASK_DB_PATH=tasks.db
MAX_PACKETS_MEMORY=200
HISTORY_DAYS=30
LOG_LEVEL=INFO
COMMUNITY_API=false
COMMUNITY_API_KEY=
C2_ACCESS_LEVEL=read
HEARTBEAT_INTERVAL_MINUTES=1
C2_SYNC_INTERVAL_SECONDS=15
SEND_LOCAL_NODE_LOCATION=true
SEND_OTHER_NODES_LOCATION=true
LOCATION_OFFSET_ENABLED=false
LOCATION_OFFSET_METERS=0
SCHEDULER_MAX_RETRIES=3
SCHEDULER_RETRY_DELAY_SECONDS=10
SCHEDULER_CONNECT_TIMEOUT=10
SCHEDULER_RW_TIMEOUT=30