Files
homelabstack/stacks/roms/docker-compose.yml
T
ginnoir 51acb44322
Deploy to valhalla / deploy (push) Has been cancelled
Ship homelab quick wins: Recyclarr, infra pins, jd.ginnoir.com, and LAN lockdown.
Add Recyclarr to the media stack, pin database/object-store/Caddy/Vault images with Watchtower disabled, expose JDownloader at jd.ginnoir.com, and restrict minio/homarr/docs to internal_only. Mark TB-002–004 and TB-033 complete; bundle batch-3 OIDC env for FreshRSS, ownCloud, and Reactive Resume.
2026-06-11 02:28:06 -05:00

73 lines
2.4 KiB
YAML

# roms stack — RomM ROM library manager + its dedicated MariaDB.
#
# RomM bundles its own Redis (persisted via /redis-data), so there is no cache
# container here. The library is the existing EmuDeck tree at /storage1/Emulation,
# which is already RomM "Structure A" (a roms/ parent with per-platform subfolders).
# It is mounted READ-WRITE per request, so RomM file operations (rename/move/
# delete, manual matches) can mutate the tree — default scanning stays read-only.
#
# All secrets/config come from env_file (stack.env) using container-exact var
# names (DB_PASSWD, MARIADB_PASSWORD, ...), so this git stack needs NO Portainer
# UI env vars for ${VAR} substitution. See memory portainer-env-interpolation.
#
# Tiered binds: DB + RomM config + bundled-redis -> /config/romm (SSD);
# RomM labdata (ZFS): assets = saves/states; resources = fetched cover art (IGDB etc.).
# The labdata/romm/* targets are auto-created by Docker as root on first start.
#
# Only romm joins `edge` (Caddy proxies romm:8080); romm-db stays on `roms` only.
#
# To share RomM with an EXTERNAL tailnet user (a friend on his own tailnet), see
# the dedicated `share` stack (stacks/share/), which runs a Tailscale `serve`
# node joined to this `roms` network.
services:
romm:
# Pinned: save-sync (/api/sync/*) + raw content_hash fix need 4.9.0-beta.2.
# Revert to :4 once 4.9.0 stable is released.
image: rommapp/romm:4.9.0-beta.2
container_name: romm
restart: unless-stopped
networks: [roms, edge]
depends_on:
romm-db:
condition: service_healthy
env_file:
- stack.env
environment:
- DB_HOST=romm-db
- DB_NAME=romm
volumes:
- /storage1/Emulation:/romm/library
- /storage1/labdata/romm/resources:/romm/resources
- /storage1/labdata/romm/assets:/romm/assets
- /config/romm/config:/romm/config
- /config/romm/redis:/redis-data
ports:
- "8997:8080"
romm-db:
image: mariadb:12.3
container_name: romm-db
restart: unless-stopped
labels:
- "com.centurylabs.watchtower.enable=false"
networks: [roms]
env_file:
- stack.env
command: ["--max-allowed-packet=64M"]
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- /config/romm/mariadb:/var/lib/mysql
networks:
roms:
name: roms
driver: bridge
edge:
name: edge
external: true