Files
oikos/archive/knowledge/containers/134-romm.md
dtoro 6b75f7302d db as source of truth: wiki→seeds, archive old artifacts, knowledge ingestion
- 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
2026-07-07 20:22:30 +02:00

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:latest with 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 credentials
  • DB_USER=romm-user / DB_NAME=romm
  • ROMM_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).

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.network192.168.8.249:80. DNS roms A 192.168.8.175 added to Technitium. Hubris /32 route for .249 added to 50-strong-route.