130 lines
5.6 KiB
Markdown
130 lines
5.6 KiB
Markdown
---
|
|
title: Gaseous
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, gaming, rom, retro, emulation, metadata, igdb]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Gaming, https://github.com/gaseous-project/gaseous-server]
|
|
---
|
|
|
|
# 💿 Gaseous
|
|
|
|
> Gestionnaire de ROMs avec identification automatique par hash et émulateur web intégré (EmulatorJS) — un concurrent direct de RomM.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://github.com/gaseous-project/gaseous-server |
|
|
| **GitHub** | https://github.com/gaseous-project/gaseous-server |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage** | C# (.NET / ASP.NET Core) + JavaScript (EmulatorJS) |
|
|
| **Étoiles** | 895 ⭐ |
|
|
| **Dernière MAJ** | 2026-05-14 (v1.7.14) |
|
|
| **Catégorie** | [[cat-gaming]] |
|
|
|
|
## Description
|
|
|
|
**Gaseous** est un gestionnaire de ROMs self-hosted qui combine trois fonctions en une seule application : **identification automatique des jeux** par hash de fichier, **récupération de métadonnées** depuis plusieurs sources (IGDB, Hasheous), et **émulation en navigateur** via EmulatorJS. L'utilisateur dépose ses ROMs brutes, Gaseous calcule leur empreinte, les associe au bon titre (avec jaquette, description, date de sortie, studio) et permet d'y jouer directement depuis le navigateur.
|
|
|
|
Le projet se distingue de [[app-romm]] par son **architecture en briques** (un process host séparé pour les tâches lourdes, une lib `gaseous-lib` réutilisable, un CLI dédié) et par son **focus sur le matching par signature** plutôt que par nom de fichier — ce qui est crucial pour les sets ROMs où les fichiers sont renommés (No-Intro, Redump, etc.). Gaseous gère aussi les fichiers CHD et les sets multi-disques.
|
|
|
|
L'authentification (à partir de v1.7.0) permet d'exposer l'instance sur Internet en relative sécurité, mais l'équipe recommande de privilégier l'accès via VPN ([[app-wireguard]], [[app-tailnet]]) pour limiter la surface d'attaque. Le projet est soutenu par un petit groupe de contributeurs et un Ko-fi.
|
|
|
|
## Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
gaseous:
|
|
image: ghcr.io/gaseous-project/gaseous-server:latest
|
|
container_name: gaseous
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- db
|
|
environment:
|
|
- GASEOUS_DB_CONNECTION_STRING=Server=db;Port=3306;Database=gaseous;Uid=gaseous;Pwd=changeme;
|
|
- GASEOUS_IGDB_CLIENT_ID=your_twitch_client_id
|
|
- GASEOUS_IGDB_CLIENT_SECRET=your_twitch_client_secret
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Europe/Paris
|
|
volumes:
|
|
- gaseous_config:/app/config
|
|
- gaseous_roms:/app/roms # vos ROMs
|
|
- gaseous_media:/app/media # cache des jaquettes
|
|
ports:
|
|
- "5192:5192"
|
|
|
|
db:
|
|
image: mariadb:11.1
|
|
container_name: gaseous-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- MARIADB_DATABASE=gaseous
|
|
- MARIADB_USER=gaseous
|
|
- MARIADB_PASSWORD=changeme
|
|
- MARIADB_RANDOM_ROOT_PASSWORD=yes
|
|
volumes:
|
|
- gaseous_db:/var/lib/mysql
|
|
|
|
volumes:
|
|
gaseous_config:
|
|
gaseous_roms:
|
|
gaseous_media:
|
|
gaseous_db:
|
|
```
|
|
|
|
### Option 2 : Installation manuelle (Windows)
|
|
|
|
Un installeur WiX est fourni dans les releases. Pré-requis : .NET 8 runtime, MariaDB 11+ et ffmpeg dans le PATH.
|
|
|
|
## Configuration
|
|
|
|
- **Clé API IGDB** : créer une app Twitch (https://api-docs.igdb.com/#account-creation) pour activer le scraping de métadonnées
|
|
- **Hasheous proxy** : alternative open source à IGDB, évite la dépendance Twitch
|
|
- **Signatures** : importer le pack de signatures via *Settings > Signatures* pour le matching par hash
|
|
- **Scan de bibliothèque** : tâche de fond *Library Scan* qui ré-identifie les ROMs (peut prendre plusieurs heures sur un gros set)
|
|
- **Lecture depuis le navigateur** : EmulatorJS est intégré, lancer un jeu depuis l'UI ouvre directement le player
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-romm]] — Concurrent direct, Python/TypeScript, scan plus rapide, communauté plus large
|
|
- [[app-retrom]] — Centralized game management, Kotlin, interface moderne
|
|
- [[app-gameyfin]] — Video game manager en Kotlin, plus jeune
|
|
- [[app-retroassembly]] — Collection retro dans le navigateur, TypeScript
|
|
- **Lutris** — Client de jeu Linux (pas de web UI)
|
|
- **Pegasus Frontend** — Frontend pour émulateurs desktop
|
|
|
|
### Propriétaires
|
|
- **EmuMovies / GameTDB** — Bases de métadonnées centralisées (pas self-hosted)
|
|
- **LaunchBox / BigBox** — Frontends Windows payants
|
|
|
|
## Sécurité
|
|
|
|
- **Authentification** : créer un compte admin dès le premier lancement, désactiver l'inscription publique
|
|
- **Reverse proxy** ([[app-traefik]]) avec TLS obligatoire si exposition WAN
|
|
- **Clé IGDB** : ne pas commit dans le compose, utiliser un `.env` ou les secrets Docker
|
|
- **Base de données** : MariaDB dans un réseau Docker isolé, mot de passe fort
|
|
- **Sauvegardes** : `/app/config` (utilisateurs) + dump SQL de MariaDB
|
|
|
|
## Ressources
|
|
|
|
- [GitHub gaseous-project/gaseous-server](https://github.com/gaseous-project/gaseous-server)
|
|
- [Wiki Installation](https://github.com/gaseous-project/gaseous-server/wiki/Installation)
|
|
- [Wiki ROM Metadata Matching](https://github.com/gaseous-project/gaseous-server/wiki/ROM-Metadata-Matching)
|
|
- [Discord officiel](https://discord.gg/Nhu7wpT3k4)
|
|
- [EmulatorJS](https://github.com/EmulatorJS/EmulatorJS) — moteur d'émulation utilisé
|
|
|
|
## Pages Liées
|
|
- [[cat-gaming]] — Catégorie Gaming
|
|
- [[app-romm]] — Concurrent principal
|
|
- [[app-retrom]] — Alternative moderne
|
|
- [[app-traefik]] — Reverse proxy
|
|
- [[app-authelia]] — SSO recommandé
|
|
- [[recettes-docker-compose]] — Templates Docker
|