153 lines
7.5 KiB
Markdown
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
|