๐ Bug Fixes
Production Deployment Issues
This patch release fixes critical issues affecting production deployments with HTTPS and reverse proxies.
Fixed: Content Security Policy Blocking Inline Styles
- Symptom: Console errors: "Refused to apply inline style because it violates CSP directive"
- Fix: Added
'unsafe-inline'tostyleSrcdirective in production Helmet config - React and Vite use inline styles which were being blocked by the strict CSP
- Still secure: only allows inline styles, not inline scripts
Fixed: CSRF 403 Errors on POST Requests
- Symptom:
POST /api/messages/send 403 (Forbidden)errors in production - Fix: Changed default
SameSitecookie policy fromstricttolax SameSite=Strictwas preventing session cookies from being sent through reverse proxiesSameSite=Laxis more compatible while still secure against CSRF attacks
Why These Changes?
SameSite=Lax vs Strict:
Strictblocks cookies on all cross-site requests, which can break legitimate use cases with reverse proxiesLaxallows cookies on top-level navigation while still preventing CSRF on POST/PUT/DELETE from other sites- Works correctly with nginx, Traefik, Caddy, and other reverse proxies
CSP Inline Styles:
- Modern React applications use inline styles for component styling
- Only affects
style-src, notscript-src(scripts still blocked) - Minimal security risk compared to inline scripts
๐ What's Changed
- fix: resolve production CSP and CSRF issues (#186)
- chore: bump version to 2.4.1
Full Changelog: v2.4.0...v2.4.1
๐ฆ Installation
Docker (recommended)
docker pull ghcr.io/yeraze/meshmonitor:2.4.1
# Or using Docker Compose
docker compose pull
docker compose up -dDocker Compose Example
services:
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:2.4.1
environment:
- MESHTASTIC_NODE_IP=192.168.1.100
- SESSION_SECRET=your-secure-random-string
- TRUST_PROXY=true
- COOKIE_SECURE=true
- ALLOWED_ORIGINS=https://meshmonitor.example.com
volumes:
- meshmonitor-data:/data
ports:
- "8080:3001"
restart: unless-stoppedHelm Chart
helm upgrade meshmonitor oci://ghcr.io/yeraze/charts/meshmonitor --version 2.4.1๐ง Configuration
For HTTPS production deployments, ensure you set:
SESSION_SECRET=<random-string> # Required
TRUST_PROXY=true # Required for reverse proxy
COOKIE_SECURE=true # Required for HTTPS
ALLOWED_ORIGINS=https://your-domain.com # Required for CORSSee the Production Deployment Guide for complete setup instructions.
๐ Credits
Thanks to the community for reporting these production deployment issues!
๐ค Generated with Claude Code
๐ MeshMonitor v2.4.1
๐ฆ Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:v2.4.1๐งช Testing
โ
All tests passed
โ
TypeScript checks passed
โ
Docker images built for linux/amd64, linux/arm64, linux/arm/v7
๐ Changes
See commit history for detailed changes.