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.

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)

  1. Log in to Twitch Developer.
  2. Click on "+ Register Your Application".
  3. Choose:
    • Namee.g. RomM
    • OAuth Redirect URLs: localhost
    • CategoryApplication Integration
  4. Make a note of your Client ID and Client 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.

The product display was implemented using the affiliate-toolkit WordPress plugin.
Categories: AppsDocker

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

en_US