4.5 KiB
RomM
Deploy RomM (Rom Manager) using Docker Compose.
Description
RomM is a self-hosted ROM manager and player for retro game libraries, with metadata scraping from ScreenScraper, RetroAchievements, SteamGridDB, and Hasheous.
Variables
Required
| Variable | Default | Description |
|---|---|---|
romm_db_password |
"" |
MariaDB password for the RomM user |
romm_db_root_password |
"" |
MariaDB root password |
romm_auth_secret_key |
"" |
Auth secret; generate with openssl rand -hex 32 |
romm_library_path |
{{ app_dir }}/library |
Host path holding the ROM library |
Optional — Deployment
| Variable | Default | Description |
|---|---|---|
romm_http_port |
8080 |
Web interface port |
romm_container_version |
latest |
RomM image tag |
romm_db_container_version |
latest |
MariaDB image tag |
romm_assets_path |
{{ app_dir }}/assets |
Uploaded saves, states, screenshots |
romm_config_path |
{{ app_dir }}/config |
Location of config.yml |
romm_resources_path |
{{ app_dir }}/resources |
Fetched metadata (covers, screenshots) |
romm_mysql_data_path |
{{ app_dir }}/mysql-data |
MariaDB data directory |
romm_redis_data_path |
"" |
Optional host path to persist RomM's in-container Redis cache. Leave empty to use the ephemeral default. |
romm_db_name |
romm |
MariaDB database name |
romm_db_user |
romm-user |
MariaDB username |
Optional — Metadata providers
All metadata providers are optional. See the RomM metadata providers docs for how to obtain credentials. Empty credentials and disabled toggles are omitted from the rendered .env — no need to null out unused providers.
| Variable | Default | Description |
|---|---|---|
romm_igdb_client_id |
"" |
IGDB client ID |
romm_igdb_client_secret |
"" |
IGDB client secret |
romm_screenscraper_user |
"" |
ScreenScraper username |
romm_screenscraper_password |
"" |
ScreenScraper password |
romm_mobygames_api_key |
"" |
MobyGames API key (paid subscription) |
romm_launchbox_api_enabled |
false |
Enable the LaunchBox provider |
romm_launchbox_scheduled_update_enabled |
false |
Enable scheduled LaunchBox metadata refresh |
romm_launchbox_scheduled_update_cron |
"" |
Cron expression for the LaunchBox refresh (defaults to RomM's built-in schedule when unset) |
romm_hasheous_api_enabled |
true |
Enable the Hasheous provider |
romm_playmatch_api_enabled |
false |
Enable the Playmatch provider |
romm_steamgriddb_api_key |
"" |
SteamGridDB API key |
romm_retroachievements_api_key |
"" |
RetroAchievements API key |
romm_flashpoint_api_enabled |
false |
Enable the Flashpoint provider |
romm_hltb_api_enabled |
false |
Enable the HowLongToBeat provider |
By default, backups include assets, config, resources, and mysql-data. The library directory is excluded (typically large and often on separate storage), and the Redis cache is not mounted at all by default (RomM's built-in Redis is ephemeral). Override app_backup_subdirectories to change this.
Runtime environment variables for the romm service are rendered to {{ app_dir }}/.env (loaded via env_file: in the compose file), so the compose file itself stays short. The romm-db service reads the three shared DB values (DB_NAME, DB_USER, DB_PASSWD) from the same .env via compose's ${VAR} interpolation, so there's a single source of truth for the DB credentials. MARIADB_ROOT_PASSWORD stays inline in the compose file — it's DB-only and shouldn't be injected into the RomM container. app_compose_validate is disabled because compose validation runs against a temp path where the .env isn't co-located.
Example
- role: patrickj.docker_apps.romm
vars:
romm_http_port: 8080
romm_library_path: /mnt/storage/roms
romm_db_password: "{{ vault_romm_db_password }}"
romm_db_root_password: "{{ vault_romm_db_root_password }}"
romm_auth_secret_key: "{{ vault_romm_auth_secret_key }}"
romm_igdb_client_id: "{{ vault_romm_igdb_client_id }}"
romm_igdb_client_secret: "{{ vault_romm_igdb_client_secret }}"
romm_screenscraper_user: "{{ vault_romm_screenscraper_user }}"
romm_screenscraper_password: "{{ vault_romm_screenscraper_password }}"
romm_retroachievements_api_key: "{{ vault_romm_retroachievements_api_key }}"
romm_steamgriddb_api_key: "{{ vault_romm_steamgriddb_api_key }}"