orchard
mirrorEvery site I host, in one repo, along with the Cloudflare Tunnel and Caddy that front them. It's all Go, Vite, and SQLite, and it runs on a desktop at home with nothing listening on an inbound port.
blogbuncaddycloudflare-tunneldockergogolanghomelabhtml-templatemonorepoself-hostedseosqlitestatic-sitetypstuptime-monitoringviteweb-analytics
1# `make env` from the repo root turns this into a .env. Compose reads that .env
2# from the project directory on its own, so nothing has to be exported in the
3# shell or forwarded through the Makefile.
4#
5# .env is gitignored by bare name at any depth. This is a public repository:
6# verify with `git check-ignore -v sites/auth.bythewood.me/.env`.
7#
8# There is no password here. This site has no password to have: signing in is a
9# code pushed to a phone, and the break-glass is a recovery code that only ever
10# exists as an Argon2id hash on disk.
11
12# Write-only ntfy token for the auth topic, minted by `make ntfy-token`. It is
13# its own token and its own topic, because the one in status' and logging' .env
14# files can publish to their topics, and a copy of either would otherwise be
15# able to mint its own login codes.
16#
17# Unset means codes cannot be delivered and only recovery codes work. The site
18# still starts, since refusing to would turn a missing alert credential into
19# being locked out of every site at once.
20AUTH_NTFY_TOKEN=
21
22# The cookie domain, which is what makes one login cover every bythewood.me
23# host. Leave it empty for development on localhost, where a cookie scoped to
24# the parent domain is simply never sent and the login appears to work and then
25# does not stick.
26SESSION_DOMAIN=.bythewood.me