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

153 lines
7.5 KiB
Markdown

---
title: RetroAssembly
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, gaming, emulation, retroarch, rom-manager, frontend, typescript, wasm]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Gaming, https://github.com/arianrhodsandlot/retroassembly]
---
# 🕹️ RetroAssembly
> **Cabinet de collection de jeux rétro personnel** — frontend web pour RetroArch via WebAssembly, joue directement dans le navigateur, self-hosted.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [retroassembly.com](https://www.retroassembly.com/) |
| **GitHub** | [arianrhodsandlot/retroassembly](https://github.com/arianrhodsandlot/retroassembly) |
| **License** | MIT |
| **Langage** | TypeScript |
| **Étoiles** | ⭐47 (catalogue) |
| **Dernière MAJ** | v6 (2026, PlayStation + favoris) |
| **Catégorie** | [[cat-gaming\|Gaming]] |
## 📝 Description
**RetroAssembly** est un **frontend web pour RetroArch** qui s'exécute **directement dans le navigateur** via **WebAssembly**. C'est une application TypeScript moderne qui permet de **jouer à des jeux rétro depuis n'importe quel navigateur**, sans installer de client natif. L'auteur (arianrhodsandlot) l'a conçue comme "the personal retro game collection cabinet" — un meuble virtuel pour ranger et lancer sa collection de ROMs légalement acquises.
L'originalité technique majeure : RetroAssembly embarque les **cœurs libretro (cores) compilés en WebAssembly** (RetroArch-WASM). Quand vous lancez un jeu, le cœur correspondant (Snes9x pour SNES, MAME pour les arcade, etc.) se charge dans votre onglet et exécute la ROM. **Tout se passe côté client** : le serveur ne fait que stocker et servir les ROMs, le rendu et l'émulation sont dans le navigateur.
RetroAssembly est livré avec une **UI particulièrement soignée** : jaquettes automatiques, métadonnées (région, développeur, année), favoris, replay, **load de save states RetroArch externes** (load d'un état de sauvegarde venant de RetroArch desktop), et un système d'**émulation distribuée** dans le navigateur. Compatible avec NES, SNES, N64, Game Boy, GBA, DS, PS1, et bien d'autres selon les cœurs WASM disponibles.
**Fonctionnalités clés** :
-**Lecture dans le navigateur** via RetroArch-WASM (pas de client natif)
-**Multi-consoles** : NES, SNES, N64, GB, GBA, DS, PS1, Genesis, MAME, ...
-**UI moderne** : jaquettes, métadonnées, favoris
-**Load save states RetroArch** (depuis une instance desktop)
-**Bibliothèque organisée** : recherche, filtres, tags
-**100% client-side rendering** : le serveur ne fait que stocker
-**Docker Hub officiel** pour déploiement rapide
-**Thèmes** : clair/sombre
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
retroassembly:
container_name: retroassembly
image: arianrhodsandlot/retroassembly:latest
restart: unless-stopped
ports:
- "3010:3000"
volumes:
- ./retroassembly/data:/app/data
- /chemin/vers/roms:/app/roms # vos ROMs légalement acquises
environment:
- TZ=Europe/Paris
# Stockage max par fichier (optionnel)
- MAX_FILE_SIZE=2147483648 # 2 Go
```
```bash
docker compose up -d
```
Accéder à `http://IP:3010`. La première visite télécharge les cœurs WASM à la demande (cache navigateur ensuite).
### Option 2 : Installation manuelle
```bash
git clone https://github.com/arianrhodsandlot/retroassembly.git
cd retroassembly
npm install
npm run build
node dist/server.js
```
### Option 3 : Utiliser la version hébergée (non self-hosted)
L'auteur propose une instance de démo sur [retroassembly.com](https://www.retroassembly.com/) — utile pour tester avant d'auto-héberger.
## ⚙️ Configuration
1. **Dossier ROMs** : monter votre bibliothèque de ROMs dans `/app/roms`. RetroAssembly scanne récursivement.
2. **Cœurs WASM** : téléchargés à la demande par le navigateur, pas de config serveur requise.
3. **Métadonnées** : scraper automatique via ScreenScraper.fr ou autre (configurer l'API key dans `data/config.json`).
4. **Sauvegardes** : les save states sont stockées **dans le navigateur** (IndexedDB) — utiliser le même navigateur pour les retrouver, ou exporter manuellement.
5. **Thèmes** : clair/sombre selon préférence utilisateur (cookie).
6. **Reverse proxy** : [[app-traefik]] ou [[app-caddy]] recommandé pour HTTPS. Pas de configuration spéciale pour les WebSockets ici, c'est client-side WASM.
## 🔄 Alternatives
### Open Source (frontends d'émulation)
- [[app-retrom]] — Alternative moderne, backend Rust + frontend TypeScript/React
- **RomM** — Beautiful, powerful ROM manager ([rommapp/romm](https://github.com/rommapp/romm))
- **Gaseous** — ROM manager avec scan IGDB
- **Gameyfin** — Library manager jeux ([[app-gameyfin]])
- **EmulatorJS** — Lecteur émulateur browser
- **RetroArch Web** — Build WebAssembly officiel de RetroArch
- **Jellyfin + RetroArch** — Pas natif
- **LaunchBox / BigBox** — Windows only, propriétaire freemium
- **Pegasus Frontend** — Multi-plateforme desktop, pas web
### Propriétaires (ce que RetroAssembly remplace)
- **RetroArch (builds officiels)** — Pas de serveur, installation locale par utilisateur
- **Batocera / Recalbox / Lakka / RetroPie** — Distros complètes, pas self-hosted serveur
- **EmuDeck** — Steam Deck, pas self-hosted
- **Antstream Arcade** — Streaming officiel, propriétaire
- **Nintendo Switch Online** — Émulation propriétaire Nintendo
### Comparaison rapide
| Critère | RetroAssembly | Retrom | RomM | RetroArch (bureau) |
| :--- | :--- | :--- | :--- | :--- |
| Type | Frontend web | Frontend + service | Frontend web | App bureau |
| Cible | Navigateur | Client natif + serveur | Navigateur | Desktop |
| WASM cores | ✅ | ❌ (libretro natif) | ❌ | n/a |
| UI | Moderne | Très moderne | Belle | Technique |
| Licence | MIT | MIT | GPL-3.0 | GPL-3.0 |
## 🔐 Sécurité
- **ROMs légales uniquement** : RetroAssembly est légal, mais le téléchargement de ROMs est soumis à la législation de votre pays (en France, dumping légal d'un cartouche/CD que vous possédez ; en Suisse/Canada, plus permissif).
- **HTTPS** : exposer via [[app-traefik]] ou [[app-caddy]] pour éviter l'écoute des requêtes (bien que les ROMs ne soient pas sensibles en soit).
- **Pas d'auth native** : RetroAssembly n'a pas d'authentification par défaut. Pour limiter l'accès, mettre derrière [[app-authelia]] ou restreindre par IP/VPN ([[app-tailscale]]).
- **Save states côté navigateur** : attention si vous partagez un PC, les sauvegardes sont dans IndexedDB et accessibles à tous les profils navigateur.
- **Limites navigateur** : le WebAssembly a un plafond de RAM (2-4 Go), les jeux très lourds (PS1+ surtout N64) peuvent ramer. Pour les jeux exigeants, préférer un client natif RetroArch.
## 📚 Ressources
- [Site officiel](https://www.retroassembly.com/)
- [GitHub arianrhodsandlot/retroassembly](https://github.com/arianrhodsandlot/retroassembly)
- [Docker Hub](https://hub.docker.com/r/arianrhodsandlot/retroassembly)
- [Documentation libretro cores WASM](https://github.com/arianrhodsandlot/retroarch-wasm-builds)
## Pages Liées
- [[cat-gaming]] — Catégorie Gaming
- [[app-retrom]] — Frontend moderne concurrent
- [[app-gameyfin]] — Library manager jeux
- [[app-traefik]] — Reverse proxy
- [[app-authelia]] — Ajouter une auth
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Durcir l'infra