Files
wiki/Catalogue-Self-Hosted/apps/app-romm.md
T
2026-06-09 18:40:21 +02:00

7.6 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
RomM 2026-06-07 2026-06-07 app
catalogue
gaming
emulation
rom-manager
retro-gaming
retrogaming
python
fastapi
high false
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

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)

# 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

Pages Liées