What RomM is
RomM is a self-hosted ROM manager that scans a game library, adds metadata and artwork, and presents the collection through a responsive web interface. It can also integrate browser-based emulation for supported systems.
Screenshot evidence

Why I run it
I use RomM to turn a folder-based collection into a managed service that family members can browse without direct access to the storage layer. The project also gives me experience with metadata APIs, persistent volumes, database maintenance and permissions across a large media-style library.
Responsible use
The service is for software and game backups I am entitled to keep. The portfolio does not publish game files, download sources, storage paths or credentials.
Operational focus
- Read/write permissions on library and artwork volumes
- Database backup before upgrades
- Metadata-provider credentials stored outside Compose
- Library scanning and duplicate handling
- Resource limits for browser-based play
- Private access for family users
Docker Compose structure
services:
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
environment:
DB_HOST: romm-db
DB_NAME: romm
DB_USER: romm
DB_PASSWD: "${ROMM_DB_PASSWORD}"
ROMM_AUTH_SECRET_KEY: "${ROMM_AUTH_SECRET}"
ports:
- "8080:8080"
volumes:
- ./resources:/romm/resources
- ./redis-data:/redis-data
- /srv/games:/romm/library
depends_on:
- romm-db
romm-db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: romm
MARIADB_USER: romm
MARIADB_PASSWORD: "${ROMM_DB_PASSWORD}"
MARIADB_ROOT_PASSWORD: "${ROMM_ROOT_PASSWORD}"
volumes:
- ./database:/var/lib/mysql