Files
command-center/omp-docs/tools/gitea/index.md
T
Frank 62a70caebb docs(okf): 53 Obsidian wikilinks become OKF links
`[[page|Label]]` is Obsidian syntax, not OKF. `kb-lint` resolves it Obsidian-style — by
filename, anywhere in the bundle — so it has never tripped the link gate, while every other
consumer of the bundle (an OKF renderer, a Gitea wiki export, `grep` for reachability) sees
bracketed text where a link should be. That is how two generated pages ended up with no
inbound link at all and nobody noticed: the my-first link census of the bundle reported them
as orphans because their only inbound edges were wikilinks.

Mechanical conversion, 52 links across 17 pages, each resolved against the same page set
`kb-lint` uses: an explicit `|Label` is kept verbatim, an unlabelled link takes the target's
frontmatter `title`. Targets are emitted bundle-absolute (`/tools/niri/tips.md`), the form
the spec recommends and the form 99 existing links in this bundle already use.

Two links were `[[index]]`, which resolves by filename to 21 pages — the ambiguity that
filename-resolution invites. Both meant their own directory's index, so both are now written
out in full: `/tools/gitea/index.md`, `/tools/niri/index.md`.

The linter still tolerates wikilinks; whether it should reject them outright is an open
question on #64, because that would replace the two tests pinning today's tolerance.

Refs #64
2026-10-21 02:11:56 -07:00

3.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, probed 2026-10-19) 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