侧边栏壁纸
博主头像
羊刀仙的部落格 博主等级

很有力量。

  • 累计撰写 306 篇文章
  • 累计创建 60 个标签
  • 累计收到 15 条评论

目 录CONTENT

文章目录

把几百款老游戏装进 NAS:RomM打造私人「Steam游戏库」

羊刀仙
2026-09-01 / 0 评论 / 0 点赞 / 2 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
GW树洞

高速稳定 · 海外专线

  • 自用推荐
  • 90天使用时长
  • 70+ 节点分布
  • IEPL专线 油管4K无压力
  • 全平台客户端
  • 不限制在线设备
立即注册

如果平时会玩一些老游戏,时间长了应该很容易遇到一个问题:ROM 越存越多。

据我所知,也存在相当一部分的模拟器玩家。FC、SFC、GBA、PS1、PS2……文件都在硬盘里,但真正想玩的时候,还得自己找目录、找封面、找对应模拟器。

既然 NAS 本身就是用来集中管理数据的,那么游戏库其实也完全可以放进去统一管理。

本篇文章带一个新项目:RomM。它是一套开源、自托管的 ROM 游戏库管理系统,可以自动扫描游戏、匹配封面和游戏信息、建立收藏,也支持通过浏览器直接运行部分游戏。简单来说就是,把 NAS 里的 ROM 文件,整理成一个类似 Steam 游戏库的网页界面。

gallery.png

RomM 能做什么?

RomM 的核心功能其实不只是显示 ROM 文件。它可以扫描 NAS 中的游戏库,然后通过 IGDB、ScreenScraper、Hasheous、RetroAchievements、SteamGridDB 等数据源补全:

  • 游戏名称
  • 游戏封面
  • 游戏介绍
  • 发售日期
  • 平台信息
  • 截图
  • 游戏成就
  • 其他元数据

同时支持游戏收藏、标签、多用户,以及 EmulatorJS、Ruffle 等浏览器端游戏运行方式。我们最终所获得的是,这种管理方式舒服很多。一整套带封面、分类和详细信息的游戏资料库。这种管理方式舒服很多。

部署流程

以威联通NAS为例,通过Docker Compose的方式进行部署。

部署代码如下:

services:

  romm:
    image: rommapp/romm:latest
    container_name: romm
    restart: unless-stopped

    depends_on:
      romm-db:
        condition: service_healthy

    environment:
      DB_HOST: romm-db
      DB_NAME: romm
      DB_USER: romm
      DB_PASSWD: romm
      ROMM_DB_DRIVER: mariadb

      # SSH 执行 openssl rand -hex 32
      # 把新生成的密钥填到下面
      ROMM_AUTH_SECRET_KEY: "CHANGE_THIS_64_CHAR_SECRET"

      TZ: Asia/Shanghai
      HASHEOUS_API_ENABLED: "true"

    ports:
      - "8180:8080"

    volumes:
      # RomM / Docker 运行数据:系统卷
      - /share/Container/romm/resources:/romm/resources
      - /share/Container/romm/redis-data:/redis-data
      - /share/Container/romm/assets:/romm/assets
      - /share/Container/romm/config:/romm/config

      # 游戏资源:独立大容量共享文件夹
      - /share/Games/roms:/romm/library/roms
      - /share/Games/bios:/romm/library/bios


  romm-db:
    image: mariadb:latest
    container_name: romm-db
    restart: unless-stopped

    environment:
      MARIADB_ROOT_PASSWORD: romm
      MARIADB_DATABASE: romm
      MARIADB_USER: romm
      MARIADB_PASSWORD: romm

    volumes:
      # 注意权限问题,创建失败检查此处访问权限
      - /share/Container/romm/database:/var/lib/mysql

    healthcheck:
      test:
        - CMD-SHELL
        - 'mariadb -h 127.0.0.1 -uromm -promm -D romm -e "SELECT 1;" >/dev/null 2>&1 || exit 1'

      start_period: 30s
      interval: 10s
      timeout: 5s
      retries: 5

打开威联通的Container Station,创建新的应用程序。

截屏2026-08-31 13.29.47.png

使用介绍

部署完毕后,浏览器输入NAS_IP:8180即可访问页面。首先是初始化,可用平台部份,不是特别建议勾选全部。官方文档也明确说明,平台目录必须匹配对应 slug。如果勾选全部,你的 /share/Games/roms 下面可能一下子多出几百个空目录,File Station 看起来会很乱。

截屏2026-08-31 13.57.49.png

这里为了方便测试和展示,以及防止风险,挑选了作者表明免费的几个平台:Game BoyGame Boy AdvanceNintendo Entertainment System。选择好后,点击「下一步」。

截屏2026-08-31 14.22.36.png

接下来创建管理员账户。继续「下一步」。

截屏2026-08-31 14.25.09 拷贝.png

元数据源部份都是缺失的,等会后续到面板中配置即可。点击「完成」。另外,其实 RomM 官方把 Hasheous 作为「Quick Starter」方案:不需要 API Key,可以通过 ROM 的 Hash 匹配游戏,并返回 IGDB 的标题、简介和封面。

截屏2026-08-31 14.29.21.png

搞定之后,自动跳转到登录界面,我们输入账户和密码即可。

截屏2026-08-31 14.33.42.png

初次登录界面如下,我暂时还没预置游戏。现在可以手动上传,如果上传可以点击下扫描。

截屏2026-08-31 14.34.52.png

先右上角点击账户,进入「元数据源」,可以看到 Hasheous 已经成功连接。官方推荐的组合(红框圈的3个),大家可以进行配置。

截屏2026-08-31 14.35.40.png

然后就是上传了。可以在页面直接上传。也可以直接拷贝进NAS。*.gba文件复制到/share/Games/roms/gba/*.nes则复制到/share/Games/roms/nes/

截屏2026-08-31 14.56.17.png

游戏其实挺好找的,各种大佬提供的免费合法库。

截屏2026-08-31 15.13.47.png

论免费资源的话,Game Boy 数量应当最多,GBDev 社区维护的 Homebrew 档案库,专门收集 GB、GBC、GBA、NES Homebrew;其数据库目前约有 1300 个 GB/GBC 条目、200 个 GBA 条目和约 23 个 NES 条目。

截屏2026-08-31 15.15.34.png

扫描和元数据匹配得花点时间,毕竟我一次上传了几百个~

截屏2026-08-31 15.17.17.png

点击平台进去,可以看到刮削好的游戏。

截屏2026-08-31 15.59.56.png

随便点击一个进去,可以看具体信息。

截屏2026-08-31 15.55.59.png

还可选择存档、打补丁、记录游戏和分享之类。

截屏2026-08-31 16.18.23.png

进入游戏会自动全屏,底部提供了存档、画面设置等操作按钮。

截屏2026-08-31 16.05.10.png

简单玩了玩,体验还阔以。

截屏2026-08-31 16.08.02.png

另外模拟器串流,玩家对战等,大家可以参考下官方wiki。

截屏2026-08-31 16.13.14.png

关于多人联机,其实就是在挂载的/share/Container/romm/config中有个config.yml文件。在里面加入类似的配置(至少一个可连接的 STUN/TURN),并重启服务即可。

截屏2026-08-31 16.42.29.png

之后再打开可多人的游戏,底部工具这里便可出现一个网络图标,点击即可创建房间。

截屏2026-08-31 16.46.46.png

最后

还有不少内容,限于篇幅问题还没介绍到,不过官方wiki中也都能找到答案。感兴趣的朋友就自己部署探索吧!

感谢观看,本文完~

0

评论区