Files
meshstream/.env.example
Daniel Pupius 8130158c1e feat(cache): priority-based eviction with age protection and Bélády approximation
Replace the flat circular buffer with NodeAwareCache, a smarter eviction
strategy for historical mesh packet data:

- Packets younger than 1 hour are never evicted (recent traffic preserved)
- Under pressure, evict from the lowest-priority type first (neighbor-info
  outlasts node-info; chat messages outlast everything)
- Within a priority tier, evict from the most recently active source node —
  that node will resend soonest, so its old packet is cheapest to lose
  (Bélády approximation; protects flaky/distant node history)
- Node retention window still applies: silent nodes' packets are excluded
  from GetAll and pruned proactively before priority eviction runs

Also:
- Add --cache-retention flag (default 3h) and raise --cache-size default to 5000
- Fix decoder error strings (replace verbose Go errors with short codes)
- Add HTTP security headers middleware to server
- Fix broker dispatchLoop deadlock on source channel close
- Fix make gen-proto scanning web/node_modules for .proto files
- Fix tools target always reinstalling protoc-gen-go (handles stale arch binary)
- Move server port from 8080 to 5446; update Dockerfile, docker-compose, moat.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:23:50 +00:00

45 lines
1.8 KiB
Plaintext

# Environment variables for docker-compose
# Copy this file to .env and customize with your own values
###########################################
# Web app variables (BUILD-TIME ONLY)
# These must be set at build time and are
# compiled into the static HTML/JS files
###########################################
# Development setup - enables more detailed logging and developer features
MESHSTREAM_APP_ENV=development
# MESHSTREAM_APP_ENV=production # Uncomment for production build
# Site customization
MESHSTREAM_SITE_TITLE=Bay Area Mesh - Dev
MESHSTREAM_SITE_DESCRIPTION=Development instance - Meshtastic activity in Bay Area region
# For local development, point to local server
# (empty for production where API is on same domain)
MESHSTREAM_API_BASE_URL=http://localhost:5446
# Google Maps API configuration - required for maps to work
# Get keys at: https://developers.google.com/maps/documentation/javascript/get-api-key
MESHSTREAM_GOOGLE_MAPS_ID=your mapid
MESHSTREAM_GOOGLE_MAPS_API_KEY=your api
# IMPORTANT: To change these values after building, you must rebuild the image
###########################################
# Runtime environment variables
###########################################
# MQTT connection settings
MESHSTREAM_MQTT_BROKER=mqtt.bayme.sh
MESHSTREAM_MQTT_USERNAME=meshdev
MESHSTREAM_MQTT_PASSWORD=large4cats
# Topic to monitor - customize for your region
MESHSTREAM_MQTT_TOPIC_PREFIX=msh/US/bayarea
# Server configuration
MESHSTREAM_SERVER_HOST=0.0.0.0 # Listen on all interfaces
MESHSTREAM_SERVER_PORT=5446 # Standard web port
MESHSTREAM_STATIC_DIR=/app/static
# Logging and debugging
MESHSTREAM_LOG_LEVEL=debug # Options: debug, info, warn, error
MESHSTREAM_VERBOSE_LOGGING=true # Set to false in production
MESHSTREAM_CACHE_SIZE=1000 # Number of packets to cache for new subscribers