rommapp / romm

A beautiful, powerful, self-hosted rom manager
https://romm.app
GNU Affero General Public License v3.0
1.52k stars 69 forks source link
emulation open-source retrogaming rommapp self-hosted
romm logo

A beautiful, powerful, self-hosted rom manager.


[![license-badge]][license-badge-url] [![release-badge]][release-badge-url] [![docker-pulls-badge]][docker-pulls-badge-url] [![discord-badge]][discord-badge-url] [![unraid-badge]][unraid-badge-url] [![wiki-badge]][wiki-url]

[!WARNING] Version 3.0 introduces exciting new fetures that require some changes to how RomM is setup and configured. If you're currently running a 2.x version, please review the migration guide before upgrading.

Overview

RomM (ROM Manager) allows you to scan, enrich, and browse your game collection with a clean and responsive interface. With support for multiple platforms, various naming schemes and custom tags, RomM is a must-have for anyone who plays on emulators.

Features

Preview

šŸ–„ Desktop šŸ“± Mobile

Installation

Before running the image, ensure that Docker is installed and running on your system.

  1. Generate API keys for IGDB and/or MobyGames to fetch metadata.
  2. Verify that your library folder structure matches one of the options listed in the folder structure section.
  3. Create a docker-compose.yml file by referring to the example docker-compose.yml file for guidance, and customize it for your setup with the available environment variables.
  4. Launch the container(s) with docker-compose up -d.

[!NOTE] If you are having issues with RomM, please review the wiki page for troubleshooting steps and common issues.

Configuration

Folder Structure

As mentioned in the installation section, RomM requires a specific folder structure to work. The two supported structures are as follows:

Structure A (recommended) Structure B (fallback)
library/roms/gbc/rom_1.gbc library/gbc/roms/rom_1.gbc
        library/
        ā”œā”€ roms/
        ā”‚  ā”œā”€ gbc/
        ā”‚  ā”‚  ā”œā”€ rom_1.gbc
        ā”‚  ā”‚  ā”œā”€ rom_2.gbc
        ā”‚  ā”‚
        ā”‚  ā”œā”€ gba/
        ā”‚  ā”‚  ā”œā”€ rom_1.gba
        ā”‚  ā”‚  ā”œā”€ rom_2.gba
        ā”‚  ā”‚
        ā”‚  ā”œā”€ ps/
        ā”‚     ā”œā”€ my_multifile_game/
        ā”‚     ā”‚   ā”œā”€ my_game_cd1.iso
        ā”‚     ā”‚   ā”œā”€ my_game_cd2.iso
        ā”‚     ā”‚
        ā”‚     ā”œā”€ rom_1.iso
        ā”œā”€ bios/
        ā”‚  ā”œā”€ gba/
        ā”‚  ā”‚  ā”œā”€ gba_bios.bin
        ā”‚  ā”‚
        ā”‚  ā”œā”€ ps/
        ā”‚     ā”œā”€ scph1001.bin
        |     ā”œā”€ scph5501.bin
        |     ā”œā”€ scph5502.bin
      
        library/
        ā”œā”€ gbc/
        ā”‚  ā”œā”€ roms/
        ā”‚     ā”œā”€ rom_1.gbc
        ā”‚     ā”œā”€ rom_2.gbc
        ā”‚
        ā”œā”€ gba/
        ā”‚  ā”œā”€ roms/
        ā”‚     ā”œā”€ rom_1.gba
        ā”‚     ā”œā”€ rom_2.gba
        |  ā”œā”€ bios/
        |     ā”œā”€ gba_bios.bin
        ā”‚
        ā”œā”€ ps/
        ā”‚  ā”œā”€ roms/
        ā”‚     ā”œā”€ my_multifile_game/
        ā”‚     ā”‚  ā”œā”€ my_game_cd1.iso
        ā”‚     ā”‚  ā”œā”€ my_game_cd2.iso
        ā”‚     ā”‚
        ā”‚     ā”œā”€ rom_1.iso
        |  ā”œā”€ bios/
        |     ā”œā”€ scph1001.bin
        |     ā”œā”€ scph5501.bin
        |     ā”œā”€ scph5502.bin
      

[!TIP] For folder naming conventions, review the Platform Support section. To override default system names in the folder structure (if your directories are named differently), see the Configuration File section.

Configuration File

RomM's "understanding" of your library can be configured with a config.yaml file or through the config tab in the Control Panel under Settings section. Refer to the example config.yml file for guidance on how to configure it, and the example docker-compose.yml file on how to mount it into the container.

Scheduler

The scheduler allows you to scheduled async tasks that run in the Redis container at regular intervals. Jobs can be run at a specific time in the future, after a time delta, or at recurring internals using cron notation. The wiki page on the scheduler has more information on how which tasks are available and how to enable them.

Naming Convention

Platform Support

If you adhere to the RomM folder structure, RomM supports all platforms listed on the Supported Platforms page. The folder is is case sensitive and must be used exactly how it appears in the list. When scanning your library, RomM will use the folder name to determine the platform and fetch the appropriate game information, metadata, and cover art.

Additionally, some of these platforms have custom icons available (learn more about platform icons in our wiki).

Tag Support

Games can be tagged with region, revision, or other tags by using parentheses in the file name. Additionally, you can set the region and language by adding a prefix: (USA), [reg-J], (French), [De].

Tags can be used to search for games in the search bar. For example, searching for (USA) will return all games with the USA tag.

Community

Here are a few projects maintained by members of our community. As they are not regularly reviewed by the RomM team, we recommend you closely review them before use.

Join us on discord, where you can ask questions, submit ideas, get help, showcase your collection, and discuss RomM with other users.

discord-invite

Support

If you like this project, consider buying me a coffee!

coffee-donate

Our Friends

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