Nginx reverse proxy to Hetzner Object Storage with local caching. Upload builds with `s3cmd`, testers access them at `https://builds.kill.systems/<version>/`.
## Setup
### 1. Create a public bucket for builds
In Hetzner Console → Object Storage, create a new bucket (e.g. `kill-builds`). Set visibility to **public** so Nginx can proxy to it without authentication.
Generate S3 credentials if you haven't already (Security → S3 Credentials).
First request fetches from Object Storage and caches locally. Subsequent requests are served from the Nginx cache. The `X-Cache-Status` response header shows `HIT` or `MISS`.
Since each build has a unique path (the git hash), cache invalidation is never needed — new builds go to new paths.