Files
oikos/infrastructure/topology.md
dtoro c6fedb38c1 Document teddycloud (pve_id 131) — closes the Week-3 drift finding
teddycloud was live on hubris (LXC 131, docker compose, TeddyCloud —
a Toniebox cloud reimplementation) but never made it into inventory.yaml.
Already referenced in passing by containers/132-rclone.md ("131 was
already taken by an undocumented teddycloud container") and
hosts/strong.md's migration changelog (a DHCP conflict fix), but no
inventory entry or doc page existed until oikos/drift.py's inventory-
vs-live check caught it.

Verified live via read-only SSH (pct config 131, pct exec 131 -- ...,
docker ps): hostname, static IP 192.168.8.150, 1 core/1GiB/16GiB rootfs,
Debian 12, runs via docker compose at /opt/teddycloud. No changes made
to the running container.

Also fixed: house's inventory notes claimed 192.168.8.212 is teddycloud's
current IP via DHCP — stale, teddycloud has a static IP now.

Flagged in the new container page: teddycloud has no Caddy forward-auth
gate, unlike sab.hubris.network on the same Caddyfile.

`python3 oikos/drift.py` no longer reports an inventory-vs-live finding
for pve_id 131. (A separate, pre-existing gap surfaced while verifying
this: rclone's own inventory.yaml block is missing pve_id/host/lan_ip —
out of scope here, flagging for a follow-up.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:06:26 +02:00

5.1 KiB

Topology (generated)

Source: inventory.yaml — 2 hypervisors, 20 LXCs, 2 VMs, 2 workstations, 18 services. Edge semantics: oikos/ontology.yaml. Operating model: OIKOS.md.

Compute & ingress

flowchart LR
    subgraph hubris_sub["hubris (Proxmox)"]
        trmnl["trmnl<br/>LXC 128<br/>trmnl-middleware<br/>192.168.8.211"]
        nfs_export["nfs-export<br/>LXC 102<br/>storage-export<br/>192.168.8.200"]
        paperless["paperless<br/>LXC 103<br/>document-archive<br/>192.168.8.130"]
        gitea["gitea<br/>LXC 104<br/>git-server<br/>192.168.8.121"]
        apps["apps<br/>LXC 105<br/>docker-apps<br/>192.168.8.205"]
        auth_outpost["auth-outpost<br/>LXC 106<br/>authentik-gateway<br/>192.168.8.6"]
        dns["dns<br/>LXC 107<br/>dns-server<br/>192.168.8.2"]
        nextcloud["nextcloud<br/>LXC 114<br/>file-sync<br/>192.168.8.224"]
        sophia["sophia<br/>LXC 119<br/>workshop<br/>192.168.8.109"]
        mule_images["mule-images<br/>LXC 120<br/>photo-management<br/>192.168.8.136"]
        caddy["caddy<br/>LXC 121<br/>reverse-proxy<br/>192.168.8.175"]
        teddycloud["teddycloud<br/>LXC 131<br/>teddycloud<br/>192.168.8.150"]
        zimaos["zimaos<br/>VM 100<br/>nas-frontend-eval<br/>192.168.8.195"]
        haos["haos<br/>VM 108<br/>home-automation<br/>192.168.8.101"]
    end
    subgraph strong_sub["strong (Proxmox)"]
        house["house<br/>LXC 129<br/>family-planner<br/>192.168.8.244"]
        jellyfin["jellyfin<br/>LXC 101<br/>media-server<br/>192.168.8.246"]
        elementsynapse["elementsynapse<br/>LXC 118<br/>matrix-server<br/>192.168.8.242"]
        arriman["arriman<br/>LXC 122<br/>arr-stack<br/>192.168.8.245"]
        grimmory["grimmory<br/>LXC 130<br/>book-library<br/>192.168.8.247"]
        seanime["seanime<br/>LXC 133<br/>anime-media-server<br/>192.168.8.248"]
        romm["romm<br/>LXC 134<br/>rom-manager<br/>192.168.8.249"]
    end
    rclone["rclone<br/>lxc<br/>backup"]
    republic_laptop([republic-laptop<br/>workstation<br/>primary-dev])
    mac_mini([mac-mini<br/>workstation<br/>dev<br/>192.168.178.182])
    netbird_vps[[netbird-vps<br/>external<br/>netbird-mgmt]]
    url_artifacto(["artifacto.hubris.network"]) -->|routes-to| apps
    url_authentik(["auth.hubris.network"]) -->|routes-to| netbird_vps
    url_gitea(["git.hubris.network"]) -->|routes-to| gitea
    url_homelab_mcp(["mcp.hubris.network"]) -->|routes-to| apps
    url_jellyfin(["media.hubris.network"]) -->|routes-to| jellyfin
    url_matrix(["matrix.hubris.network"]) -->|routes-to| elementsynapse
    url_nextcloud(["cloud.hubris.network"]) -->|routes-to| nextcloud
    url_paperless(["paperless.hubris.network"]) -->|routes-to| paperless
    url_photos(["photos.hubris.network"]) -->|routes-to| mule_images
    url_proxmox_ui(["proxmox.hubris.network"]) -->|routes-to| hubris_sub
    url_secrets_issuance(["secrets.hubris.network"]) -->|routes-to| apps
    url_teddycloud(["teddy.hubris.network"]) -->|routes-to| teddycloud
    url_trmnl(["trmnl.hubris.network"]) -->|routes-to| trmnl
    url_zimaos(["zimaos.hubris.network"]) -->|routes-to| zimaos

Storage (mounts)

flowchart LR
    mnt_library[("/mnt/library")]
    mnt_media_local[("/mnt/media_local")]
    mnt_media_local_anime[("/mnt/media_local/anime")]
    apps["apps"] -->|mounts| mnt_library
    arriman["arriman"] -->|mounts| mnt_media_local
    gitea["gitea"] -->|mounts| mnt_library
    grimmory["grimmory"] -->|mounts| mnt_media_local
    hubris["hubris"] -->|mounts| mnt_library
    jellyfin["jellyfin"] -->|mounts| mnt_media_local
    mule_images["mule-images"] -->|mounts| mnt_library
    nextcloud["nextcloud"] -->|mounts| mnt_library
    paperless["paperless"] -->|mounts| mnt_library
    romm["romm"] -->|mounts| mnt_media_local
    seanime["seanime"] -->|mounts| mnt_media_local_anime
    sophia["sophia"] -->|mounts| mnt_library
    teddycloud["teddycloud"] -->|mounts| mnt_library

Archaeology (destroyed nodes)

Node ID Destroyed Reason
plato 126 2026-06-28 notes workspace decommissioned; data retained at /mnt/library/documents/plato
claudio-bot 123 2026-06-04 replaced by Hermes Agent on mac-mini; monitoring moved to homelab-health-watchdog cron
mule-photos-new 127 2026-05-22 PhotoPrism test stack promoted to LXC 120 (Mulimage 2.0 merge)
heaper 116 2026-05-14 decommissioned; data retained at /mnt/library/heaper
syncthing 109 2026-05-14 decommissioned; library subtree was empty
seafile 125 2026-05-13 Seafile Pro evaluation rejected; files.hubris.network removed from caddy + dns
arr-yunohost 100 2026-04-28 migrated to docker stack on arriman (LXC 122)
flaresolverr 106 2026-04-28 folded into the arriman docker compose
marimo 107 2026-04-28 decommissioned
photoprism 110 2026-04-28 replaced by mule-images (LXC 120)
karakeep 111 2026-04-28 decommissioned
immich 112 2026-04-28 replaced by mule-images (LXC 120)
reticulum 115 2026-04-28 decommissioned