romm

romm

Official

Docker app from arcanesada's Repository

Overview

A beautiful, powerful, self-hosted rom manager RomM (ROM Manager) allows you to scan, enrich, and browse your game collection with a clean and resonsive interface. With support for multiple platforms, various naming schemes, and custom tags, RomM is a must-have for anyone who plays on emulators. Features: • Scans your existing games library and enhances it with metadata from IGDB and MobyGames • Supports a large number of platforms • Play games directly from the browser using EmulatorJS • Share your library with friends while limiting access and permissions • View, upload, update, and delete games from any modern web browser Before starting, generate your IGDB and Mobygames API keys: https://docs.romm.app/latest/Getting-Started/Generate-API-Keys/ Instructions for setting up RomM can be found at https://docs.romm.app/latest/System-Setup/Unraid-Setup-Guide/
romm logo

A beautiful, powerful, self-hosted ROM manager and player.

Trendshift hackernews badge
selfh.st badge Discord

Overview

RomM (ROM Manager) allows you to scan, enrich, browse and play your game collection with a clean and responsive interface. With support for multiple platforms, various naming schemes, and custom tags, RomM is a must-have for anyone who plays on emulators.

Features

  • Scan and enhance your game library with metadata from IGDB, Screenscraper and MobyGames
  • Fetch custom artwork from SteamGridDB
  • Display your achievements from Retroachievements
  • Metadata available for 400+ platforms
  • Play games directly from the browser using EmulatorJS and RuffleRS
  • Share your library with friends with limited access and permissions
  • Official apps for Playnite, Android and CFWs
  • Supports multi-disk games, DLCs, mods, hacks, patches, and manuals
  • Parse and filter by tags in filenames
  • View, upload, update, and delete games from any modern web browser

Preview

🖥 Desktop 📱 Mobile
desktop preview mobile preview

Installation

To start using RomM, check out the Quick Start Guide in the docs. If you are having issues with RomM, please review the page for troubleshooting steps.

Contributing

To contribute to RomM, please check Contribution Guide.

Official apps

Apps and integrations built and maintained by the RomM team.

  • Argosy by @tmgast: Native Android client for installing and launching games.
  • Grout by @BrandonKowalski: Download and manage games from your RomM instance directly on your Linux based retro handheld. Supports: Allium, Batocera, Knulli, MinUI, muOS, NextUI, Onion, ROCKNIX, Spruce, TrimUI
  • Playnite plugin by @gantoine: Library plugin for Playnite

Community

Here are a few projects maintained by members of our community. Please note that the RomM team does not regularly review their source code.

Mobile

Desktop

Handhelds

Other

Join us on Discord, where you can ask questions, submit ideas, get help, showcase your collection, and discuss RomM with other users.

discord-invite-img

Technical Support

If you have any issues with RomM, please open an issue in this repository.

Financial Support

Consider supporting the development of this project on Open Collective. All funds will be used to cover the costs of hosting, development, and maintenance of RomM.

oc-donate-img

Our Friends

Here are a few projects that we think you might like:

  • EmulatorJS: An embeddable, browser-based emulator
  • RetroDECK: Retro gaming on SteamOS and Linux
  • ES-DE Frontend: Emulator frontend for Linux, macOS and Windows
  • Gaseous: Another ROM manager with web-based emulator
  • Retrom: A centralized game library/collection management service
  • Drop: Steam-like experience for DRM-free games
  • LanCommander: Digital game platform for PC games
  • Steam ROM Manager: An app for managing ROMs in Steam

Media gallery

1 / 4

Install Romm on Unraid in a few clicks.

Find Romm in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Romm Review the template variables and paths Click Install

Requirements


MariaDB

Download Statistics

8,838,530
Total Downloads
798,637
This Month
705,704
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
rommapp/romm:latest
Last Updated2026-06-23
First Seen2024-09-02

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
romm_net
Shell
sh
Privileged
false

Template configuration

PortPorttcp
Target
8080
Default
8080
Value
8080
LibraryPathrw

Game files

Target
/romm/library/
Default
/romm/library
Value
/mnt/user/appdata/romm/library
ResourcesPathrw

Metadata storage (covers, screenshots, etc.)

Target
/romm/resources/
Value
/mnt/user/appdata/romm/resources
AssetsPathrw

Uploaded saves, states, etc.

Target
/romm/assets/
Value
/mnt/user/appdata/romm/assets
ConfigPathrw

Folder for config.yml

Target
/romm/config/
Value
/mnt/user/appdata/romm/config
RedisPathrw

Stores in-memory data

Target
/redis-data
Value
/mnt/user/appdata/romm/redis-data
ROMM_DB_DRIVERVariable

Database driver to use

Default
mariadb
Value
mariadb
DB_HOSTVariable

Host name of database instance

Default
mariadb
DB_PORTVariable

Port number of database instance

Default
3306
DB_NAMEVariable

Should match MYSQL_DATABASE in MariaDB

Default
romm
DB_USERVariable

Database username

Default
romm
DB_PASSWDVariable

Database password

DB_QUERY_JSONVariable

Extra query parameters for the database connection, in JSON format

REDIS_HOSTVariable

Host name of Redis/Valkey instance

REDIS_PORTVariable

Port number of Redis/Valkey instance

REDIS_USERNAMEVariable

Username for Redis/Valkey instance

REDIS_PASSWORDVariable

Password for Redis/Valkey instance

REDIS_DBVariable

Database number for Redis/Valkey instance

REDIS_SSLVariable

Enable SSL for Redis/Valkey instance

ROMM_AUTH_SECRET_KEYVariable

Generate a key with `openssl rand -hex 32`

DISABLE_CSRF_PROTECTIONVariable

Disables CSRF protection (not recommended)

Default
false
DISABLE_DOWNLOAD_ENDPOINT_AUTHVariable

Disable auth on download endpoint

Default
false
DISABLE_USERPASS_LOGINVariable

Disables login with username and password

Default
false
SESSION_MAX_AGE_SECONDSVariable

Maximum age of a session (in seconds)

KIOSK_MODEVariable

Read-only mode for public displays or kiosks

Default
false
OIDC_ENABLEDVariable

Enable OpenID Connect (OIDC) authentication

Default
false
OIDC_PROVIDERVariable

Name of the OIDC provider in use

OIDC_CLIENT_IDVariable

Client ID for OIDC authentication

OIDC_CLIENT_SECRETVariable

Client secret for OIDC authentication

OIDC_REDIRECT_URIVariable

Absolute redirect URI for OIDC authentication

OIDC_SERVER_APPLICATION_URLVariable

Absolute URL of the OIDC server application

OIDC_TLS_CACERTFILEVariable

Path to a file containing trusted CA certificates

IGDB_CLIENT_IDVariable

Client ID for IGDB API

IGDB_CLIENT_SECRETVariable

Client secret for IGDB API

SCREENSCRAPER_USERVariable

Screenscraper username

SCREENSCRAPER_PASSWORDVariable

Screenscraper password

MOBYGAMES_API_KEYVariable

MobyGames secret API key

STEAMGRIDDB_API_KEYVariable

SteamGridDB secret API key

RETROACHIEVEMENTS_API_KEYVariable

Retroachievements secret API key

REFRESH_RETROACHIEVEMENTS_CACHE_DAYSVariable

Retroachievements metadata cache refresh (in days)

LAUNCHBOX_API_ENABLEDVariable

Enable LaunchBox API integration

Default
false
PLAYMATCH_API_ENABLEDVariable

Enable PlayMatch API integration

Default
false
HASHEOUS_API_ENABLEDVariable

Enable Hasheous API integration

Default
false
FLASHPOINT_API_ENABLEDVariable

Enable Flashpoint API integration

Default
false
HLTB_API_ENABLEDVariable

Enable HowLongToBeat API integration

Default
false
WEB_SERVER_CONCURRENCYVariable

Number of processes running the app

WEB_SERVER_KEEPALIVEVariable

Waiting time for requests on a Keep-Alive connection (in seconds)

WEB_SERVER_MAX_REQUESTSVariable

Maximum number of requests a worker will process before restarting

WEB_SERVER_MAX_REQUESTS_JITTERVariable

Random jitter to add to the maximum number of requests a worker will process before restarting

WEB_SERVER_TIMEOUTVariable

Timeout for web server requests (in seconds)

WEB_SERVER_WORKER_CONNECTIONSVariable

Maximum number of simultaneous clients a single process can handle

FORCE_COLORVariable

Forces color output

NO_COLORVariable

Disables color output

DISABLE_EMULATOR_JSVariable

Disables playing in browser with EmulatorJS

Default
false
DISABLE_RUFFLE_RSVariable

Disables playing flash games with RuffleRS

Default
false
YOUTUBE_BASE_URLVariable

Base URL for alternate frontends

UPLOAD_TIMEOUTVariable

Timeout for file uploads (in seconds)

SCAN_TIMEOUTVariable

Timeout for the background scan/rescan tasks (in seconds)

SCAN_WORKERSVariable

Number of worker processes for scanning tasks

TASK_TIMEOUTVariable

Timeout for the rest of the background tasks (in seconds)

TASK_RESULT_TTLVariable

How long to keep task results in Valkey (in seconds)

SEVEN_ZIP_TIMEOUTVariable

Timeout for 7-Zip operations (in seconds)

ENABLE_RESCAN_ON_FILESYSTEM_CHANGEVariable

Enable re-scanning of library when filesystem changes

Default
false
RESCAN_ON_FILESYSTEM_CHANGE_DELAYVariable

Delay before re-scanning library when filesystem changes (in minutes)

ENABLE_SCHEDULED_RESCANVariable

Enable scheduled re-scanning of library

Default
false
SCHEDULED_RESCAN_CRONVariable

Cron expression for scheduled re-scanning

ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDBVariable

Enable scheduled updating of Switch TitleDB index

Default
false
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRONVariable

Cron expression for scheduled updating of Switch TitleDB

ENABLE_SCHEDULED_UPDATE_LAUNCHBOX_METADATAVariable

Enable scheduled updating of LaunchBox metadata

Default
false
SCHEDULED_UPDATE_LAUNCHBOX_METADATA_CRONVariable

Cron expression for scheduled updating of LaunchBox metadata

ENABLE_SCHEDULED_CONVERT_IMAGES_TO_WEBPVariable

Enable scheduled conversion of images to WebP format

Default
false
SCHEDULED_CONVERT_IMAGES_TO_WEBP_CRONVariable

Cron expression for scheduled conversion of images to WebP format

ENABLE_SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNCVariable

Enable scheduled syncing of Retroachievements progress

Default
false
SCHEDULED_RETROACHIEVEMENTS_PROGRESS_SYNC_CRONVariable

Cron expression for scheduled syncing of Retroachievements progress

LOGLEVELVariable

Logging level for the app

Value
INFO
SENTRY_DSNVariable

DSN for Sentry error tracking