Two independent copies of the same law, and each page cited its own numbers. The finish rule — stop when independent sources agree, when the retrieval budget is spent, or when every claim is met; report gaps, never invent a source — stood in full in `agentic-search-best-practices.md` (with the loop caps: 20 steps, re-plan every 4) and again in `research-effectiveness.md` without them. The operational page owns it; the measurement page keeps the pointer and the one thing that is its business, which is that unbounded loops are why "infinite re-search" is a named failure mode. `tools/gitea/index.md` was a second copy of its own directory: an architecture table, a management command table, a data-persistence path table and a boot-persistence paragraph, every one of them a subset of `architecture.md`, `management.md` and `data-persistence.md` — verified line by line before cutting, including the two facts that looked unique to the index (the `dns_enabled: false` default network, the `/opt/gitea` leftover) and turn out to be owned upstream with more detail. The index now answers "which page owns my question" and gives three one-line orientation facts. Gitea's live version was re-read while I was in there: still 1.27.3. Refs #64
2.5 KiB
Gitea on dankclaw
Private Git hosting on dankclaw. Two quadlet-managed containers in the rootless podman session of user dank: Gitea and PostgreSQL, sharing a dedicated network unit. The former gitea-caddy container is retired — the canonical fleet Caddy (caddy.service, see /caddy/index.md) fronts gitea.franksdank.cloud; do not recreate the retired unit.
Host: dankclaw (192.168.0.143 LAN)
Config: ~/.config/containers/systemd/gitea-{postgres,server}.container + gitea.network
Local access: http://dankclaw:3000 — Gitea 1.27.3 (/api/v1/version, re-read 2026-10-21)
Domain: https://gitea.franksdank.cloud (live; served by fleet Caddy, DNS-01 TLS)
What lives where
| Question | Owner |
|---|---|
| Containers, unit names, network topology, ports, env wiring | architecture |
Start / stop / logs / upgrade; boot persistence (linger + [Install] WantedBy=default.target); incident log |
management |
Data layout on host bind mounts, UID ownership, backup and restore, the /opt/gitea leftover |
data-persistence |
| Token-based HTTP access from clients, the credential store, git 2.56 store-format trap | client-access |
One-line answers, so you know which row to open:
- Two containers (
gitea-server:3000/:2222,gitea-postgresinternal) plus a quadlet network unit, all in userdank's rootless session. - Data survives everything: host bind mounts under
/home/dank/Containers/gitea/, env file mode 0600; stopping a unit removes its container and the next start recreates it. - Boot: user linger for
dankplus[Install] WantedBy=default.targeton each unit — no login session required. The podman-compose stack had neither and did not survive a reboot (2026-08-16, written up in management).
This index used to carry its own copies of all four pages' tables. They went: a second copy of an operational table is a future contradiction, and every one of them was already a subset.
Repo Copies
The quadlet files and .env templates are tracked in the serverAppConfigs deploy repo; the
sibling vault page Infrastructure/Gitea.md (in ~/Projects/serverAppConfig/serverAppConfigs-docs/)
is the deploy-side source of truth. Secrets live only on the host under Containers/gitea/
(mode 0600), never in either docs tree.