# 2026-03-15 – Dev routing pivot ## Summary Initial attempt exposed dev IDEs via Cloudflare DNS, Technitium DNS, and Traefik dynamic routes. Each dev container received its own subdomain. Example: `dev-6062.zerolaghub.dev` --- ## What Was Confirmed Working - Code-server artifact fixed — compiled release on `zlh-artifacts` - Code-server installs and launches inside dev containers - Process binds to `0.0.0.0:6000` - Traefik loaded the dynamic config file - Traefik router and service were created - API can write remote Traefik config via SSH service account - API status endpoint added — frontend host/console state now updates correctly Observed process shape: ```bash /opt/zlh/services/code-server/lib/node /opt/zlh/services/code-server \ --bind-addr 0.0.0.0:6000 \ --auth password \ /home/dev/workspace ``` Note: `ss` shows process as `node` — expected, code-server runs on Node internally. --- ## What Failed External browser access to `https://dev-6062.zerolaghub.dev` remained broken. Issues encountered: - TLS negotiation failures - Traefik routing complexity - DNS automation overhead - per-container subdomain management - debugging difficulty across Cloudflare → Traefik → container chain --- ## Decision Traefik/DNS approach abandoned. Dev IDE routing moving to **API proxy architecture**. New model: ``` Browser ↓ Portal ↓ API proxy (/dev//ide) ↓ container:6000 ``` Advantages: - eliminates DNS automation - removes Traefik dependency for dev containers - simplifies provisioning - portal JWT controls access - no per-container TLS Implementation requirements: - `http-proxy-middleware` with `ws: true` - `server.on('upgrade', proxy.upgrade)` — required for WebSocket - code-server launch args: `--base-path /dev//ide --auth none` - API verifies container ownership before proxying --- ## Code to Remove from API These code paths are no longer part of the architecture: - `createDevRouting()` - proxy SSH writes for Traefik dynamic files - Traefik dynamic file creation on provisioning - Cloudflare/Technitium DNS record creation for dev containers Game publish flow must remain untouched — only dev routing code is removed. --- ## Additional Dev Access Path Headscale/Tailscale will be added as an advanced option for developers who want their local environment (SSH, VS Code Remote, local tools). Headscale server expected on `zlh-ctl` — status to be confirmed. Constraints: - no exit nodes - `magic_dns: false` - no DNS takeover on customer machine