1.2 KiB
Teahub pages (green-tea-pages)
The pages convention for orgs on prod: an org's public site repo is served at its domain. PAGES_SITES in
fly.toml maps hostnames to org/site. The server clones each repo over https (no token), serves static files
(directory → index.html, missing → 404.html), and re-pulls every 5 minutes or on POST /_hook/<org>/site
(a Gitea webhook on the repo, push events, no secret: the hook only triggers a pull of public content).
Adding a site: a line in PAGES_SITES + fly deploy (operator lane), fly certs add <host>, the _acme-challenge
CNAME, then A/AAAA to the app's IPs (fly ips list), and a push webhook on the site repo.
Live: persimmons.app → persimmons/app (repo root, as its pages/page.conf says), yolopreneur.lol and
*.yolopreneur.lol → teahubxyz/time#gh-pages/ventures (PAGES_WILDCARDS). A site can be any public repo,
org/repo#branch/subdir; it doesn't have to be called site. A product with a backend serves its own pages
instead (phast.app is phast-app), so there is never a copy to drift.
Files without an extension that start with <!doctype html or <html are served as HTML (/signin).