VPS Production¶
Reference deployment: https://gameforge.website on a Linux VPS with Docker.
DNS¶
- Apex
@→ AVPS_IP www→ AVPS_IPor CNAME →gameforge.website(not to a raw IP)
Stack¶
Or on the server after git pull:
The remote script:
- Takes a flock
- Pulls
main - Starts infra + migrate
- Rolling
upof api/worker/frontend/caddy/backup - Smokes
https://$DOMAIN/and/api/v1/health/ready
Caddy¶
- Automatic HTTPS (Let’s Encrypt)
- Redirects HTTP and
wwwto HTTPS apex - Proxies
/s3/*→ MinIO with Host preserved for SigV4
Public assets¶
S3_ENDPOINT=http://minio:9000
S3_PUBLIC_ENDPOINT=https://gameforge.website/s3
S3_PUBLIC_URL=https://gameforge.website/s3/gamedev-assets
Presign uses the internal endpoint; URLs are rewritten for the browser.
CI deploy¶
GitHub Actions workflow Deploy runs only after a successful CI on main (workflow_run), or via workflow_dispatch. Concurrency does not cancel in-progress deploys.