Classic games were released on platforms no longer available or are difficult to come by without resorting to sourcing a ROM file. With this file in hand, an emulator can be installed on just about any device to run the game ROM and allow you to relive your childhood or see what all the fuss with earlier years of gaming was about. This is great but you need to have your device with you to play all your games, but what if there was a way to stream ROMs to any device? You can do just this by transforming a NAS into a gaming emulator.

What you will need

To run EmulatorJS on a NAS, we're going to require a NAS device or installation and a copy of EmulatorJS. I would suggest using a docking container, which makes simplifies the process. Since it's the most popular brand of NAS, we'll be using a Synology enclosure. The Synology DiskStation DS224+ is perfect with two drive bays, an Intel processor, and enough RAM for running a few containers. You can get away with using a more budget-friendly enclosure, but this is good for handling other tasks, as well as emulation and remote connections.

Synology DiskStation DS224+
Brand
Synology
CPU
Intel Celeron J4125
Memory
2 GB DDR4
Drive Bays
2
Ports
2x 1GbE, 2x USB-A 3.2 Gen 1, 1x eSATA
Caching
No

The Synology DiskStation DS224+ is the direct successor to the popular DS220+, which was praised for the value it offered to consumers looking to buy their first enclosure. The DS224+ has an Intel Celeron processor, 2GB of DDR4 RAM, and support for Synology's excellent DSM operating system and catalog of apps.

How to turn a NAS into an emulator

For this guide, I'll be using EmulatorJS and a two-bay Synology DiskStation DS220+ NAS. The guide will work with other NAS enclosures and operating systems since all we're using is a docker container, which should be able to run on any NAS. The only part of these steps that may differ slightly is how to download and install the container itself.

  1. Log into your Synology NAS.
  2. Open Package Center.
  3. Download and install Container Manager.
  4. Click Done.
  5. Open Control Panel.
  6. Go to Connectivity > Terminal & SNMP.
  7. Check "Enable SSH service."
  8. Click Apply.
  9. SSH into the Synology NAS using your login and password:
    ssh username@synologyIP
  10. Run the id command:
    id
  11. Copy down the UID and UID.
  12. Open Container Manager.
  13. Click Registry.
  14. Search for "linuxserver/emulatorjs."
  15. Click linuxserver/emulatorjs.
  16. Click Download.
  17. Click Apply.
  18. Click linuxserver/emulatorjs.
  19. Click Run.
  20. Click Next.
  21. Add local ports to the two listed connections (I used 4955 and 4956).
  22. Map /data and /config locations to the docker shared folder.
  23. Add the following to the list of environment variables, referencing our notes from the SHH step: PUID: UID PGID: GID
  24. Click Next.
  25. Click Done.

You can now access EmulatorJS using your Synology IP and the configured ports. Load the EmulatorJS Manager and download the default files. Now you will be able to load up the emulator with ROM files and enjoy all your favorite classic games, from Zelda to Gauntlet. If you can't connect to EmulatorJS, ensure you've configured the ports and volumes correctly. If the NAS is running a firewall, you may need to add the ports to the whitelist.

Emulating games with EmulatorJS

EmulatorJS is easy to use through a web browser. Simply download the default config files and you're good to go. ROM files can be dropped into the web-based file manager and then scanned for use. Running the emulator through the browser is a great way to take advantage of the availability on any device. Performance will vary depending on system load and number of clients running, but even with a couple of instances running the Synology NAS was only using around 50% of the CPU.