Files
linearvoid/docs/operations/cloudflare-pages-setup.md
T

2.8 KiB

Cloudflare Pages & Workers Setup — Linear Void

Linear Void uses two Cloudflare products:

Product Purpose What
Pages Static SPA hosting Vite-built frontend (frontend/dist) deployed via Git integration or Direct Upload
Workers Edge cache logic infrastructure/cloudflare/worker.js — adds immutable cache headers to HLS segments

Both are managed under Workers & Pages in the Cloudflare dashboard.

Dashboard URLs

Resource URL
Workers & Pages overview https://dash.cloudflare.com/{accountId}/workers-and-pages
Worker: linearvoid https://dash.cloudflare.com/{accountId}/workers/services/view/linearvoid/production/settings
Pages project https://dash.cloudflare.com/{accountId}/pages/view/linearvoid
API tokens https://dash.cloudflare.com/profile/api-tokens

1) Worker: linearvoid (edge cache headers)

The Worker at infrastructure/cloudflare/worker.js runs on the linearvoid Workers service. It intercepts requests and adds immutable Cache-Control headers to .m4s segment files.

Deploy via Wrangler CLI:

npx wrangler deploy infrastructure/cloudflare/worker.js

Or paste into the Workers dashboard at the URL above (Quick Edit).

2) Pages: Static frontend

Two approaches — pick one:

Connect the Gitea repository directly in Cloudflare Pages:

  1. Pages → Create a project → Connect to Git
  2. Link git.allucanget.biz/zwitschi/linearvoid
  3. Build command: cd frontend && npm run build
  4. Output directory: frontend/dist
  5. Add custom domain: linearvoid.tv

Cloudflare handles builds and deploys automatically on push.

Option B: Direct Upload via Gitea Actions

Use .gitea/workflows/pages-deploy.yml to build in Gitea Actions and upload via the Cloudflare API.

See gitea-cloudflare-pages.md for the workflow.

3) Custom domains

  • linearvoid.tv → Pages project
  • www.linearvoid.tv → redirect to linearvoid.tv
  • media.linearvoid.tv → R2 bucket (separate; not Pages)