EmulatorJS: Docker

2 minuto(s) de lectura

Docker

EmulatorJS es un fork de NeptunJS, una plataforma de emulación creada en JavaScript, que permite jugar con emuladores a través del navegador web.

EmulatorJS añade sobre NeptunJS una capa de gestión para añadir roms y poder realizar un servicio auto alojado.

Hasta el momento es capaz de emular unas 30 diferentes plataformas de juego entre las que podemos destacar:

  • Nintendo: Gameboy, NES, SNES, ...
  • Sega: Master System, Megadrive, ...
  • Arcade: Neogeo, ...
  • PSX1
  • DOOM

Como veremos a posterior obtendremos dos interfaces web, la primera que incluye el apartado de configuración y la secundaria donde podremos jugar online.

Un dato importante de este proyecto es que parte de la gestión de contenido multimedia esta alojado en la red IPFS.

Instalación

Vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/emulator/config && \
cd $HOME/docker/emulator

Ahora vamos a crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/emulator/docker-compose.yml
version: "2.1"
services:
  emulatorjs:
    image: lscr.io/linuxserver/emulatorjs
    container_name: EmulatorJS
    environment:
      - TZ=Europe/Madrid
      - PUID=1000
      - PGID=1000
      - SUBFOLDER=/ # Proxys Inversos
    volumes:
      - '~/docker/emulator/config:/data'
    ports:
      - 3002:3000
      - 3001:80
      - 4001:4001 # Red IPFS
    restart: always
EOF

Vamos a repasar los principales parámetros que hemos añadido sobre la anterior base, para poder adaptarlos a nuestro sistema y configuración especifica:

Parámetro Función
TZ=Europe/Madrid Zona horaria Europa/Madrid
PUID=1000 UID de nuestro usuario. Para saber nuestro ID ejecutar en terminal: id
PGID=1000 GID de nuestro usuario. Para saber nuestro ID ejecutar en terminal: id
SUBFOLDER=/ Parametro opcional subcarpeta de proxys inversos
~/docker/emulator/config:/data Ruta donde almacena la configuración
3002:3000 Puerto de acceso interfaz Web configuración :3002
3001:80 Puerto de acceso interfaz Web juego :3001
4001:4001 Puerto de acceso red IPFS para compartir contenido (parametro opcional)
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio

Una vez configurado, levantamos el servicio para ser configurado y ejecutado:

docker-compose up -d

Configuración

En mi caso, el servicio estaría disponible en la dirección web http://192.168.1.90:3002

Contenido adicional (REQUERIDO)

Al iniciar veremos que nos solicita descargar contenido adicional multimedia y nos crea la estructura de carpetas que usaremos a posterior.

Tan solo debemos de hacer clic en el boton Download:

Cuando finaliza el proceso somos notificados que no se incluye ninguna rom de juego por motivos legales, teclas de función, …

Personalización interfaz (OPCIONAL)

Podremos personalizar la intefaz de ejecución de emuladores y como se visualizaran cada uno de ellos:

Añadir ROM´s (REQUERIDO)

Con posibilidad de arrastrar y soltar para añadir contenido, aprovechamos para incluir el contenido en el emulador que vayamos a usar:

Configurando ROM´s (REQUERIDO)

El sistema detecta la rom añadida pero ha de escanearla para anexarla debidamente:

En el caso del ejemplo no ha identificado la versión exacta, vamos a definirla manualmente:

Una vez identificada correctamente falta añadir el multimedia y la rom al sistema para poder disfrutarla:

Entretenimiento

Con el sistema ya debidamente configurado, ahora toca el turno de jugar, para ello navegamos hacía la dirección web http://192.168.1.90:3001 en mi caso.

Y listo!