- Migrations 010 (content_hash) + 011 (search tsvector column) - new: internal/knowledge/seed.go — knowledge seed ingest engine - new: internal/httpapi/knowledge.go — SearchKnowledge + GetEntityKnowledge - wire knowledge ingest into oikos seed pipeline - convert all 36 wiki docs + 6 investigations + 12 runbooks → seeds/knowledge.yaml - archive: knowledge/wiki/→archive/, oikos/cards/→archive/, .hermes/plans/→archive/ - delete: 9 superseded Python kernel files, ledger/, mcp/build_host_files.py - remove empty knowledge/ directory tree
2.7 KiB
134 — romm
Self-hosted ROM manager (RomM). Browse, search, and play your retro game library from the browser. Runs on Docker Compose with a MariaDB sidecar.
At a glance
- Hostname:
romm - IP:
192.168.8.249/28(static, vmbr1 on strong) - Privilege: privileged
- Resources: 1 core / 2 GiB RAM / 16 GiB rootfs (Debian 13, ludo-lvm)
- Mounts:
/mnt/media_local→/mnt/library - Public hostname:
roms.hubris.network
Service / port map
| Service | Listen | Notes |
|---|---|---|
| RomM | 192.168.8.249:80 |
HTTP (Caddy terminates TLS) |
| MariaDB | internal only | Sidecar in the same compose stack |
Compose
Located at /opt/romm/docker-compose.yml. Key points:
- Image:
rommapp/romm:latest - DB sidecar:
mariadb:latestwith healthcheck - ROM library:
/mnt/library/roms→/romm/library(writable) - Resources (covers, etc.): Docker named volume
romm_resources→/romm/resources - Saves/states:
/opt/romm/assets→/romm/assets - Config:
/opt/romm/config→/romm/config - Auth key: auto-generated, stored in
/opt/romm/.env
Environment (/opt/romm/.env):
DB_ROOT_PASSWD/DB_PASSWD— MariaDB credentialsDB_USER=romm-user/DB_NAME=rommROMM_AUTH_SECRET_KEY— auto-generated
ROM library structure
RomM expects /mnt/library/roms/<platform>/<game>/<rom>. Create platform
directories as needed:
/mnt/media_local/roms/
├── gba/
│ └── Pokemon - Emerald/
│ └── Pokemon Emerald.gba
├── snes/
│ └── Super Mario World/
│ └── Super Mario World.sfc
└── psx/
└── Final Fantasy VII/
└── Final Fantasy VII.bin
Media permissions
The /mnt/media_local/roms directory is owned root:media with mode 2775
(setgid). New files inherit the media GID (10000). The LXC is privileged so
no idmap block is needed — in-container UID/GID matches the host. Docker
containers within the LXC run as-is (read-only mount).
Related
- Strong host
- Caddy (121) —
roms.hubris.network → 192.168.8.249:80 - DNS (107) —
roms.hubris.network A 192.168.8.175 - Media permissions
- RomM docs
Changelog
2026-07-05 — provisioned
LXC 134 created on strong (Debian 13, privileged, 192.168.8.249/28).
Docker + Compose installed. RomM stack deployed at /opt/romm/.
Created /mnt/media_local/roms with setgid media:GID=10000 mode 2775.
Caddy roms.hubris.network → 192.168.8.249:80.
DNS roms A 192.168.8.175 added to Technitium.
Hubris /32 route for .249 added to 50-strong-route.