Auch verfügbar in:
🇬🇧 English
Docker-Installation
Inhalt
Im Detail. Für die Schnell-Variante: Schnellstart.
docker run vs docker-compose
| Use-Case | Empfehlung |
|---|---|
| Mal eben testen | docker run |
| Permanente Installation | docker-compose |
| Auf Unraid | Community Apps |
Vollständiges docker-compose.yml
services:
mesh:
image: ghcr.io/itsweber/mesh:latest
container_name: itsweber-mesh
restart: unless-stopped
ports:
- "3000:3000"
environment:
MESH_SESSION_SECRET: ${MESH_SESSION_SECRET}
DATA_DIR: /data
PORT: "3000"
TZ: Europe/Berlin
# NODE_OPTIONS: "--max-old-space-size=512" # für RAM-arme Hosts
volumes:
- ./mesh-data:/data
# Optional — Unraid GraphQL Socket für native Unraid-Stats
# - /var/run/unraid-api.sock:/var/run/unraid-api.sock:ro
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
Reverse-Proxy (Nginx Proxy Manager)
Mesh selbst macht kein TLS. Hinter NPM:
- Stream auf
http://<container-ip>:3000weiterleiten - Wildcard-Domain z. B.
mesh.deine-domain.de - Force-SSL aktivieren, HTTP → HTTPS Redirect
- Block für WebSockets / SSE:
proxy_read_timeout 3600s;damit ESPHome v3 SSE nicht abreißt
Volume-Layout
/data/
├── config.json ← live config (zod-validated)
├── config.json.pre-v15 ← schema-bump backup
├── config.json.pre-v16 ← never overwritten
├── config.json.pre-v17 ← latest backup
└── memory/ ← optional auto-memory data
Image-Update
docker pull ghcr.io/itsweber/mesh:latest
docker stop itsweber-mesh && docker rm itsweber-mesh
docker run -d \
--name itsweber-mesh ... \
-e MESH_SESSION_SECRET="$MESH_SESSION_SECRET" \ # WIEDERVERWENDEN!
-v /pfad/mesh-data:/data \
ghcr.io/itsweber/mesh:latest
Rollback
docker run -d ... ghcr.io/itsweber/mesh:v1.5.0
cp /pfad/mesh-data/config.json.pre-v17 /pfad/mesh-data/config.json
Resource-Bedarf
- RAM: ~80–150 MB im Idle, Peaks bei großen Polls bis ~250 MB
- CPU: <1 % im Idle, Peaks bei Healthcheck-Sweeps
- Disk: Image ~150 MB, Config (
/data) ~100–500 KB