星哥带你玩飞牛NAS-36:给NAS装个老游戏ROM ,浏览器直接开玩
星哥带你玩飞牛NAS-36给NAS装个老游戏ROM 浏览器直接开玩导读谁的硬盘里没存过几个 GBA、FC 的 ROM 呢文件堆了一堆封面没几张每次想玩都得翻半天目录。今天介绍一个开源项目 RomM把 NAS 变成你的私人游戏库浏览器点开就能玩整理收藏一气呵成。先聊聊老玩家的痛我猜很多人的老游戏 ROM 现在还躺在某个硬盘的角落里命名五花八门——rom1.gba、最终幻想6.gba、ff6.gba……光找游戏就得花十分钟更别说还要去网上找封面、写介绍。Steam 之所以舒服是因为它帮你做完了这些琐事统一的封面、简介、截图、成就一键打开就玩。那老游戏呢能不能也享受一下这种待遇能。今天要聊的RomM就是干这个事的——一个开源、自托管的 ROM 游戏库管理系统。它的目标很直白把 NAS 里的 ROM 文件整理成一个类 Steam 的网页界面。RomM 到底能干啥别以为它就是个花里胡哨的 ROM 浏览器它实际干的事比想象多。它会扫描你 NAS 上的游戏库然后通过IGDB、ScreenScraper、Hasheous、RetroAchievements、SteamGridDB等一堆开源数据源自动帮你补全这些信息游戏名称、封面、介绍发售日期、所属平台截图、成就其他元数据刮削完之后的结果什么样想象一下你打开一个网页左边是按平台分类的游戏列表右边是带封面的卡片视图点进去有详细介绍、截图、版本信息——基本上就是个老游戏版的 Steam。除了管理之外它还支持收藏、标签、多用户一家人都能一起用EmulatorJS、Ruffle 等浏览器端模拟器网页点开直接玩多人联机 / 模拟器串流需要额外配 STUN/TURN光是浏览器直接开玩这一条对很多懒得折腾本地模拟器的朋友来说就已经值回票价了。部署流程以飞牛 NAS 为例通过 Docker Compose 部署最省事。其他品牌群晖、绿联、极空间的玩法基本一致只是后台界面叫法不同。1.新建目录2.打开docker新建项目3.填写信息如图填写信息docker-compose.ymlservices:romm:image:rommapp/romm:latestcontainer_name:rommrestart:unless-stoppeddepends_on:romm-db:condition:service_healthyenvironment:DB_HOST:romm-dbDB_NAME:rommDB_USER:rommDB_PASSWD:rommROMM_DB_DRIVER:mariadb# SSH 里执行 openssl rand -hex 32生成 64 位密钥填到下面ROMM_AUTH_SECRET_KEY:CHANGE_THIS_64_CHAR_SECRETTZ:Asia/ShanghaiHASHEOUS_API_ENABLED:trueports:-8180:8080volumes:# RomM 运行数据放系统卷-./resources:/romm/resources-./redis-data:/redis-data-./assets:/romm/assets-./config:/romm/config# 游戏资源建议放独立的大容量共享文件夹-./Games/roms:/romm/library/roms-./Games/bios:/romm/library/biosromm-db:image:mariadb:latestcontainer_name:romm-dbrestart:unless-stoppedenvironment:MARIADB_ROOT_PASSWORD:rommMARIADB_DATABASE:rommMARIADB_USER:rommMARIADB_PASSWORD:rommvolumes:# 注意权限问题如果建库失败先查这个目录权限-./database:/var/lib/mysqlhealthcheck:test:-CMD-SHELL-mariadb -h 127.0.0.1 -uromm -promm -D romm -e SELECT 1; /dev/null 21 || exit 1start_period:30sinterval:10stimeout:5sretries:5几个必须改的地方别直接复制粘贴ROMM_AUTH_SECRET_KEY必须用openssl rand -hex 32生成一个新的填进去不然安全风险很大。数据库密码MARIADB_ROOT_PASSWORD等几个romm建议都换成自己的。挂载目录./resources:/romm/resources冒号左边是nas的目录右边是容器的目录。启动打开飞牛的 把上面的docker-compose.yml粘进去点启动就行。镜像有点大第一次拉取会比较慢耐心等。第一次进入后台部署完成浏览器打开NAS_IP:8180进入初始化流程。1.选择平台这里有个坑要特别提醒平台选择那一步千万别贪心勾全选官方文档明确说过平台目录必须匹配对应的 slug。如果你全勾了/share/Games/roms下面会瞬间多出几百个空目录File Station 看着头大扫库也会很慢。我自己的做法是先用免费平台试水Game BoygbGame Boy AdvancegbaNintendo Entertainment Systemnes跑通了再按需加。后续要加平台去面板里也能加不用一口气配齐。2.创建管理员账户3.检查元数据源跳过再下一步元数据源直接跳过默认留空就行后面我们手动配。重点数据源怎么配初始化完成后登录右上角进账户设置 → 「元数据源」。这里才是让 RomM 真正发挥威力的开关。官方推荐的是Hasheous IGDB ScreenScraper这套组合但新手建议先只开 Hasheous因为它不需要 API Key。Hasheous 是什么它是个用 ROM 哈希值匹配游戏的元数据源——你给它一个文件它算哈希然后告诉你是哪个游戏、配上对应的标题、封面、简介。整个过程不需要你注册任何东西、不需要任何 Key开箱即用。我自己的方案是Hasheous 为主IGDB 兜底补充。IGDB 需要 Twitch 的 Client ID配置麻烦一点但封面质量是真的高。上传 ROM 与免费资源数据源配好就能上传游戏了。上传方式两种网页直接拖界面右上角有上传按钮小批量可以拷贝到 NAS 共享文件夹推荐比如.gba丢到Games/roms/gba/.nes丢到/Games/roms/nes/传完别忘了在面板里点一下「扫描」RomM 才会去读这些文件。批量上传几百个文件扫描和元数据匹配会跑个十几分钟这是正常现象别着急。哪里找合法的免费游戏这块必须强调一下只下免费、合法的资源。一些推荐渠道GBDev 社区维护的 Homebrew 档案库专门收集GB/GBC/GBA/NES的独立游戏约 1300 个 GB/GBC 条目约 200 个 GBA 条目约 23 个 NES 条目各平台官方商店的复古合集真正老古董的 Homebrew、独立复古新作刮削完打开平台能看到一整排带封面的游戏卡那种感觉真的像在逛老游戏博物馆。访问站点https://hh.gbdev.io - 浏览器内置模拟器直接运行游戏 - 每个作品详情页可单独下载 ROMgb/gbc/gba/nes、截图、元数据 - 分类、搜索、标签筛选1.GB/GBC 资源库git clone https://github.com/gbdev/database2.GBA Homebrew 资源库git clone https://github.com/gbadev-org/games3.NES Homebrew 资源库git clone https://github.com/nesdev-org/homebrew-db补充说明仓库里不只有 ROM 文件还附带封面截图、游戏介绍 JSON 元数据完美适配 RomM 刮削如果完整拉取体积很大也可以用 GitHub 下载 ZIP 压缩包或者使用浅克隆--depth 1减少下载体积git clone --depth 1 https://github.com/gbdev/database把文件放到./Games/roms 目录实际玩起来怎么样点进任意一个游戏底部会跳出一行工具栏——存档、读档、画面设置、Reset基本就是模拟器该有的都有。游戏会自动全屏体验跟本地模拟器基本一致。带成就的老游戏还能在网页里跳成就提示挺有意思的。进阶玩法多人联机RomM 还支持模拟器串流和多人联机操作不复杂SSH 进 NAS编辑挂载目录里的romm/config/config.yml加一段 STUN/TURN 服务器配置至少需要一个能连的 STUN重启 RomM 服务之后打开支持多人的游戏底部工具栏会出现一个网络图标点一下就能建房间喊朋友来联机。这块官方 wiki 写得很详细照着抄就行。最后RomM 这种项目就是典型的“用过就回不去”。之前我的老 ROM 就是一堆乱七八糟的文件夹现在打开 NAS 那个页面按平台分类、按收藏排序、点开就玩体感直接拉到 Steam 那个水平。它不是那种你必须立刻就装的工具但如果你硬盘里躺着一堆老游戏 ROM又懒得一个个整理强烈建议试一把。折腾中遇到问题评论区交流。拓展阅读RomM 官方文档https://docs.romm.app/GBDev Homebrew 档案库https://gbdev.io/

相关新闻

Windows进程管理实战:任务管理器操作与API原理全解析

Windows进程管理实战:任务管理器操作与API原理全解析

简介:这份实验指导文档围绕 Windows 任务管理器的进程管理展开,适合操作系统课程实验教学、期末复习或自学巩固。文档取材自经典实验教材,以“背景知识—实验目的—工具/准备—实验内容与步骤—知识点”为主线,先介绍任务管理器“…

2026/10/13 15:06:39 阅读更多 →
毫米波混合预编码信道估计:稀疏建模与OMP工程落地指南

毫米波混合预编码信道估计:稀疏建模与OMP工程落地指南

简介:rar压缩包(10KB,共5个文件)内含毫米波大规模MIMO系统在混合预编码架构下的超级分辨率信道估计MATLAB实现,面向通信工程与信号处理方向的研究生,以及从事5G/6G物理层算法开发的工程师。包内以.m源码为主…

2026/10/13 15:06:39 阅读更多 →
FPGA JPEG编码器Verilog源码解析与工程落地

FPGA JPEG编码器Verilog源码解析与工程落地

简介:一份基于 Verilog 语言在 FPGA 平台上实现 JPEG 编码器的完整源代码工程,面向数字 IC、FPGA 开发者和图像处理方向学生,覆盖颜色空间转换、88 块划分、离散余弦变换(DCT)、量化与哈夫曼熵编码等硬件实现要点&…

2026/10/13 15:05:35 阅读更多 →

最新新闻

选择排序与插入排序:手写背后的底层直觉与工程权衡

选择排序与插入排序:手写背后的底层直觉与工程权衡

1. 为什么今天还要手写选择排序和插入排序?——从“能跑通”到“真理解”的分水岭很多人看到“算法-6-选择排序插入排序”这个标题,第一反应是:这都2024年了,Python里一个sorted()、JavaScript里一个.sort()就搞定的事&#xff0c…

2026/10/13 15:56:01 阅读更多 →
FFmpeg 3.4.2 离线包部署指南:解压、环境配置与常见转码命令详解

FFmpeg 3.4.2 离线包部署指南:解压、环境配置与常见转码命令详解

简介:这是一份FFmpeg 3.4.2稳定版的Windows预编译库资源,面向需要在应用程序中集成音视频处理能力的C/C开发者。包内同时提供32位与64位动态库,涵盖DLL运行库、配套导入库及头文件,开发者可基于这些文件快速完成环境配置&#xff…

2026/10/13 15:56:01 阅读更多 →
LiteLLM实践:多模型API统一接入与代理网关

LiteLLM实践:多模型API统一接入与代理网关

最近在做大模型应用落地,手里同时握着好几家主流模型的 API Key,结果发现最痛苦的其实不是效果调优,而是工程侧怎么把这么多接口统一管理起来。各家调用的报文格式不一样、鉴权方式不一样、返回结构也不一样,模型一多,…

2026/10/13 15:56:01 阅读更多 →
C#对接ONVIF摄像机:从发现设备到RTSP取流与PTZ云台控制的完整链路

C#对接ONVIF摄像机:从发现设备到RTSP取流与PTZ云台控制的完整链路

简介:面向需要在C#项目中集成Onvif协议的开发者,这份Demo程序提供了一套亲测可用的摄像机对接方案,涵盖RTSP视频流地址获取、PTZ云台控制、预置位设置与调用,并借助VLC 3.0.4.0实现视频流播放,同时附带获取RTSP地址的W…

2026/10/13 15:56:01 阅读更多 →
信贷决策建模:特征工程、评分卡与可解释性实战解析

信贷决策建模:特征工程、评分卡与可解释性实战解析

简介:2020年数学建模C题企业信贷风险预测的完整解答文档,面向备战数模竞赛、希望掌握机器学习风控建模的读者。文档围绕“量化分析—特征工程—模型构建—评估优化”主线展开:先将企业信贷违约风险转化为可量化评分,再从进项与销项…

2026/10/13 15:56:01 阅读更多 →
智能体运营蓝图:从系统打通到互联企业的实践路线

智能体运营蓝图:从系统打通到互联企业的实践路线

我做了不少企业数字化项目的咨询,一个感受特别深:很多公司系统上了不少——CRM、ERP、MES、OA,一个都不少,但业务跑起来还是靠人在几个系统之间来回搬运信息。说要"互联",最后连了个寂寞。这两年智能体&…

2026/10/13 15:55:00 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →