# Deployment ## How It Works 1. Push to `main` → GitHub Actions builds frontend + deploys to VPS (217.160.174.2) 2. App runs as systemd service `jury-voting` on port 3002 3. Caddy (managed via NoteGraph/Caddyfile) proxies `unikat.andreknie.de` → `localhost:3002` 4. Score data persists in `/opt/jury-voting/server/data/session.json` ## DNS Setup (one-time) Add an A record: `unikat.andreknie.de` → `217.160.174.2` Caddy handles HTTPS automatically via Let's Encrypt. ## GitHub Secret - `DEPLOY_SSH_KEY` — SSH key for root@217.160.174.2 (already configured) ## URLs - **Login:** `https://unikat.andreknie.de/?token=UNIKAT_jury` - **Results (beamer):** `https://unikat.andreknie.de/results` - **Admin:** `https://unikat.andreknie.de/admin` - **Password:** `UNIKAT_jury` ## Future: Move to d-hive.de When ready to move to `unikat.d-hive.de`: 1. Add DNS A record for `unikat.d-hive.de` → VPS IP 2. Add `unikat.d-hive.de` block to Caddyfile (same as `unikat.andreknie.de`) ## Manual Operations (on VPS) ```bash # Check service status systemctl status jury-voting # View logs journalctl -u jury-voting -f # Restart systemctl restart jury-voting # Reset all scores (start fresh) rm /opt/jury-voting/server/data/session.json systemctl restart jury-voting ```