手把手教你在NAS搭建复古游戏游戏厅:跨平台畅玩经典游戏
还记得那些放学后冲回家,只为在红白机前奋战一小时的童年时光吗?如今,借助开源项目 EmulatorJs,你完全可以在自己的NAS上重建一个私人复古游戏厅,随时随地重温那些经典的像素世界。
EmulatorJs 是一个基于 Web 的强大模拟器平台,它直接在浏览器中运行,让你无需安装任何客户端,就能畅玩数十款经典游戏主机上的作品。从任天堂的红白机(NES)、Game Boy,到索尼的初代 PlayStation(PSX),再到世嘉的 MD、Saturn,它几乎囊括了所有80、90年代的主流游戏平台。
支持的游戏平台包括: 3do、arcade、atari2600、atari5200、atari7800、colecovision、doom、gb、gba、gbc、jaguar、lynx、msx、n64、nds、nes、ngp、odyssey2、pce、psx、sega32x、segaCD、segaGG、segaMD、segaMS、segaSaturn、segaSG、snes、vb、vectrex、ws 等。
想先睹为快?可以访问其官方演示站点体验一下:https://demo.emulatorjs.org

部署指南:通过 Docker Compose 一键安装
对于NAS用户而言,使用 Docker Compose 是部署 EmulatorJs 最快捷、最可靠的方式。你只需要准备一份配置文件,即可完成所有环境的搭建。
下面是一份标准的 docker-compose.yml 配置文件示例,你可以直接复制使用:
services:
emulatorjs:
image: linuxserver/emulatorjs:latest
container_name: emulatorjs
ports:
- 8080:80
- 3000:3000
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- ./games:/data
restart: unless-stopped
配置文件关键参数解析:
8080端口:这是游戏大厅的访问端口。部署完成后,你将在浏览器中通过这个端口进入游戏选择界面。3000端口:这是后台管理系统的端口。所有游戏ROM的导入、系统配置、扫描管理都在这里完成。PUID/PGID:容器运行的用户和组ID。这里设置为0(即root)是为了避免后续文件读写可能出现的权限问题。如果你的NAS有严格的安全策略,可以调整为拥有相应权限的非root用户ID。TZ:设置容器时区,确保日志和时间显示正确。示例为Asia/Shanghai(亚洲/上海)。/config卷:映射到本地的./config目录,用于持久化保存EmulatorJs的所有应用配置、游戏存档和BIOS文件。/data卷:映射到本地的./games目录,这是存放所有游戏ROM文件的核心目录。建议先启动容器,确认服务运行正常后,再将游戏文件放入此目录。
将上述配置保存为 docker-compose.yml 文件,然后在同一目录下执行 docker-compose up -d 命令,服务就会在后台启动。
配置与游玩:从后台设置到游戏启动
容器成功运行后,真正的配置才刚刚开始。跟着下面的步骤,一步步把你的游戏库搭建起来。
-
访问后台管理系统 在浏览器中输入
http://你的NAS的IP地址:3000,即可进入EmulatorJs的后台。这里是整个游戏厅的“控制中心”。
-
完成首次初始化 首次进入后台,系统会弹窗提示需要下载核心的BIOS等支持文件。这个过程通常是自动的,但依赖于网络环境。如果遇到下载失败,不必担心,关闭弹窗后多尝试几次“系统”页面里的手动下载即可。

当看到“Downloaded All Files”的成功提示时,说明基础文件已就绪,可以关闭弹窗进行下一步。

-
导入游戏ROM文件
- 点击后台左侧菜单的“文件管理”。我们以添加GBA游戏为例。

- 进入文件管理器后,导航到
/data目录。这个目录就是我们在Docker Compose中映射的本地./games文件夹,两者内容完全同步。
- 游戏ROM需要按平台放入对应的
roms子文件夹。例如,GBA游戏就应放入/data/roms/gba目录中。你可以通过SFTP、SMB等方式将电脑上的.gba文件传输进去,也可以直接使用后台提供的网页上传功能,非常方便。

- 点击后台左侧菜单的“文件管理”。我们以添加GBA游戏为例。
-
扫描并管理游戏库
- 游戏文件放置好后,进入“Rom管理”页面,点击“扫描”按钮,让系统识别新加入的游戏。

- 常见问题:如果扫描时出现权限错误(Permission Denied),这通常是因为宿主机(你的NAS)上
./games目录的权限与Docker容器内运行的PUID/PGID不匹配。请检查并确保容器用户有该目录的读写权限。
- 扫描成功后,所有游戏会整齐地列在列表中。

- 最后一步,将游戏关联到前端界面。进入“系统”页面,选择对应的游戏平台(如GBA)。通常需要完成两个步骤:第一步是下载游戏的元数据(如封面图,可选);第二步是点击“添加游戏到系统配置”,将刚才扫描到的游戏正式加入该平台的前端游戏列表。

- 游戏文件放置好后,进入“Rom管理”页面,点击“扫描”按钮,让系统识别新加入的游戏。
-
启动游戏,重温经典!
- 现在,打开浏览器,访问
http://你的NAS的IP地址:8080,华丽复古的游戏大厅主界面就在眼前了!
- 使用键盘方向键或鼠标,选择你想游玩的游戏主机平台。

- 进入平台后,右侧会显示所有已添加的游戏。点击游戏封面或名称,即可瞬间载入,开始游玩!

- 游戏内操作提示:在游戏过程中,按下键盘上的 F1 键,可以呼出模拟器菜单。在这里你可以进行实时存档/读档、调整按键配置、修改画面滤镜等操作,极大提升了游玩便利性。

- 现在,打开浏览器,访问
-
移动端访问体验 EmulatorJs 同样支持通过手机或平板电脑的浏览器访问。你可以直接在移动设备上输入NAS的地址和8080端口进行游戏。不过,目前网页对移动端的适配和触控操作优化还有提升空间,体验上可能不如电脑端完美,但简单游玩没有问题。

-
资源占用情况 完全不用担心你的NAS性能不够!EmulatorJs 作为一个Web应用,资源消耗极低。即使在低功耗的NAS设备上运行,CPU和内存占用也微乎其微,不会影响NAS的其他本职工作。

体验总结与评价
经过一番部署和体验,EmulatorJs 给我留下了深刻的印象。
它的最大优势无疑是其惊人的平台兼容性,几乎将整个游戏史前半段的经典主机一网打尽,对于怀旧玩家来说,这本身就是一件充满幸福感的事情。将这么多游戏资源整合进一个统一的Web界面,随时随地通过浏览器就能玩,概念非常酷。
当然,它也存在一些可以改进的地方。首次配置流程对于新手来说略显繁琐,后台多个功能页面之间的逻辑关系需要花点时间理解。我在初次部署时也参考了不少资料才理顺。此外,移动端的操控体验确实还有优化潜力。
但总的来说,这些小瑕疵并不掩盖其光芒。如果你是一位复古游戏爱好者,并且拥有一台NAS,那么搭建一个属于自己的 EmulatorJs 游戏厅绝对是一项值得投入的乐趣工程。它不仅仅是一个工具,更像是一个通往过去的数字时光机。
综合推荐指数:★★★★☆(情怀无价,非常值得尝试) 使用体验:★★★☆☆(电脑端流畅完美,手机端基本可用) 部署难度:★★☆☆☆(步骤清晰,稍有耐心即可成功)