selfhostedworld.com logoselfhostedworld.com

Try describing what you need:

RomM logo

RomM

★ 13.4k
GNU 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 yet

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.

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 logo

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
Details
Gameyfin logo

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
Details
Gaseous Server logo

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
Details
GameVault logo

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
Details
Drop logo

Drop

756
An open-source game distribution platform for sharing DRM-free games.
Game Server PanelsGamesSelf Hosting Solutions+3
Details
Minus Games logo

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
Details
Watcharr logo

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
Details
Sunshine logo

Sunshine

42.1k
Sunshine is a self-hosted game stream host for Moonlight.
Game Server PanelsMedia ServersRemote Access+2
Details
Pterodactyl logo

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
Details
LinuxGSM logo

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
Details
Pelican Panel logo

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
Details
PufferPanel logo

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
Details