Hetzner + Traefik
Prerequisites
Section titled “Prerequisites”- Hetzner CAX11 (ARM64, 4GB RAM) — or any Linux VPS
- Docker + Docker Compose installed
- Traefik running with the
proxyexternal network - Domain DNS pointing to the server
Clone the repo on your server:
git clone https://github.com/lucasmella-stack/WCP.gitcd WCPEdit docker-compose.yml to set your domain:
labels: - "traefik.http.routers.wcp.rule=Host(`wcp.yourdomain.com`)"Start WCP:
docker compose up -ddocker-compose.yml breakdown
Section titled “docker-compose.yml breakdown”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:Traefik handles
Section titled “Traefik handles”- TLS: automatic Let’s Encrypt cert for your domain
- HTTPS redirect: HTTP → HTTPS
- Reverse proxy: routes
wcp.yourdomain.com→ container port 8000
Dashboard deployment
Section titled “Dashboard deployment”The React dashboard is a static build. Serve it via Nginx or Traefik file provider:
cd dashboard && npm run build# dist/ → serve with any static hostOr run the dashboard container separately pointing to the production API URL.
Updating
Section titled “Updating”docker compose pulldocker compose up -d