Files
oikos/knowledge/wiki/containers/131-teddycloud.md
dtoro 8a6422bd7d docs: move narrative wiki under knowledge/wiki/ (phase 3)
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>
2026-07-06 14:35:23 +02:00

3.1 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.