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
- Dossier ROMs : configurer dans
config/retrom.jsonou via UI admin (/admin). - 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.
- Client : pointer le client vers
http://IP:5101(ouhttps://...derrière un reverse proxy). - Cœurs libretro : les clients natifs utilisent les cores de votre installation locale. Installer via RetroArch ou manuellement dans
~/.config/retroarch/cores/. - Saves synchronisées : activer dans Settings > Sync Saves — vos save states sont uploadés sur le serveur.
- Multi-utilisateurs : Retrom supporte plusieurs profils client, mais l'auth serveur multi-comptes est encore en cours (WIP).
- 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 :
- Reverse proxy + app-authelia (auth basique + 2FA)
- VPN (app-tailscale, app-wireguard) pour accès LAN distant
- Restriction IP dans le firewall
- 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
- cat-gaming — Catégorie Gaming
- app-retroassembly — Concurrent web (WASM)
- app-gameyfin — Library manager jeux
- app-gamevault — Steam auto-hébergé
- app-traefik — Reverse proxy
- app-tailscale — VPN mesh
- recettes-docker-compose — Templates Docker
- securisation-home-lab — Durcir l'infra