Files
courtside/docs/DEPLOY-CHECKLIST.md
bkvargyasandClaude Fable 5.1 5ade592384 Courtside MVP: engine, web app, Docker + Cloudflare Tunnel deploy, docs
Tournament engine (pools, single/double elimination, standings with proper
tiebreaks, withdrawals, two-court queue with ETAs and alerts), a single-process
Node server with SQLite via node:sqlite and a WebSocket live board, organizer
desk, QR landing page that follows the tournament phase, Dockerfile and
compose with cloudflared, and documentation for deploying and running a day.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MB7nCCAscYsb3zzkT6LHZi
2026-09-03 20:31:46 +00:00

26 lines
1.6 KiB
Markdown

# Deploy checklist (for a person or an automated agent)
Follow in order. Full explanations are in [DEPLOY.md](DEPLOY.md).
1. Host has Docker with Compose v2: `docker compose version`.
2. `git clone https://gitea.cloudfreeiot.com/bkvargyas/courtside.git && cd courtside`
3. `cp .env.example .env` and set:
- `ADMIN_PASSWORD` — strong password for `/admin`.
- `SESSION_SECRET``openssl rand -hex 32`.
- `CLOUDFLARE_TUNNEL_TOKEN` — from Cloudflare Zero Trust → Networks → Tunnels → your tunnel → connector token. The tunnel's public hostname must route to **`http://app:3000`**.
- `TRUST_CF_ACCESS` — leave `false` unless an Access policy protects `/admin` on that hostname.
4. `docker compose up -d --build`
5. Verify:
- `docker compose ps``app` healthy, `cloudflared` running.
- `docker compose exec app wget -qO- http://127.0.0.1:3000/healthz``{"ok":true,...}`.
- `docker compose logs cloudflared | grep -i "registered tunnel connection"`.
- `curl -sI https://<hostname>/``200`.
- `https://<hostname>/admin` shows the login page and accepts `ADMIN_PASSWORD`.
6. Optional: seed the demo tournament to give the site something to show:
`docker compose stop app && docker compose run --rm app node scripts/seed-demo.js && docker compose start app`
then open `https://<hostname>/t/demo-labor-day-2s`. Delete it later from the desk's Danger zone.
7. Back up: the named volume `courtside-data` (one SQLite file). See DEPLOY.md §5.
8. Update later: `git pull && docker compose up -d --build`.
Nothing else is required. No host ports are published; no reverse proxy, TLS certificate, or database server is involved.