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

Scan, enrich, browse and play your ROM collection from one beautiful & free self-hosted app. Metadata from 10+ providers, save sync across your devices, and support for over 400 platforms. RomM is a must-have for anyone who plays on emulators.

Browsing a library and playing a game in RomM

Features

Installation

The easiest way to start is with the Quick Start Guide in the docs. If you're having trouble with setup, please review the page for troubleshooting steps.

Prefer a hosted deploy over wiring up the stack yourself?

Deploy on Hostinger
Starting at $6.49/mo · Setup guide

Deployment and infrastructure support for this install is handled by Hostinger. Prices are indicative and may not reflect current offerings. Signups through the link above send a share of the revenue back to us, which helps fund the project.

Official apps

Playnite libraryPlaynite logo Playnite plugin

Effortlessly integrate your retro game collection into Playnite, the open-source game library manager that provides a unified interface for all of your games on PC.

Windows Desktop QR pairing

Install  by @gantoine


Argosy libraryArgosy logo Argosy

Sync your library, download games on demand and track your achievements, from a gamepad-first interface designed for Anbernic, Retroid Pocket, Odin, and similar devices.

Android Handhelds QR pairing Save sync

Download  by @tmgast


Grout multi-selectGrout logo Grout

A lightweight client for your favorite handheld custom firmwares*. Download games, box art and BIOS files wirelessly, and sync your saves automatically as you play.

Linux Handhelds Save sync

Quick start  by @BrandonKowalski

*Supports Allium, Batocera, Knulli, MinUI, muOS, NextUI, Onion, ROCKNIX, Spruce and TrimUI.

Community

Here are some cool projects maintained by members of our community. Please note that our team does not regularly review their source code.

Mobile and TV

Desktop

Handhelds and Steam Deck

Sync

Integrations

Support the project

Consider supporting this project on Open Collective. Funds cover hosting, development, and maintenance, and we pass some along to community projects to nurture a healthy ecosystem of apps.

Open Collective

Corporate Sponsors

These companies support us by providing their tools for free:

Greptile Socket

Our Friends

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

  • Lutris: Open gaming platform for Linux
  • Cocoon: Controller-first Android frontend for retro handhelds
  • muOS: Custom firmware for Anbernic and other handhelds
  • RetroDECK: Retro gaming on SteamOS and Linux
  • Steam ROM Manager: An app for managing ROMs in Steam
  • Hasheous: Hash lookup service that maps ROMs to game metadata
  • Gaseous: Another ROM manager with web-based emulator
  • Playmatch: Microservice for matching ROM hashes to games
  • EmulatorJS: An embeddable, browser-based emulator
  • PortMaster: Native game ports for Linux handhelds
  • MelonLoader: Universal mod loader for Unity games
  • NextUI: MinUI-based custom firmware for TrimUI handhelds
  • RetroAchievements: Achievements for retro games

Media gallery

1 / 4

Requirements


MariaDB

Download Statistics

11,852,792
Total Downloads
732,387
This Month
877,144
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
rommapp/romm:latest
Last Updated2026-08-20
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