什么是 RomM ?
RomM
(代表Rom Manager
)是一个专注于复古游戏的游戏库管理器。通过Web
浏览器管理和组织您的所有游戏。受Jellyfin
的启发,允许您从现代界面管理所有游戏,同时使用IGDB
元数据丰富它们。
RomM
支持的游戏库类型比较多,gba
、gbc
、switch
等
但需要注意的是,如果你的群晖不支持科学上网 ,会导致扫描游戏库时无法结束,所以要在域名黑名单中加上 twitch.tv
如果群晖不具备科学上网的条件,就不用浪费时间了
前期准备
建数据库
RomM
支持 MariaDB
和 SQLite
两种数据库,老苏原本想用群晖自带的 MariaDB 10
数据库,但运行时容器日志中会显示 CRITICAL: [ROMM] Not supported "mariadb" database
本文完成于
3
月底,现在是不是已经支持,老苏没再试,也许可以了,也许还是不行;
所以最后用了 SQLite
,当然你用 MySQL
容器也是可以的
注册 IGDB
RomM
使用了互联网游戏数据库 ( IGDB
) 加载信息,为了使用其 API
,必须要拥有一个 Twitch
帐户。
官方文档有注册的流程:https://api-docs.igdb.com/#account-creation
直接打开 https://dev.twitch.tv/login 注册免费账号,登录后需要在 https://www.twitch.tv/settings/security 中开启双重身份认证
手机上需要下载验证器应用,可以用 microsoft
的 Authenticator
或者 Authy
等
用生成的 6
位数字验证
要支持多种验证,否则一旦验证器不在身边,会比较麻烦
从 应用程序
--> 注册您的应用程序
随便填的,因为实际上用不到回调
进入 管理
记下 客户端 ID
(Client ID
) 和 客户端密码
(Client Secret
)
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 romm
,选择第一个 zurdi15/romm
,版本选择 latest
。
本文最后折腾时,
latest
版本对应为1.8.4
,本文发布时,最新版本为1.9.1
;
卷
在 docker
文件夹中,创建一个新文件夹 romm
,并在其中建三个子文件夹 database
,library
,resources
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/romm/database | /romm/database | 存放数据库 |
docker/romm/library | /romm/library | 游戏库 |
docker/romm/resources | /romm/resources | 封面 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
3038 | 80 |
环境
可变 | 值 |
---|---|
ROMM_DB_DRIVER | 数据库类型可以是 sqlite 或者 mariadb |
CLIENT_ID | IGDB 申请的 Client ID |
CLIENT_SECRET | IGDB 申请的 Client Secret |
STEAMGRIDDB_API_KEY | 默认设为 WIP ,应该还没启用 |
更多的环境变量,可以参考官方的样例:https://github.com/zurdi15/romm/blob/master/examples/docker-compose.example.yml
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 romm 和 子目录
mkdir -p /volume2/docker/romm/{database,library,resources}# 进入 romm 目录
cd /volume2/docker/romm# 运行容器
docker run -d \--restart unless-stopped \--name romm \-p 3038:80 \-v $(pwd)/library:/romm/library \-v $(pwd)/database:/romm/database \-v $(pwd)/resources:/romm/resources \-e ROMM_DB_DRIVER=sqlite \-e CLIENT_ID=<你的 Client ID> \-e CLIENT_SECRET=<你的 Client Secret> \-e STEAMGRIDDB_API_KEY=WIP \zurdi15/romm:latest
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
zurdi15/romm:latest
对应的版本是1.3
version: '3'services:romm:image: zurdi15/romm:latestcontainer_name: rommrestart: "unless-stopped"volumes:- ./library:/romm/library- ./database:/romm/database- ./resources:/romm/resourcesports:- 3038:80environment:- ROMM_DB_DRIVER=sqlite- CLIENT_ID=<你的 Client ID>- CLIENT_SECRET=<你的 Client Secret>- STEAMGRIDDB_API_KEY=WIP
然后执行下面的命令
# 新建文件夹 romm 和 子目录
mkdir -p /volume2/docker/romm/{database,library,resources}# 进入 romm 目录
cd /volume2/docker/romm# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:3038
就能看到主界面
上传游戏库
老苏在:http://www.gbarom.cn 随便下了几个,用于测试
游戏库的结构是有要求的,因为还不支持从网页上传,所以需要在 File Station
中自行上传。
RomM
目前支持两种不同的文件夹结构,首先会尝试查找 结构 1
,如果不存在,将尝试查找 结构 2
结构 1
(高优先级)- 库文件夹根目录下的roms
文件夹:
library/
├─ roms/├─ gbc/│ ├─ rom_1.gbc│ ├─ rom_2.gbc│├─ gba/│ ├─ rom_1.gba│ ├─ rom_2.gba│ ├─ ps/├─ my_multifile_game/│ ├─ my_game_cd1.iso│ ├─ my_game_cd2.iso│├─ rom_1.iso
结构 2
(低优先级)- 每个平台文件夹内的roms
文件夹
library/
├─ gbc/
│ ├─ roms/
│ ├─ rom_1.gbc
│ ├─ rom_2.gbc
|
├─ gba/
│ ├─ roms/
│ ├─ rom_1.gba
│ ├─ rom_2.gba
|
├─ ps/
│ ├─ roms/
│ ├─ my_multifile_game/
│ │ ├─ my_game_cd1.iso
│ │ ├─ my_game_cd2.iso
│ │
│ ├─ rom_1.iso
老苏采用的是 结构 1
开始扫描
扫描完成后会有提示
理论上会有封面,但是可能老苏下载的 rom
是修改过的吧
目前的版本还不支持自定义游戏封面
可以直接下载
添加 rom
后需要重新 scan
点标题,会显示详情
还可以编辑
参考文档
zurdi15/romm: RomM (Rom Manager) is a web based retro roms manager integrated with IGDB.
地址:https://github.com/zurdi15/romm
RomM - Retro games library manager : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/123syuc/romm_retro_games_library_manager/
[Other] error bind mount using example compose file · Issue #35 · zurdi15/romm
地址:https://github.com/zurdi15/romm/issues/35
超级马里奥乐园1:DX - 掌机迷 - GBC游戏下载_GBC游戏攻略
地址:http://www.gbarom.cn/gbc/50497.html