Files
meshcore-gui/observer_config.yaml
2026-03-09 17:53:29 +01:00

119 lines
4.0 KiB
YAML

# ============================================================================
# MeshCore Observer — Configuration
# ============================================================================
#
# Copy this file to observer_config.yaml and adjust settings as needed.
# All settings have sensible defaults — the observer will work without
# a config file.
#
# Author: PE1HVH
# SPDX-License-Identifier: MIT
# Copyright: (c) 2026 PE1HVH
# ============================================================================
# ── Observer settings ────────────────────────────────────────────────
observer:
# Path to archive directory (where meshcore_gui/bridge write JSON files)
archive_dir: "~/.meshcore-gui/archive"
# Seconds between archive directory polls
poll_interval_s: 2.0
# Maximum number of messages displayed in dashboard
max_messages_display: 100
# Maximum number of RX log entries displayed in dashboard
max_rxlog_display: 50
# ── GUI settings ─────────────────────────────────────────────────────
gui:
# Dashboard TCP port (GUI=8081, Bridge=9092, Observer=9093)
port: 9093
# Browser tab title
title: "MeshCore Observer"
# ── MQTT Uplink to LetsMesh ──────────────────────────────────────────
#
# Publishes RX log packet data to the LetsMesh analyzer
# (analyzer.letsmesh.net) via MQTT over WebSocket+TLS.
#
# DISABLED by default — set enabled: true and provide keys to activate.
#
# Required for MQTT:
# - Device public key (64-char hex)
# - Device private key (64-char hex) for Ed25519 JWT signing
# - IATA airport code (3 letters) for topic namespace
#
# Private key can be provided via:
# 1. MESHCORE_PRIVATE_KEY environment variable (recommended)
# 2. private_key_file path (permissions should be 600)
# 3. private_key inline (not recommended for production)
#
mqtt:
# Master enable switch — MUST be explicitly set to true
enabled: false
# 3-letter IATA airport code for your location (used in MQTT topic path)
# Examples: AMS (Amsterdam), JFK (New York), LHR (London)
iata: "AMS"
# Device identity (required when MQTT is enabled)
# Can also be set via MESHCORE_PUBLIC_KEY env var
public_key: ""
# Device name shown as 'origin' in published packets
device_name: "MeshCore Observer"
# Private key for Ed25519 JWT authentication
# SECURITY: prefer private_key_file or MESHCORE_PRIVATE_KEY env var
private_key: ""
# Path to file containing private key (more secure than inline)
# File should contain only the 64-char hex key, permissions 600
private_key_file: ""
# ── Broker endpoints ──
# Multiple brokers can be configured (e.g. EU + US)
brokers:
- name: "letsmesh-eu"
server: "mqtt-eu-v1.letsmesh.net"
port: 443
transport: "websockets"
tls: true
enabled: true
- name: "letsmesh-us"
server: "mqtt-us-v1.letsmesh.net"
port: 443
transport: "websockets"
tls: true
enabled: false
# ── Privacy filter ──
# Which packet types to upload. Empty list = upload ALL types.
# Packet types:
# 0=REQ, 1=RESPONSE, 2=TXT_MSG, 3=ACK, 4=ADVERT,
# 5=GRP_TXT, 6=GRP_DATA, 7=ANON_REQ, 8=PATH, 9=TRACE
#
# Examples:
# upload_packet_types: [] # Upload everything
# upload_packet_types: [4] # Only adverts
# upload_packet_types: [4, 5] # Adverts + group text
upload_packet_types: []
# Seconds between status topic republish (0 = only on connect)
status_interval_s: 300
# Seconds between reconnect attempts
reconnect_delay_s: 10
# Maximum reconnect retries (0 = infinite)
max_reconnect_retries: 0
# JWT token lifetime in seconds (auto-refreshed before expiry)
token_lifetime_s: 3600