Auch verfügbar in: DE Deutsch

Docker Installation

Inhalt

For the quick version: Quick Start.

docker run vs docker-compose

Use case Recommendation
Quick test docker run
Permanent installation docker-compose
On Unraid Community Apps

Full docker-compose.yml

services:
  mesh:
    image: ghcr.io/itsweber-official/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"   # for low-RAM hosts
    volumes:
      - ./mesh-data:/data
      # Optional — Unraid GraphQL socket for 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 itself does not handle TLS. Behind NPM:

  1. Forward stream to http://<container-ip>:3000
  2. Wildcard domain e.g. mesh.yourdomain.com
  3. Enable Force-SSL, HTTP → HTTPS redirect
  4. Block for WebSockets / SSE: proxy_read_timeout 3600s; so ESPHome v3 SSE does not drop

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-official/itsweber-mesh:latest
docker stop itsweber-mesh && docker rm itsweber-mesh
docker run -d \
  --name itsweber-mesh ... \
  -e MESH_SESSION_SECRET="$MESH_SESSION_SECRET" \   # REUSE!
  -v /path/mesh-data:/data \
  ghcr.io/itsweber-official/itsweber-mesh:latest

Rollback


docker run -d ... ghcr.io/itsweber-official/itsweber-mesh:v1.5.0

cp /path/mesh-data/config.json.pre-v17 /path/mesh-data/config.json

Resource requirements

  • RAM: ~80–150 MB idle, peaks up to ~250 MB during large polls
  • CPU: <1 % idle, peaks during healthcheck sweeps
  • Disk: image ~150 MB, config (/data) ~100–500 KB