---
title: RomM
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, gaming, emulation, rom-manager, retro-gaming, retrogaming, python, fastapi]
confidence: high
contested: false
sources:
  - https://selfh.st/apps/?tag=Gaming
  - https://github.com/rommapp/romm
  - https://romm.app/
---

# 🕹️ RomM

> ROM Manager & serveur d'émulation : scanne, indexe, métadonnées et sert vos ROMs/ISOs vers n'importe quel frontend (RetroArch/Lakka, EmuDeck, web…) — la « bibliothèque » de l'émulation moderne.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://romm.app/ |
| **GitHub** | https://github.com/rommapp/romm |
| **License** | AGPL-3.0 |
| **Langage** | Python (FastAPI) |
| **Étoiles** | 429 ⭐ |
| **Dernière MAJ** | 2026-05-29 |
| **Catégorie** | [[cat-gaming\|Gaming]] |

## Description

**RomM** (ROM Manager) est l'outil moderne d'organisation d'une bibliothèque de ROMs et d'ISOs multi-consoles. Il s'attaque à la principale douleur de l'émulation : gérer une collection qui grossit exponentiellement (Game Boy, NES, SNES, N64, PS1, PS2, GameCube, Wii, DS, 3DS, Sega Genesis, Saturn, Dreamcast, MAME, Arcade, Atari, etc.) avec leurs jaquettes, descriptions, dates de sortie, langues, régions, et les rendre accessibles depuis n'importe quel client. RomM agit comme une **bibliothèque centrale** : vous déposez vos ROMs dans un dossier, RomM scanne, identifie, télécharge les métadonnées (via IGDB et MobyGames), et expose une API + une UI web élégante.

L'UI web permet de naviguer par console, voir les jaquettes, marquer des favoris, filtrer par région/genre, et **télécharger** ou **streamer** le contenu. L'intégration directe avec **RetroArch** (le client) est l'autre killer feature : depuis l'UI, on peut lancer une ROM sur un RetroArch distant via le protocole network commands. Idem pour **EmuDeck** (Steam Deck), **Lakka** (Raspberry Pi), et toute installation RetroArch.

Sous le capot, RomM stocke les métadonnées dans une base (SQLite par défaut, MySQL/MariaDB en option), utilise **Hasheous** pour le matching SHA-1/SHA-256, gère la **déduplication** de versions (USA, Europe, Japan, proto, beta, hacks, traductions), supporte le **scanning par plateformes** (un dossier = une plateforme), le **multi-utilisateur** avec permissions (admin/contributeur/viewer), et la **gestion de Saves** (upload/download des sauvegardes et states).

Cas d'usage typique : un collectionneur avec 5000+ ROMs qui veut une UI web moderne pour les parcourir, et les lancer depuis sa TV (Lakka) ou Steam Deck (EmuDeck) sans devoir bricoler manuellement. Les alternatives classiques (Skraper, LaunchBox, HyperSpin) sont des outils desktop Windows ; RomM est nativement **multi-OS, multi-user, server-first**, ce qui en fait la référence de l'émulation auto-hébergée.

## Installation

### Docker Compose (méthode officielle)

```yaml
# docker-compose.yml
version: '3.8'

services:
  romm:
    image: rommapp/romm:latest
    container_name: romm
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./config:/config
      - ./library:/romm/library
    environment:
      - DB_HOST=db
      - DB_NAME=romm
      - DB_USER=romm
      - DB_PASSWD=ChangeM3_ROMM
      - DB_PORT=3306
      - ROMM_AUTH_ENABLED=true
    depends_on:
      - db
      - redis

  db:
    image: mariadb:11
    container_name: romm-db
    restart: unless-stopped
    volumes:
      - ./db:/var/lib/mysql
    environment:
      MARIADB_DATABASE: romm
      MARIADB_USER: romm
      MARIADB_PASSWORD: ChangeM3_ROMM
      MARIADB_RANDOM_ROOT_PASSWORD: "yes"

  redis:
    image: redis:7-alpine
    container_name: romm-redis
    restart: unless-stopped

  # Optionnel : Hasheous (matching SHA amélioré)
  hasheous:
    image: rommapp/hasheous:latest
    container_name: hasheous
    restart: unless-stopped
    ports:
      - "8210:8210"
    environment:
      - HASHEOUS_DB_CONNECTION=sqlite:///./hasheous.db
```

> 📁 Au premier lancement, créer un compte admin via `http://host/setup`. Structure de dossiers attendue : `/romm/library/gb/`, `/romm/library/nes/`, `/romm/library/ps1/`, etc.

### Installation manuelle

Python 3.11+, Poetry, Node.js 18+, MariaDB 10.6+. Cloner le repo, `poetry install`, `cd frontend && npm install && npm run build`, configurer `.env`, lancer `python romm.py`. Complexité plus élevée que Docker.

## Configuration

- **Library** : chemin par défaut `/romm/library`, sous-dossiers par plateforme (utiliser les codes standards : `gb`, `gba`, `n64`, `ps1`, `ps2`, `wii`, `switch`, etc.).
- **Métadonnées** : providers configurables (IGDB, MobyGames, ScreenScraper.fr, Hasheous). Saisir ses clés API pour IGDB (gratuite) et MobyGames (gratuite).
- **Sauvegardes** : `Saves` et `States` gérés par plateforme, dans `/romm/library/{platform}/saves/`.
- **Multi-utilisateur** : rôles admin, editor (peut modifier scan), user. Authentification locale + OIDC (Authentik, Keycloak, Google, Discord).
- **Scan programmé** : via l'admin UI, lancer un scan complet (lent) ou incrémental.
- **EmulationStation** : intégration RetroArch, EmuDeck, LaunchBox.

## Alternatives

### Open Source
- **LaunchBox** (Windows only) — UI desktop, gros catalogue de jaquettes auto, free + Big Box (payant).
- **Skraper** — Télécharger jaquettes/vidéos, desktop Windows.
- **GameVault** — Concurrent plus jeune, focus Steam-style UI.
- **RetroGame** — Collection manager PHP (plus minimal).
- **ES-DE** (EmulationStation Desktop Edition) — Frontend, pas un manager.
- **Lakka**, **RetroPie**, **Batocera** — OS complets frontend, pas de manager centralisé.
- **Recalbox** — Distribution frontend + scraper intégré.

### Propriétaires
- **LaunchBox Big Box** — Mode frontend pour PC/home theater, payant.
- **GOG Galaxy** — Pas pour ROMs mais pour bibliothèque jeux modernes.
- **Clrmamepro**, **RomCenter** — Outils de vérif/dédup historiques Windows.
- **Steam Rom Manager** (SteamGridDB) — Ajoute les ROMs à Steam avec jaquettes, semi-manuel.

## Sécurité

- **Auth obligatoire** : `ROMM_AUTH_ENABLED=true` (défaut récent). Sinon l'API est ouverte à Internet.
- **HTTPS** : obligatoire, via [[app-traefik]] ou Caddy. L'UI affiche des jaquettes, le détail des ROMs, le multi-user, c'est sensible.
- **OIDC** : pour aller plus loin, brancher [[app-authentik]] ou [[app-keycloak]] pour centraliser l'auth.
- **Légalité des ROMs** : héberger des ROMs/ISOs/BIOS de jeux dont on ne possède pas l'original est **illégal** dans la majorité des juridictions (UE, USA). Le projet fournit un système, l'utilisateur est responsable de la provenance.
- **BIOS** : certains émulateurs nécessitent le BIOS original (PS1 `SCPH1001.BIN`, N64 `PIF-NUS.rom`, etc.). Idem : **dumper son propre BIOS est légal**, le télécharger n'est pas toujours autorisé.
- **MySQL/Redis exposés** : ne pas exposer ces ports sur Internet, ils ne sont pas dans les `ports:` Docker.
- **Uploads Saves** : un user compromis peut écraser des saves. Activer quota + signature.

## Ressources

- [Site officiel](https://romm.app/)
- [Repository GitHub](https://github.com/rommapp/romm)
- [Documentation](https://docs.romm.app/)
- [Discord communautaire](https://discord.gg/romm)
- [Templates RetroArch](https://docs.lizardbyte.dev/projects/sunshine/en/latest/)

## Pages Liées
- [[cat-gaming]] — Catégorie parente
- [[app-pterodactyl]] — Panel serveurs de jeux
- [[app-traefik]] — Reverse proxy HTTPS
- [[app-authentik]] — OIDC centralisé
- [[app-docker]] — Conteneurisation
- [[recettes-docker-compose]] — Templates
- [[legalite-roms-france]] — Concept (à créer)
- [[securisation-home-lab]] — Bonnes pratiques
