Files
oikos/containers/131-teddycloud.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

3.0 KiB

131 — teddycloud

Self-hosted TeddyCloud, a reimplementation of the Toniebox cloud backend — lets Tonie figurines play custom/ripped audio content against a local server instead of the official cloud.

Predates the client-enrollment convention entirely; nobody wrote it down. Found and documented on 2026-07-06 after Oikos's drift detector (oikos/drift.py) flagged pve_id 131 as live on hubris (via pct list) with no inventory.yaml entry — see OIKOS.md's Week 3 build-status note. containers/132-rclone.md had already mentioned it in passing ("LXC 131 was already taken by an undocumented teddycloud container"), and hosts/strong.md's 2026-07-05 migration changelog fixed a DHCP conflict for it — but it never got its own inventory entry or doc page until now.

At a glance

  • Hostname: teddycloud
  • Host: hubris (confirmed via pct config 131 run directly on hubris — the original drift finding's pct list source)
  • IP: 192.168.8.150 (static; was briefly 192.168.8.243 via DHCP until the 2026-07-05 strong-migration work assigned it a fixed address — see hosts/strong.md)
  • Privilege: unconfirmed (not checked — read-only investigation didn't need it)
  • Resources: 1 core / 1 GiB RAM / 512 MiB swap / 16 GiB rootfs (local-lvm), Debian 12 (bookworm)
  • Mounts: /mnt/library (mp0)
  • Public hostname: teddy.hubris.network192.168.8.150:8443 (see caddy (121))
  • Enrollment: none — no age_pubkey, not a homelab CLI client. It's a plain docker-compose app container, not a fleet-managed host. No action needed unless it starts needing secrets.

Service

Runs via docker compose at /opt/teddycloud — container teddycloud-teddycloud-1, image ghcr.io/toniebox-reverse-engineering/teddycloud:latest, publishing 80, 443, 8080, and 8443. Caddy routes teddy.hubris.network to the :8443 port.

Risk notes

No Caddy forward-auth gate — unlike sab.hubris.network on the same Caddyfile (which is explicitly annotated (Authentik forward-auth)), teddy.hubris.network has no auth annotation. It's reachable to anyone on the LAN/mesh who can resolve the hostname. Not addressed as part of this doc pass — flagging it here since it's now visible in one place for the first time.

Changelog

2026-07-06 — documented for the first time (drift-caught)

Added to inventory.yaml and given this page. Verified live via read-only pct config 131

  • pct exec 131 -- ... on hubris: hostname, IP, resources, and that it runs via docker compose (not a raw binary or systemd unit). No changes made to the running container — this is pure documentation catch-up.