RomM
★ 13.4kGNU Affero General Public License v3.0Open Source — No Paywall6 Containers — 6 containers — moderate hosting footprintSourceNeeds MariaDB10+ active committers (12mo)
About
RomM is a self-hosted ROM manager and browser-based player aimed at people who maintain game libraries and use emulators. It provides a clean web interface for scanning collections, enriching entries...
Community Ratings
No ratings yetNew this week
Read recap →Weekly Recap — Oct 2, 2026 – Oct 9, 2026Oct 9, 2026
Features
- scan game libraries
- metadata enrichment
- custom artwork fetching
- achievement display
- browser-based gameplay
- limited-access sharing
- multi-disk game support
- DLC and mod support
- tag parsing and filtering
- web browser game management
Details
- Last Updated
- Oct 12, 2026
- Created
- Mar 8, 2023
- Install Methods
- source
- Requirements
- EmulatorJSRuffleRSIGDBScreenscraperMobyGamesSteamGridDBRetroAchievements
- Runtime / Stack
- Docker
- Privacy & Independence
- Cloud: Optional
- User Model
- Multi-User
- Deployment
Deployment: Docker Compose ✓6 Containers — moderate hosting footprintRuns as 6 containers
Run RomM with Docker Compose
Compose file from the RomM project repository.
6 services · database: mariadb · infra: mariadb, valkey, postgres · 1 unclassified (server)
no resource limits declared
needs persistent storage (13 volumes)
docker-compose.yml · @ 1c9c405 · scanned Jul 9, 2026
# Please see the full example under examples/docker-compose.example.yml
services:
romm-dev:
build:
context: .
dockerfile: Dockerfile
container_name: romm-dev
env_file: .env
environment:
- REDIS_HOST=romm-valkey-dev
- DB_HOST=${DB_HOST:-romm-db-dev}
- ROMM_BASE_PATH=/app/romm
ports:
- "3000:3000" # Vite dev server (custom)
- "5173:5173" # Vite dev server (default)
- "8443:8443" # HTTPS dev server
- "5678:5678" # debugpy
- "${DEV_PORT:-5000}:5000" # Backend API
volumes:
- ./backend:/app/backend
- /app/backend/romm_mock # Empty directory
- ./frontend:/app/frontend
- /app/frontend/node_modules # Empty directory
- /app/frontend/dist # Empty directory
- ./romm_mock:/app/romm
- ~/.vite-plugin-mkcert:/app/.vite-plugin-mkcert
depends_on:
- romm-db-dev
- romm-valkey-dev
- romm-postgres-dev
command: /bin/bash -c "cd /app && bash"
stdin_open: true
tty: true
romm-db-dev:
image: mariadb:11.3.2
container_name: romm-db-dev
restart: unless-stopped
env_file: .env
environment:
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWD:-rootpassword}
- MARIADB_DATABASE=${DB_NAME:-romm}
- MARIADB_USER=${DB_USER:-romm}
- MARIADB_PASSWORD=${DB_PASSWD:-romm}
volumes:
- romm-db-dev:/var/lib/mysql
ports:
- "3306:3306"
romm-valkey-dev:
image: valkey/valkey:8
container_name: romm-valkey-dev
restart: unless-stopped
env_file: .env
ports:
- "${REDIS_PORT:-6379}:6379"
romm-postgres-dev:
image: postgres:16-alpine
container_name: romm-postgresql-dev
restart: unless-stopped
env_file: .env
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-authentik}
POSTGRES_USER: ${POSTGRES_USER:-romm}
POSTGRES_DB: ${POSTGRES_DB:-authentik}
volumes:
- postgres-db:/var/lib/postgresql/data
ports:
- "5432:5432"
romm-authentik-server:
image: ghcr.io/goauthentik/server:2024.10.4
container_name: romm-authentik-server
restart: unless-stopped
command: server
env_file: .env
environment:
AUTHENTIK_REDIS__HOST: romm-valkey-dev
AUTHENTIK_POSTGRESQL__HOST: romm-postgres-dev
AUTHENTIK_POSTGRESQL__USER: ${POSTGRES_USER:-romm}
AUTHENTIK_POSTGRESQL__NAME: ${POSTGRES_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${POSTGRES_PASSWORD:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:-secret-key-default}
AUTHENTIK_BOOTSTRAP_PASSWORD: ${AUTHENTIK_BOOTSTRAP_PASSWORD:-password}
volumes:
- authentik-media:/media
- authentik-templates:/templates
ports:
- "9001:9000"
- "9444:9443"
depends_on:
- romm-postgres-dev
- romm-valkey-dev
romm-authentik-worker:
image: ghcr.io/goauthentik/server:2024.10.4
container_name: romm-authentik-worker
restart: unless-stopped
command: worker
env_file: .env
environment:
AUTHENTIK_REDIS__HOST: romm-valkey-dev
AUTHENTIK_POSTGRESQL__HOST: romm-postgres-dev
AUTHENTIK_POSTGRESQL__USER: ${POSTGRES_USER:-romm}
AUTHENTIK_POSTGRESQL__NAME: ${POSTGRES_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${POSTGRES_PASSWORD:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:-secret-key-default}
AUTHENTIK_BOOTSTRAP_PASSWORD: ${AUTHENTIK_BOOTSTRAP_PASSWORD:-password}
volumes:
- authentik-media:/media
- authentik-templates:/templates
depends_on:
- romm-postgres-dev
- romm-valkey-dev
volumes:
romm-db-dev:
postgres-db:
authentik-media:
authentik-templates:
This file may be out of date. Check the RomM documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.
Metadata extracted from README on Aug 27, 2026
Related Software
Retrom
2.1k
A self-hosted game library and collection management service focused on emulation, with clients for managing, downloading, and playing games across devices.
Game Server PanelsCopyleft LicenseGames+2
Gameyfin
1.1k
Gameyfin is a web-based library manager for video games that scans game folders, fetches metadata and cover art, and lets users browse and download games from a browser.
Game Server PanelsCopyleft LicenseSelf Hosting Solutions+3
Gaseous Server
948
Gaseous Server is the backend for the Gaseous system, providing ROM and title management with basic in-browser emulation.
Game Server PanelsCopyleft LicenseGames+2
2 Containers
GameVault
326
GameVault Backend is the server component of a self-hosted gaming platform for organizing DRM-free games on a file server.
Game Server PanelsGamesMedia Management+1
Source Available
Drop
756
An open-source game distribution platform for sharing DRM-free games.
Game Server PanelsGamesSelf Hosting Solutions+3
Minus Games
47
A suite for distributing, running, and syncing games from a server to client apps or a GUI.
Game Server PanelsGamesFile Synchronization+2
Single Container
Watcharr
1.5k
Watcharr is a self-hosted watched-list app for tracking movies, TV shows, anime, and optionally video games.
Media ManagementSelf Hosting SolutionsGames+2
Sunshine
42.1k
Sunshine is a self-hosted game stream host for Moonlight.
Game Server PanelsMedia ServersRemote Access+2
Pterodactyl
9.3k
Pterodactyl Panel is a free, open-source game server management panel for running game servers in isolated Docker containers.
Game Server PanelsPermissive LicenseSelf Hosting Solutions+2
LinuxGSM
4.9k
LinuxGSM is a command-line tool for quick deployment and management of Linux dedicated game servers.
Game Server PanelsSelf Hosting SolutionsAutomation Tools+1
Pelican Panel
2.4k
Pelican Panel is a free, open-source web-based control panel for creating and managing game servers.
Game Server PanelsCopyleft LicenseSelf Hosting Solutions+2
Single ContainerTelemetry: Opt-OutFully FOSS
PufferPanel
1.8k
PufferPanel is a web-based game server management system for managing multiple game servers from one central location.
Game Server PanelsPermissive LicenseSelf Hosting Solutions+1
