The vault was 155 pages / 31,210 lines, most of it measurement ledgers for payloads that no longer run. A throughput figure for a runtime nobody operates is not a record: AI moves faster than the vault, so the number is wrong before anyone reads it, and a wrong number in a runbook gets believed. Per the new purpose test in `AGENTS.md` → *Documentation Policy*, it is destroyed. Gone (`.AGENTTRASH/20261019-destruction/`, KILL-LIST.txt is the manifest): - the `frank-medium` endpoint and its five era pages, `frank-npu`, FastFlowLM, the ikllama/kingjones/dealign/frank-redo eras, the ling/swift15/freetoken/ubatch campaign pages, qwen3.8 spec-matrix and strix-optimizations, the two "Running Qwen3.6 …" pages; - the whole `Pipeline Parallelism/` folder (no live script passes a pipeline flag) and the multi-device/x4-pair/hybrid/offload experiment pages; - every vLLM page — no vLLM endpoint exists on this fleet; - `LLM/deployment.md` (`Architecture/Deployment Flow.md` is the test-referenced owner) and the external surveys (SGLang, Lemonade, llama.cpp forks/diff, self-hosted app census, the TTS survey) that were obsolete by construction; - `log.md`, 2,380 lines. Git holds the chronology; a causal law belongs to the page that owns the thing it governs, never to a diary. Survivors: 101 pages, 17,542 lines, 0 OKF violations, 0 unresolved links. Eras tables keep the window, payload, runtime, reason and rollback pointer; the rate columns are blanked. The live shapes stay verbatim — those numbers are what the deployer and `models.yml` consume.
6.7 KiB
type, description, tags, timestamp
| type | description | tags | timestamp | ||
|---|---|---|---|---|---|
| reference | PostgreSQL is the database backend for Gitea. |
|
2026-09-03 |
Postgres
PostgreSQL is the database backend for two separate services on this host:
Gitea (gitea-postgres) and Authentik (authentik-postgres). They are two
independent clusters — two containers, two data dirs, two podman networks — and each
holds only its own app's data; neither is a shared instance. Gitea's DB holds the
repository metadata, users, and issue data; Authentik's holds the IdP objects.
Host: Dankclaw — Docs: https://www.postgresql.org/docs
Facts
| Item | gitea-postgres |
authentik-postgres |
|---|---|---|
| Image | docker.io/library/postgres:16-alpine (dankclaw/gitea/quadlet/gitea-postgres.container:18) |
docker.io/library/postgres:16-alpine (dankclaw/authentik/quadlet/authentik-postgres.container:17) |
| Port | 5432, container-internal — no PublishPort; a TCP probe of 192.168.0.143:5432 is refused (ss -ltn + probe 2026-10-18) |
same: nothing published, 5432 refused on the LAN IP (2026-10-18) |
| Network | systemd-gitea, 10.89.0.0/24 (dankclaw/gitea/quadlet/gitea.network, podman network inspect systemd-gitea 2026-10-18) |
dankclaw_default, 10.89.1.0/24 (authentik-postgres.container:18; the compose-stack bridge shared with Authentik/Seerr/Grafana) |
| Data volume | /home/dank/Containers/gitea/postgres:/var/lib/postgresql/data (gitea-postgres.container:23) |
/home/dank/Containers/authentik/postgres:/var/lib/postgresql/data (authentik-postgres.container:23) |
| Healthcheck | none — the unit carries no HealthCmd, so podman ps reports Up with no health state (2026-10-18) |
pg_isready -d authentik -U authentik every 30 s, 5 retries, 20 s start (authentik-postgres.container:29-33); container reports healthy (2026-10-18) |
| Secret source | /home/dank/Containers/gitea/env (mode 0600, ls -l 2026-10-18) |
/home/dank/serverAppConfigs/dankclaw/.env (authentik-postgres.container:19) |
shared/homepage/services.json reflects both: its Postgres card reads "Authentik's
and Gitea's databases (Dankclaw). Not probeable: 5432 is container-internal."
Configuration
Retired compose-era definition (kept for the history below — the live stack is
Quadlet, and this service ran from compose.yaml before the 2026 boot-persistence
cutover). Note the data path in it (/opt/gitea/data/gitea-postgres) no longer
exists; nothing deploys this block today.
services:
postgres:
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: gitea
POSTGRES_PASSWORD: "${GITEA_DB_PASSWORD}"
POSTGRES_DB: gitea
volumes:
- /opt/gitea/data/gitea-postgres:/var/lib/postgresql/data
Gitea Connection
Gitea reaches its database over the systemd-gitea network. The live quadlet unit
dankclaw/gitea/quadlet/gitea-server.container:24-29 sets exactly these variables
(Environment=DATABASE_*), so the compose-era block below is equivalent in keys:
environment:
DATABASE_TYPE: postgres
DATABASE_HOST: gitea-postgres
DATABASE_NAME: gitea
DATABASE_USER: gitea
DATABASE_PASSWD: "${GITEA_DB_PASSWORD}"
The live app.ini on the host overrides env vars: its [database] stanza carries
HOST = gitea-postgres:5432, NAME = gitea, USER = gitea
(/home/dank/Containers/gitea/data/gitea/conf/app.ini:27-33, 2026-10-18). When you
rename the database container, update that [database] HOST line. See Gitea
Gotchas.
Layout (current)
Both live units mount their data under /home/dank/Containers:
gitea-postgres→/home/dank/Containers/gitea/postgres:/var/lib/postgresql/dataauthentik-postgres→/home/dank/Containers/authentik/postgres:/var/lib/postgresql/data
Both directories exist on the host with mode 0700 and owner uid 100069 (the mapped
postgres uid of the rootless namespace) — ls -ld 2026-10-18. The old
/opt/gitea/data/gitea-postgres compose-era path is gone. Secrets come from
host-local env files (/home/dank/Containers/gitea/env, 0600;
/home/dank/serverAppConfigs/dankclaw/.env) via EnvironmentFile=; the passwords
never enter this repo. See Gitea and Authentik.
Boot persistence (Quadlet)
Both units carry Restart=always (gitea-postgres.container:28
authentik-postgres.container:38) and [Install] WantedBy=default.target
(gitea-postgres.container:31, authentik-postgres.container:41-42), are installed
under ~/.config/containers/systemd/, and report generated / active with
Linger=yes on the host (2026-10-18), so both come back at boot.
Healthcheck
Only authentik-postgres has one. Its quadlet runs bare argv, not a shell string,
because the generator space-splits HealthCmd (the quoted /bin/sh -c "…" form
arrived mangled and reported a false-negative unhealthy forever — see the comment
in dankclaw/authentik/quadlet/authentik-postgres.container:24-33):
HealthCmd=pg_isready -d authentik -U authentik
HealthInterval=30s
gitea-postgres has no HealthCmd; the probe below is the compose-era snippet,
kept as the recipe to add if Gitea's DB ever needs one. Until it is in the unit,
judge gitea-postgres by podman ps state and Gitea's own health.
healthcheck:
test: ["CMD-SHELL", "pg_isready -U gitea"]
interval: 30s
timeout: 5s
retries: 3
Gotchas
- Two clusters, not one:
gitea-postgresserves only Gitea andauthentik-postgresonly Authentik. They are on different bridges (systemd-gitea10.89.0.0/24 vsdankclaw_default10.89.1.0/24,podman network inspect2026-10-18), so neither can reach the other's data by name. Any "one Postgres serves everything" reading of this page is wrong. - The database password must match between the
postgrescontainer and Gitea'sDATABASE_PASSWD; both come from the same env-file variable (GITEA_DB_PASSWORD, expanded by systemd from/home/dank/Containers/gitea/env). - Do not change the Gitea
SECRET_KEYorINTERNAL_TOKENafter migration — encrypted data becomes unreadable. - Back up with
pg_dump; see Gitea (knowledge base).
See Also
Citations
dankclaw/gitea/quadlet/gitea-postgres.container,dankclaw/gitea/quadlet/gitea.network,dankclaw/gitea/quadlet/gitea-server.containerdankclaw/authentik/quadlet/authentik-postgres.containershared/homepage/services.json(thePostgrescard)- Host evidence 2026-10-18:
podman ps,podman inspect,podman network inspect systemd-gitea dankclaw_default,ss -ltn, TCP probe of192.168.0.143:5432,systemctl --user is-enabled/is-active gitea-postgres authentik-postgres