Files
teahub/pages/README.md
T

17 lines
1.2 KiB
Markdown

# 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`).