Uncommitted machine/session edits (live config, models, docs drift) were blocking the merge of origin/main. Committed as-is to preserve them; the merge that follows resolves overlapping prose files toward upstream canonical, with local variants recoverable from this commit. Pre-merge copies also in .AGENTTRASH/pre-merge-2026-10-18/.
3.9 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 (verified 2026-10-18)
Domain: https://gitea.franksdank.cloud (live; served by fleet Caddy, DNS-01 TLS)
Architecture
| Container | Unit | Port | Purpose |
|---|---|---|---|
gitea-server |
gitea-server.service |
3000 (HTTP), 2222 (SSH) | Git web UI, API, SSH daemon |
gitea-postgres |
gitea-postgres.service |
5432 (internal) | Database |
| (network) | gitea-network.service |
— | quadlet gitea.network bring-up |
The containers share the private network systemd-gitea (quadlet gitea.network, DNS enabled). The automatic podman default network has DNS disabled; do not run the stack on it.
Management
All commands run as dank on dankclaw.
| Action | Command |
|---|---|
| Start all | systemctl --user start gitea-postgres gitea-server |
| Stop all | systemctl --user stop gitea-server gitea-postgres |
| Restart Gitea only | systemctl --user restart gitea-server |
| Follow logs | podman logs -f gitea-server or journalctl --user -u gitea-server -f |
| Check status | systemctl --user status gitea-postgres gitea-server |
Data Persistence
All data lives on host bind mounts under /home/dank/Containers/gitea/ (fleet storage standard since 2026-09-01; verified live 2026-10-18). Containers are ephemeral. Stopping a quadlet unit removes its container; the next start recreates it. Volumes survive. The old /opt/gitea/ tree remains on disk as a leftover — do not use it.
| Path | Contents |
|---|---|
/home/dank/Containers/gitea/data/ |
Git repositories, app.ini, attachments |
/home/dank/Containers/gitea/postgres/ |
PostgreSQL data files |
/home/dank/Containers/gitea/env |
EnvironmentFile (mode 0600; GITEA_DB_PASSWORD) |
See data-persistence for backup and restore.
Boot Persistence
User-level linger is enabled for dank. The units start at host boot without a login. Each unit carries [Install] WantedBy=default.target; the podman generator applies it. The legacy podman-compose stack had no units and did not survive reboots (incident 2026-08-16).
See management for boot persistence details and troubleshooting.
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.
See Also
-
architecture — network topology and ports
-
management — operations, upgrades, backups, incident log
-
client-access — client-side tokens, the credential store, and the git 2.56 store-format trap
-
data-persistence — volumes and backup strategy
-
containers — quadlet reference
-
Gitea Architecture — Gitea container architecture, network topology, and Caddy reverse proxy configuration on dankclaw.
-
Gitea Data Persistence — Gitea data persistence, volume mounts, ownership, and backup strategy on dankclaw.
-
Gitea Management — Gitea container management, boot persistence, troubleshooting, upgrades, and backup procedures on dankclaw.
-
Gitea Client Access — Token-based HTTP access from client workstations, credential store layout, and verification.
-