Estimated reading time: 5 minutes
Do you have an extensive collection of retro and modern games? With RomM you can manage all your games and emulators centrally and even share them with friends. As an open source project, RomM gives you full control over your data and a variety of features to enhance your gaming experience. There is even a Demo page where you can view the whole thing in its entirety.
For detailed instructions and an explanation of all configuration options, I recommend the YouTube video linked below. In this video, every single setting is explained in detail so that you receive comprehensive instructions for the exact setup. You can find any code from the video in this article so that you can use it directly without having to type it in.
This blog post and video is part of a series in which we create and set up our own home server. We start with the basics like an Ubuntu VM installation with Docker and then continue with the configuration of your own domain, security precautions and above all lots of cool and useful self-hosted services. Whether media servers like Plex or Jellyfin or document management like Paperless-NGX. Together we'll build the setup you want to see. We even tackle topics such as single sign-on (SSO) together.
What is RomM?
RomM is a self-hosted ROM manager that allows you to scan your game collection, enrich it with metadata and search it via a user-friendly interface. RomM supports over 400 platforms - from classic consoles to modern systems such as PS5 or Nintendo Switch.

Main functions of RomM
1. automatically add metadata
RomM scans your existing game collection and automatically adds information such as cover images and game descriptions from sources such as IGDB, Screenscraper and MobyGames.
2. play games directly in the browser
Thanks to the integration of EmulatorJS, you can play many games directly in your browser without having to install additional software. Systems such as NES, SNES, Game Boy, PlayStation and many more are supported.
3. share game library with friends
You can share your game collection with friends and define exactly who has access to which games. This keeps your collection private and secure.
4. support for different platforms and file formats
RomM recognizes various naming conventions and file formats, including multi-file games such as PlayStation titles with multiple CDs. Tags such as (USA) or (rev v1) are also recognized and make it easier to organize your collection.


![AGPTEK cable holder, cable clips [5 pieces], cable management, self-adhesive cable clips, multipurpose cable management cable organizer set for desk, power cable, USB charging cable, audio cable, black](https://m.media-amazon.com/images/I/41KniaWHcSL._SL160_.jpg)
Installation and setup
RomM is set up via Docker. You need API keys from IGDB or MobyGames to retrieve metadata. You then create a docker-compose.yml
-file that defines your library structure. RomM offers two recommended folder structures to organize your games.
Quick setup
For a quick setup, you can upload your ROMs directly via the web interface or use the integrated scanner, which automatically recognizes your games and adds metadata.
You want to host RomM yourself? Great! Installation is pretty easy with Docker. Here I'll show you step by step how to set up RomM on your server or home PC.
Requirements
- Docker & Docker Compose installed
- A little storage space for your ROMs
- API key from IGDB (optional, but recommended)
Step 1: Create API key
In order for RomM to automatically load metadata (covers, descriptions, etc.) for your games, you need API access to at least IGDB:
IGDB (via Twitch)
- Log in to Twitch Developer.
- Click on "+ Register Your Application".
- Choose:
- Namee.g.
RomM
- OAuth Redirect URLs:
localhost
- CategoryApplication Integration
- Namee.g.
- Make a note of your
Client ID
andClient Secret
.
Step 2: Docker setup
You must set the environment variable ROMM_AUTH_SECRET_KEY
create a key. You do this with the command: openssl rand -hex 32
Create a file docker-compose.yml
with the following content:
services:
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
ports:
- "8091:8080"
environment:
- DB_HOST=romm-db
- DB_NAME=romm
- DB_USER=romm
- DB_PASSWD=yourPassword
- DB_PORT=3306
- ROMM_AUTH_SECRET_KEY=MUST BE GENERATED
- IGDB_CLIENT_ID=your_igdb_client_id
- IGDB_CLIENT_SECRET=your_igdb_client_secret
- ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true
- RESCAN_ON_FILESYSTEM_CHANGE_DELAY=60
- ENABLE_SCHEDULED_RESCAN=true
- SCHEDULED_RESCAN_CRON=0 2 * * *
volumes:
- /mnt/cache/appdata/romm/config:/romm/config
- /mnt/cache/appdata/romm/assets:/romm/assets #Uploaded saves, states, etc
- /mnt/cache/appdata/roms:/romm/library
- /mnt/cache/appdata/romm/resources:/romm/resources #IGDB data
depends_on:
romm-db:
condition: service_healthy
restart: true
romm-db:
image: mariadb:latest
container_name: romm-db
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD= # Use a unique, secure password
- MARIADB_DATABASE=romm
- MARIADB_USER=romm
- MARIADB_PASSWORD=yourPassword
volumes:
- /mnt/cache/appdata/romm-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 30s
start_interval: 10s
interval: 10s
timeout: 5s
retries: 5
Execute the following command in the same folder as your docker-compose.yml
from:
docker compose up -d
You can then access RomM in your browser under:
http://deineServerIP:8090
When you start for the first time, you will be guided through the setup and have to create an admin account.
Bonus: Upload and scan games
You can either save your ROMs directly in /mnt/cache/appdata/roms
or upload them via the web interface using drag & drop. Then click on "Scan Library" in the RomM interface and the metadata will be added automatically.
Extensions and community
RomM is more than just a ROM manager. There are plugins for Playniteto seamlessly integrate your retro games into your existing game collection. For Anbernic devices with muOS you can download games directly via WLAN.
The active RomM community offers support, shares ideas and works together on the further development of the project. You can exchange ideas with other users via Discord and benefit from their experiences.
Folder structure for ROMs
library/
├─ roms/
│ ├─ gbc/
│ │ ├─ game_1.gbc
│ │ └─ game_2.gbc
│ │
│ ├─ gba/
│ │ ├─ game_3.gba
│ │ └─ game_4/
│ │ ├─ game_4.gba
│ │ ├─ dlc
│ │ │ ├─ game_4_dlc_1.7z
│ │ │ └─ game_4_dlc_2.7z
│ │ ├─ hack
│ │ │ └─ game_4_hardmode.rar
│ │ ├─ manual
│ │ │ └─ game_4_manual.pdf
│ │ ├─ mod
│ │ │ └─ game_4_crazy_mode.zip
│ │ ├─ patch
│ │ │ └─ game_4_patch_v1.1.zip
│ │ ├─ update
│ │ ├─ demo
│ │ ├─ translation
│ │ └─ prototype
│ │
│ └─ ps/
│ ├─ game_5/
│ │ ├─ game_5_cd_1.iso
│ │ └─ game_5_cd_2.iso
│ │
│ └─ game_6.iso
│
└─ bios/
├─ gba/
│ └─ gba_bios.bin
│
└─ ps/
├─ scph1001.bin
├─ scph5501.bin
└─ scph5502.bin
Alternative structure for the folders (as in the video)
library/
├─ gbc/
│ └─ roms/
│ ├─ game_1.gbc
│ └─ game_2.gbc
│
├─ gba/
│ ├─ roms/
│ │ ├─ game_3.gba
│ │ └─ game_4/
│ │ ├─ game_4.gba
│ │ ├─ dlc
│ │ │ ├─ game_4_dlc_1.7z
│ │ │ └─ game_4_dlc_2.7z
│ │ ├─ hacks
│ │ │ └─ game_4_hardmode.rar
│ │ ├─ manuals
│ │ │ └─ game_4_manual.pdf
│ │ ├─ mods
│ │ │ └─ game_4_crazy_mode.zip
│ │ ├─ patch
│ │ │ └─ game_4_patch_v1.1.zip
│ │ ├─ update
│ │ ├─ demo
│ │ ├─ translation
│ │ └─ prototype
│ │
│ └─ bios/
│ └─ gba_bios.bin
│
└─ ps/
├─ roms/
│ ├─ game_5/
│ │ ├─ game_5_cd1.iso
│ │ └─ game_5_cd2.iso
│ │
│ └─ game_6.iso
│
└─ bios/
├─ scph1001.bin
├─ scph5501.bin
└─ scph5502.bin
YouTube video implementation
Conclusion
RomM offers you a comprehensive solution to centrally manage, play and share your games and emulators. With its user-friendly interface, support for numerous platforms and the possibility of customization, RomM is RomM an indispensable tool for every gaming enthusiast.
Get started with RomM today and bring order to your game collection! With these instructions, you're ready to go! And if you do need help: The official documentation is super helpful - or you can take a look at the RomM Discord Community.
0 Comments