Problem: node and cross-cutting narratives lived at the repo root
(containers/, vms/, infrastructure/, host .md files), interleaved with the
machine-readable substrate.
Change:
- Move containers/ -> knowledge/wiki/containers/, vms/ -> knowledge/wiki/vms/,
infrastructure/ -> knowledge/wiki/infrastructure/, hosts/{hubris,strong}.md ->
knowledge/wiki/hosts/, infrastructure/references/ -> knowledge/sources/references/,
GLOSSARY.md -> knowledge/GLOSSARY.md.
- Add knowledge/{index.md,log.md,sources/index.md} scaffolding.
- Rewrite all relative links repo-wide via a path-resolving mapper (inbound +
outbound + between-moved-files), including .hermes/, runbooks, operations,
investigations, plans, README, AGENTS.
- Repoint inventory.yaml doc_page fields and regenerate hosts/*.yaml (which
embed doc_page); update oikos/gen-topology.py output path, candidate doc
paths, and footer links; update code-comment doc paths.
Substrate untouched in place: inventory.yaml, hosts/*.yaml (regenerated,
idempotent), oikos/ code, mcp/, secrets/, bin/.
Verification:
- Logical broken-link set identical to pre-move baseline (net 128 -> 127; the
topology regen fixed one, introduced none). Remaining are pre-existing refs
to destroyed/archived nodes, out of scope for this move.
- gen-topology.py --check exit 0 (in sync); cards carry knowledge/wiki/ doc paths.
- build_host_files.py idempotent; all inventory doc_page targets resolve.
- MCP contract verified: get_page/search_docs/get_changelog resolve moved pages.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.1 KiB
104 — gitea
Self-hosted git server. Source of truth for all dtoro/* repositories that auto-deploy across the lab.
At a glance
- Hostname:
gitea - IP:
192.168.8.121 - Privilege: privileged
- Resources: 1 core / 1 GiB RAM / 8 GiB rootfs
- Mounts:
/mnt/library↔/mnt/library(under/mnt/library/repos, owner UID 102 / GID 105 — don't touch from other containers) - Public hostname:
git.hubris.network→ caddy →:3000 - Version: 1.25.4 (last verified)
Service / port map
| Service | Listen | Notes |
|---|---|---|
| gitea | :3000 |
HTTP web + git over HTTP |
| gitea SSH | :22 |
git over SSH |
gitea-deploy-webhook |
127.0.0.1:9797 |
Receives push events for the customizations repo |
Customizations
/var/lib/gitea/custom is a checkout of dtoro/gitea-customizations.
templates/custom/footer.tmplinjects:- Online3DViewer v0.18.0 (vendored under
public/assets/o3dv/) for inline 3D preview of CAD raw-file links: 3dm, 3ds, 3mf, amf, bim, brep, dae, fbx, fcstd, glb, gltf, ifc, igs, iges, stp, step, stl, obj, off, ply, wrl. - PlantUML client JS (vanilla, vendored from
gitea.com/davidsvantesson/plantuml-code-highlight). Browser callshttps://git.hubris.network/_plantuml/img/<encoded>— caddyhandle_path /_plantuml/*rewrites and proxies to the PlantUML server on apps (105):8079.
- Online3DViewer v0.18.0 (vendored under
home.tmplis the anonymous landing page (Homesauce hero + sign-in/explore buttons).- O3DV binary assets are not tracked —
deploy.shfetches them on first run.
Auto-deploy
Push to dtoro/gitea-customizations master → gitea webhook → http://127.0.0.1:9797/deploy (loopback) → gitea-deploy-webhook.service validates HMAC against /etc/gitea-deploy/secret → runs /opt/gitea-customizations/deploy.sh. Then systemctl restart gitea if templates changed.
app.ini [webhook] ALLOWED_HOST_LIST includes 127.0.0.1, 192.168.8.175, 192.168.8.205, 192.168.8.230, 192.168.8.136, 192.168.8.77 — every webhook target across the lab. Don't strip these when editing app.ini. See auto-deploy for the full list.
Git creds for the deploy service: /etc/gitea-deploy/git-credentials (mode 600), referenced via credential.helper = store --file=/etc/gitea-deploy/git-credentials in the repo's .git/config (because ProtectHome=true blocks /root).
DNS workaround
LXC has /etc/hosts override mapping auth.hubris.network → 192.168.8.175 (router DNS resolves the public IONOS A record, which is a dead end for LAN clients — see DNS). Belt-and-suspenders systemd unit hubris-hosts-override.service re-applies it idempotently. Override line is outside the # --- BEGIN PVE --- markers (Proxmox rewrites inside).
Related
Changelog
2026-06-24 — terminalito deploy webhook (id 12)
Push webhook on dtoro/terminalito → http://192.168.8.211:9797/deploy (trmnl (128)); app.ini ALLOWED_HOST_LIST extended with 192.168.8.211. See auto-deploy.
2026-04-28 — wiki entry created
Initial documentation.
2026-04-22 — app.ini ALLOWED_HOST_LIST extended for Artifacto webhook
Added 192.168.8.205. See Artifacto auto-deploy on apps (105).
2026-04-21 — /etc/hosts override for auth.hubris.network added
For OIDC integration with authentik (124). Outside the PVE markers, with a hubris-hosts-override.service for idempotency.
2026-04-20 — gitea customizations + auto-deploy pipeline shipped
dtoro/gitea-customizations repo created; webhook receiver at loopback :9797 validates HMAC and runs deploy.sh. CAD and PlantUML loaders live in footer.tmpl.