Files
2026-06-09 18:40:21 +02:00

7.8 KiB


title: Retrom created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, gaming, emulation, libretro, frontend, typescript, react, rust, game-library] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Gaming, https://github.com/JMBeresford/retrom]

🕹️ Retrom

Service centralisé de gestion de bibliothèque de jeux pour l'émulation — client natif desktop + serveur, multi-plateforme, scan IGDB, intégration libretro.

📋 Informations Générales

Champ Valeur
Site web retrom.app
GitHub JMBeresford/retrom
License MIT
Langage TypeScript + React (client) + Rust (service backend)
Étoiles 40 (catalogue)
Dernière MAJ 2026 (v0.2.0+)
Catégorie cat-gaming

📝 Description

Retrom est un service centralisé de gestion de bibliothèque de jeux centré sur l'émulation. Il se compose d'un service backend Rust (rapide, léger, multi-plateforme) et d'un client TypeScript/React natif (Electron, installable Windows/MacOS/Linux). L'objectif est d'être un "Plex pour les jeux" : un serveur auto-hébergé qui indexe, scanne, et expose vos jeux à n'importe quel client Retrom à la maison.

Contrairement à app-retroassembly qui joue dans le navigateur via WebAssembly, Retrom utilise un client natif qui exploite les cœurs libretro officiels en natif (donc meilleures performances, pas de limite mémoire du navigateur, support complet de tous les cores). Le serveur Rust fait le gros du travail (scan, métadonnées, base, API), et le client ne sert que de frontend UI.

L'application se distingue par un focus sur l'émulation (pas de jeux PC modernes comme app-gamevault) et une architecture first-class multi-serveurs : vous pouvez connecter plusieurs clients à un même service, et même gérer plusieurs services. Les métadonnées sont fetchées depuis IGDB (Internet Game Database) avec scraping automatique des jaquettes.

Fonctionnalités clés :

  • Service backend Rust : scan, base, API REST/GraphQL, IGDB metadata
  • Client natif Electron (Win/Mac/Linux) avec UI React moderne
  • Cœurs libretro natifs (pas de limites WASM)
  • Multi-plateformes : le serveur tourne sur Linux/Mac/Windows, les clients idem
  • Scan IGDB automatique : jaquettes, descriptions, trailers
  • Bibliothèque centralisée : un serveur, N clients (autant de pièces que vous voulez)
  • Saves synchronisées : le serveur stocke les save states, accessibles depuis n'importe quel client
  • Multi-langue : i18n support
  • Docker support pour le serveur
  • Architecture évolutive : prévu pour supporter d'autres types de contenus (jeux PC, films, etc.)

🚀 Installation

Option 1 : Docker Compose (serveur)

# docker-compose.yml
services:
  retrom:
    container_name: retrom
    image: ghcr.io/jmberesford/retrom:latest
    restart: unless-stopped
    ports:
      - "5101:5101"   # service principal
      - "7101:7101"   # service web
    volumes:
      - ./retrom/data:/app/data          # DB SQLite + cache
      - /chemin/vers/roms:/app/roms:ro   # vos ROMs (lecture seule recommandée)
      - ./retrom/config:/app/config      # config serveur
    environment:
      - TZ=Europe/Paris
      - RETROM_LOG_LEVEL=info
      - RETROM_HOST=0.0.0.0
      - RETROM_PORT=5101
docker compose up -d

Option 2 : Binaire serveur (sans Docker)

# Télécharger la release Linux
curl -L https://github.com/JMBeresford/retrom/releases/latest/download/retrom-server-linux-x86_64 \
  -o /usr/local/bin/retrom-server
chmod +x /usr/local/bin/retrom-server
retrom-server

Option 3 : Client natif

Télécharger le client depuis releases (.dmg macOS, .exe Windows, .AppImage/.deb Linux). Pointer vers votre serveur via l'UI : Settings > Server URL.

⚙️ Configuration

  1. Dossier ROMs : configurer dans config/retrom.json ou via UI admin (/admin).
  2. IGDB credentials : pour activer le scan de métadonnées, créer un compte Twitch dev (gratuit) → obtenir Client ID + Secret → configurer dans le fichier de config.
  3. Client : pointer le client vers http://IP:5101 (ou https://... derrière un reverse proxy).
  4. Cœurs libretro : les clients natifs utilisent les cores de votre installation locale. Installer via RetroArch ou manuellement dans ~/.config/retroarch/cores/.
  5. Saves synchronisées : activer dans Settings > Sync Saves — vos save states sont uploadés sur le serveur.
  6. Multi-utilisateurs : Retrom supporte plusieurs profils client, mais l'auth serveur multi-comptes est encore en cours (WIP).
  7. Reverse proxy : app-traefik / app-caddy pour exposer en HTTPS.

🔄 Alternatives

Open Source

  • app-retroassembly — Concurrent, joue dans le navigateur (WASM)
  • RomM (rommapp/romm) — Magnifique UI, mais web (pas client natif)
  • Gaseous — Manager ROMs IGDB
  • app-gameyfin — Plutôt jeux PC + ROMs
  • LaunchBox / BigBox — Windows only, freemium
  • Pegasus Frontend — Multi-plateforme desktop
  • Daijishō — Launcher frontend mobile-like
  • ES-DE (EmulationStation Desktop Edition) — Frontend Linux/Win/Mac

Propriétaires (ce que Retrom remplace)

  • RetroArch standalone — Pas de serveur, installation locale par machine
  • Steam Big Picture + LaunchBox — Pas de serveur centralisé
  • Batocera / Recalbox / Lakka / RetroPie — Distros, pas de serveur
  • EmuDeck — Steam Deck focused
  • Antstream Arcade — Streaming officiel

Comparaison rapide

Critère Retrom RetroAssembly RomM RetroArch (bureau)
Architecture Client-serveur Serverless web Serverless web App bureau
Backend Rust n/a n/a n/a
Frontend React natif TypeScript web React web C
Cœurs libretro Natifs WASM WASM Natifs
UI Très moderne Moderne Belle Technique
Multi-clients First-class
Licence MIT MIT GPL-3.0 GPL-3.0

🔐 Sécurité

  • Pas d'auth native serveur (WIP côté roadmap). Restreindre l'accès via :
  • HTTPS obligatoire : app-traefik / app-caddy avec Let's Encrypt.
  • Dossier ROMs en :ro : le serveur n'a pas besoin d'écrire dans les ROMs, monter en lecture seule.
  • Légalité des ROMs : émulateurs légaux (libretro), ROMs soumises à la législation locale (en France : dumping d'un cartouche/CD que vous possédez est toléré pour usage privé).
  • Saves cloud : les save states uploadés sont en clair sur le serveur, à chiffrer au repos (LUKS, ZFS encryption) si sensibles.
  • Pas d'auth encore : attention, le serveur est ouvert par défaut sur le port 5101. À ne pas exposer sur Internet sans reverse proxy auth.

📚 Ressources

Pages Liées