Skip to content

Hetzner + Traefik

  • Hetzner CAX11 (ARM64, 4GB RAM) — or any Linux VPS
  • Docker + Docker Compose installed
  • Traefik running with the proxy external network
  • Domain DNS pointing to the server

Clone the repo on your server:

Terminal window
git clone https://github.com/lucasmella-stack/WCP.git
cd WCP

Edit docker-compose.yml to set your domain:

labels:
- "traefik.http.routers.wcp.rule=Host(`wcp.yourdomain.com`)"

Start WCP:

Terminal window
docker compose up -d
services:
wcp:
image: ghcr.io/lucasmella-stack/wcp:latest
restart: unless-stopped
volumes:
- wcp_data:/data
environment:
WCP_DB_PATH: /data/sync.db
WCP_CONFIG_PATH: /data/config.json
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.wcp.rule=Host(`wcp.yourdomain.com`)"
- "traefik.http.routers.wcp.entrypoints=websecure"
- "traefik.http.routers.wcp.tls.certresolver=letsencrypt"
- "traefik.http.services.wcp.loadbalancer.server.port=8000"
networks:
proxy:
external: true
volumes:
wcp_data:
  • TLS: automatic Let’s Encrypt cert for your domain
  • HTTPS redirect: HTTP → HTTPS
  • Reverse proxy: routes wcp.yourdomain.com → container port 8000

The React dashboard is a static build. Serve it via Nginx or Traefik file provider:

Terminal window
cd dashboard && npm run build
# dist/ → serve with any static host

Or run the dashboard container separately pointing to the production API URL.

Terminal window
docker compose pull
docker compose up -d