Siavash Sameni
47030a3b29
fix: Caddy host network mode for real client IPs
...
- Caddy now uses network_mode: host (sees real IPv4/IPv6)
- All backend services on fixed IPs (172.28.0.10/20/30)
- Caddyfile uses IPs instead of Docker DNS names
- /myip now returns actual client IP, not Docker gateway
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 11:19:23 +04:00
Siavash Sameni
cac812665c
fix: Caddyfile adds X-Real-IP header + trusted_proxies config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 11:12:57 +04:00
Siavash Sameni
11133cf968
fix: use fixed IP for wzp-relay (wzp-web can't resolve hostnames)
...
wzp-web --relay only accepts IP:port, not Docker hostnames.
Fixed IP 172.28.0.10 on backend network with explicit subnet.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 11:03:43 +04:00
Siavash Sameni
8b00144b2f
fix: force IPv4 in Caddy build (Docker lacks IPv6 during build)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:56:53 +04:00
Siavash Sameni
bf9594f1de
fix: use debian:trixie-slim runtime (match rust:latest glibc)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:54:44 +04:00
Siavash Sameni
366ab30988
fix: install cmake in wzp Docker build (opus codec dependency)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:41:57 +04:00
Siavash Sameni
fb29eb0fce
fix: build WASM before server (include_str! needs wasm-pkg)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:31:31 +04:00
Siavash Sameni
33c39c6541
deploy: add deploy-voip.sh + fix Rust version (use latest)
...
- scripts/deploy-voip.sh: full Hetzner cx23 + Docker + CF DNS deploy
--create: provision VPS, install Docker
--dns: update CF A + AAAA records
--deploy: upload source, docker compose up
--test: 6 HTTP checks + TLS + IPv6
--all: end-to-end in one command
- Dockerfiles: use rust:latest (time crate needs 1.88+)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:26:46 +04:00
Siavash Sameni
3d387e5821
fix: copy warzone-protocol into wzp build (deps/featherchat path)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:21:40 +04:00
Siavash Sameni
38f992c284
fix: bump Docker Rust to 1.85 (edition 2024 support for wzp-proto)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:19:50 +04:00
Siavash Sameni
59d68b2a5e
fix: build Caddy with CF plugin from source (ARM64 compat)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:14:33 +04:00
Siavash Sameni
f33ac1cad8
deploy: Docker Compose stack with Caddy + Cloudflare TLS
...
Full production stack via docker compose:
- Caddy reverse proxy with Cloudflare DNS-01 TLS certs
- warzone-server (featherChat API + web UI)
- wzp-relay (QUIC audio SFU)
- wzp-web (browser WS ↔ QUIC bridge)
Architecture:
Internet → Caddy (443/TLS) → voip.manko.yoga
/* → warzone-server:7700
/audio/* → wzp-web:8080
Files:
- docker-compose.yml: main stack (4 services)
- docker-compose.ipv6.yml: IPv6 overlay
- Caddyfile: Cloudflare DNS challenge + reverse proxy
- Dockerfile.server: featherChat multi-stage build
- Dockerfile.wzp: wzp-relay + wzp-web multi-stage build
- .env.example: DNS records for dev/staging/prod
- test-stack.sh: smoke test (8 checks)
- .dockerignore: excludes target/, .git/, etc.
Deployment targets:
dev: 172.16.81.135
ipv6: 2a0d:3344:692c:2500:14f2:5885:d73c:b0a1
prod: 63.250.54.239 / 2602:ff16:9:0:1:3d9:0:1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 10:00:47 +04:00