This page covers the most common issues users encounter with RomM and their solutions. Start by checking the container logs — most problems leave a clear error message there.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rommapp/romm/llms.txt
Use this file to discover all available pages before exploring further.
ROMs not appearing after scan
ROMs not appearing after scan
If a scan completes but your games don’t show up in the library, work through these checks:1. Verify your folder structureRomM expects ROMs to be inside a 2. Check the platform folder nameThe sub-folder name must match a known platform slug (e.g. 3. Check the logs for scan errors4. Enable verbose loggingSet
library/roms/ directory, organised into sub-folders named by platform slug:nes, snes, gb, gba, psx). If you use a different name, you need to add a mapping in config.yml:LOGLEVEL=DEBUG in your environment and re-run the scan for detailed output on every file processed.Metadata not loading / artwork missing
Metadata not loading / artwork missing
1. Verify API keysCheck that the relevant provider API keys are set correctly in your environment:If you are behind a corporate proxy, set
IGDB_CLIENT_IDandIGDB_CLIENT_SECRETfor IGDBSCREENSCRAPER_USERandSCREENSCRAPER_PASSWORDfor ScreenscraperMOBYGAMES_API_KEYfor MobyGamesSTEAMGRIDDB_API_KEYfor SteamGridDB
HTTP_PROXY and HTTPS_PROXY in your environment.3. Watch for rate limitsScreenscraper enforces strict per-day and per-minute request limits on free accounts. If you see 429 responses in the logs, reduce SCAN_WORKERS to 1 and space out your scans. Screenscraper also blocks requests made without a registered username/password.4. Re-scan with metadata enabledAfter fixing credentials, trigger a new scan from Administration → Scan Library or via the API. Use Full Scan rather than Quick Scan to re-fetch metadata for all games.Database connection error on startup
Database connection error on startup
RomM logs a database connection error and refuses to start if it cannot reach MariaDB. Common causes:1. Incorrect environment variablesEnsure these four variables match the MariaDB container configuration exactly:2. DB_HOST must be the Docker service name, not Run
localhostInside Docker Compose, containers talk to each other by service name. Using localhost or 127.0.0.1 will fail because those point to the RomM container itself, not the database container.3. Database container is not healthy yetIf RomM starts before MariaDB finishes initialising, the connection will fail. The example docker-compose.yml includes a health check and depends_on condition to handle this:docker ps and check that the romm-db container shows (healthy) in its status column. If it shows (starting), wait a minute and restart RomM.4. Wrong database driverThe default driver is mariadb. If you are using MySQL or PostgreSQL, set ROMM_DB_DRIVER=mysql or ROMM_DB_DRIVER=postgresql accordingly.Cannot log in / setup wizard not appearing
Cannot log in / setup wizard not appearing
ROMM_AUTH_SECRET_KEY is not setThis variable is required. Without it, RomM cannot sign or verify tokens and will reject all logins. Generate one with:Then add it to your environment:Setup wizard not showing on first bootIf the setup wizard does not appear after a fresh install, check that
DISABLE_SETUP_WIZARD is not set to true. The wizard only shows when no admin user exists in the database.OIDC login not working- Verify
OIDC_REDIRECT_URImatches the redirect URI registered with your OIDC provider exactly (including trailing slashes). - Check
OIDC_CLIENT_ID,OIDC_CLIENT_SECRET, andOIDC_SERVER_METADATA_URLare correct. - Set
LOGLEVEL=DEBUGto see detailed OIDC request and response logging. - If using a self-signed certificate, point
OIDC_TLS_CACERTFILEto your CA bundle.
EmulatorJS not loading games in the browser
EmulatorJS not loading games in the browser
1. Check that EmulatorJS is enabledMake sure
DISABLE_EMULATOR_JS is not set to true in your environment.2. Verify the ROM format is supportedEmulatorJS does not support every ROM format for every core. For example, encrypted Switch NSP files cannot be played in-browser. Check the EmulatorJS documentation for supported formats per platform.3. Check the browser consoleOpen your browser’s developer tools (F12) and check the Console and Network tabs for errors. Common issues include:- CORS errors if RomM is accessed via an unusual hostname
- WebAssembly blocked by a Content Security Policy on a reverse proxy
- Core files failing to load due to a 404
Content-Security-Policy header that blocks wasm-eval or cross-origin resource loading required by EmulatorJS.Permission denied errors on files or volumes
Permission denied errors on files or volumes
RomM needs read/write access to the volumes mounted at Then adjust host permissions:2. Verify volume mounts in docker-compose.ymlMake sure the host paths exist and are not typos.3. SELinux / AppArmorOn systems with SELinux enabled (e.g. Fedora, RHEL), volume mounts may need a
/romm/library, /romm/resources, and /romm/assets.1. Check host directory permissionsThe RomM container runs as a non-root user. The host directories must be readable and writable by the UID the container uses. Check the image documentation for the default UID, or run::z suffix to relabel the directory:High CPU usage during scan
High CPU usage during scan
Library scans are CPU and I/O intensive, especially on large collections. Several settings can reduce the impact:1. Reduce scan workersOn low-power hardware (e.g. a Raspberry Pi or older NAS), reduce the number of parallel scan workers:2. Skip hash calculationHash calculation reads every byte of each ROM file. If you do not use RetroAchievements or other hash-based matching, you can skip it in 3. Use Quick Scan for rescansQuick Scan only processes files that are new or have changed since the last scan. Use it for routine rescans and reserve Full Scan for when you need to refresh all metadata.4. Schedule scans during off-peak hoursUse the scheduled rescan feature to run scans at night when the system is otherwise idle:
config.yml:How to view logs
How to view logs
Live container logsAdd Increase log verbositySet In-app logs viewerRomM includes a built-in log viewer in the administration UI (Administration → Logs). This shows the same output as
--tail 100 to show only the last 100 lines:LOGLEVEL=DEBUG in your environment to enable verbose output including metadata API requests, database queries, and file scan details:docker logs in a convenient browser-based interface. You can disable it with DISABLE_LOGS_VIEWER=true if you prefer to manage logs externally.Still stuck?
If none of the above resolves your issue:- Search existing GitHub issues — your problem may already have a solution.
- Join the RomM Discord server and ask in the support channel.
- Open a new GitHub issue with your container logs, Docker Compose file (redact passwords), and a description of what you expected to happen.