Installer EmulatorJS avec Docker

Guide d'installation de EmulatorJS sous Docker.

Installer EmulatorJS avec Docker
emulatorjs docker

Au sommaire :

  • 1-Qu'est-ce que EmulatorJS ?
  • 2-Prérequis
  • 3-Déploiement
  • 4-Configuration
  • 5-Où trouver les roms de jeux ?

1-Qu'est-ce que EmulatorJS

EmulatorJS est une application qui vous permet de scanner vos jeux rétro et d'y jouer directement sur votre navigateur web grâce à RetroArch.

L'application se compose de deux éléments :

  • Un backend NodeJS - Pour le téléchargement/la numérisation des roms, la génération/gestion des fichiers de configuration nécessaires pour faire pointer le frontend vers eux, et le téléchargement des ressources artistiques nécessaires.
  • un front-end statique basé sur le web - un mélange de fichiers JSON pour les métadonnées, d'images png pour les logos et les fonds d'écran, de vidéos pour les aperçus de jeux, et la logique de base pour le lancement et l'exécution des jeux.

Toutes les contenus (images, vidéos, interfaces) sont hébergées sur le protocole IPFS et réparties sur plusieurs grands fournisseurs avec des serveurs de partage donc pensez à ouvrir le port 4001 de votre box pour participer à l'effort collectif.

Note : il est également compatible avec le navigateur Edge des consoles Xbox One.

Pour la liste des émulateurs supportés :

C'est plutôt pas mal!!!

2-Prérequis

Il vous faudra une machine virtuelle sous Ubuntu Server 22.04 LTS.

Voici le guide pour ceux qui veulent repartir de zéro.

Virtualiser Ubuntu Server 22.04 LTS sur Proxmox VE
Guide d’installation de Ubuntu Server 22.04 LTS sur Proxmox VE avec mes meilleurs réglages.

Si vous voulez gagner du temps, utilisez un template cloud-init.

Initialiser vos machines virtuelles avec Cloud-init sur Proxmox VE
Guide d’installation de Cloud-Init qui va vous permettre d’automatiser vos déploiements

Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.

Installer Docker
Guide d’installation de Docker.

Enfin, pour exposer et sécuriser l'application sur l'internet public, il vous faudra déployer Traefik et Authelia.

Installer Traefik avec Docker
Guide d’installation de Traefik.
Installer Authelia avec Docker
Guide d’installation de Authelia.

3-Déploiement

Commencez par créer un dossier "docker" à la racine du dossier utilisateur"

mkdir -p ~/docker

Créez un fichier nommé "compose.yml"

touch ~/docker/compose.yml

Ouvrez le fichier "compose.yml" et copiez cette configuration.

version: "3.9"

networks:
  web:

services:

  traefik:
    container_name: traefik
    image: traefik:latest
    restart: always
    network:
      web:
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${APPDATA}/traefik/logs:/logs
      - ${APPDATA}/traefik/traefik.yml:/traefik.yml
      - ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
      - ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik-dash.entrypoints=websecure
      - traefik.http.routers.traefik-dash.rule=Host(`traefik.<votredomaine>.ovh`)
      - traefik.http.routers.traefik-dash.service=api@internal
      - "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
      
  authelia:
    image: authelia/authelia
    container_name: authelia
    volumes:
      - ${APPDATA}/authelia:/config
    networks:
      - web
    labels:
      - traefik.enable=true
      - traefik.http.routers.authelia.entrypoints=websecure
      - traefik.http.routers.authelia.rule=Host(`authelia.<votre_nom_de_domaine>`)
      - traefik.http.routers.authelia.tls.certresolver=letsencrypt
    ports:
      - 9091:9091
    restart: unless-stopped
    healthcheck:
      disable: true
    environment:
      - TZ=${TZ}

  emulatorjs:
    image: lscr.io/linuxserver/emulatorjs:latest
    container_name: emulatorjs
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - SUBFOLDER= / #optional
    volumes:
      - ${APPDATA}/emulatorjs:/config
      - ${MEDIAS}/games:/data
    networks:
      - web
    ports:
      - 3000:3000
      - 80:80
      - 4001:4001 #optional
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.emulatorjs.entrypoints=websecure
      - traefik.http.routers.emulatorjs.rule=Host(`votre_nom_de_domaine`)
      - traefik.http.routers.emulatorjs.service=emulatorjs-svc
      - traefik.http.services.emulatorjs-svc.loadbalancer.server.port=80
      - traefik.http.routers.emulatorjs.tls.certresolver=lets-encrypt
      - 'traefik.http.routers.emulatorjs.middlewares=chain-authelia@file'

Déployez l'application avec la commande suivante.

docker compose up -d

Avant d'accéder à EmulatorJS, tapez l'adresse IP du serveur suivi de son numéro de port (3000) pour accéder à l'interface d'administration.

4-Configuration

Cliquez sur "Download" pour télécharger les fichiers de base (merci aux contributeurs de IPFS).

Cliquez sur "File Management" puis sur le support que vous souhaitez (sega32x pour faire facile) et faites double clique sur le dossier "roms".

Faites un clique-droit, cliquez sur "Upload" et "Sélect. fichiers" pour ajouter vos roms

Normalement vous devriez retrouver vos jeux à l'endroit prévu.

Ensuite, allez dans "Rom Management" et cliquez sur "Scan" pour que les jeux soient visibles à travers l'interface (l'application détecte automatiquement l'ajout de roms).

EmulatorJS va télécharger les logos et les vidéos de chaque jeu.

Ensuite, sur la gauche, cliquez sur "sega32x qui vient d'être ajouté.

Si tout est en rouge, c'est que tout les sont identifiés. Cliquez sur "Download All Available Arts" pour téléchargez les logos et les vidéos de présentation des jeux.

Si tout est vert, cela signifie que chaque jeu dispose de son logo et sa vidéo de présentation.

Maintenant, branchez une manette à votre PC et tapez l'adresse IP de votre machine virtuelle ou conteneur LXC suivi du port (9005 dans la configuration Docker Compose).

Félicitation!!!!! Vous avez configurer votre instance EmulatorJS comme un chef!!!!

Note : si vos jeux apparaissent pas ou mal, nettoyez le cache de votre navigateur pour actualiser.

5-Où trouver les roms de jeux ?

Pour les débutants, vous vous posez la question "ou puis-je trouver des roms ?".

Réponse : Internet Archive is your friend!!!!!

Cliquez sur le lien suivant et allez vous créé un identifiant pour pouvoir télécharger les romset qui vous intéresse.

Internet Archive est une bibliothèque à but non lucratif regroupant des millions de livres, de films, de logiciels, de musique, de sites web et bien plus encore, tous gratuits.

no-intro_romsets directory listing

Donc je vous épargne les messages habituels du type "pirater c'est mal m'voyez".

Sources :

Self Hosted Web Based Emulation | LinuxServer.io