163 lines
7.8 KiB
Markdown
163 lines
7.8 KiB
Markdown
---
|
|
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](https://retrom.app/) |
|
|
| **GitHub** | [JMBeresford/retrom](https://github.com/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\|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)
|
|
|
|
```yaml
|
|
# 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
|
|
```
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
### Option 2 : Binaire serveur (sans Docker)
|
|
|
|
```bash
|
|
# 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](https://github.com/JMBeresford/retrom/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](https://github.com/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
|
|
|
|
- [Site officiel](https://retrom.app/)
|
|
- [GitHub JMBeresford/retrom](https://github.com/JMBeresford/retrom)
|
|
- [Reddit announcement](https://www.reddit.com/r/emulation/comments/1g08tiw/retrom_020_released_a_selfhosted_emulationfocused/)
|
|
- [Discord communautaire](https://discord.gg/retrom)
|
|
|
|
## 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
|