RomM(一款游戏ROM管理器)界面简洁流畅,方便您扫描、丰富、浏览和畅玩您的游戏收藏。它支持多种平台、多种命名规则和自定义标签,是所有模拟器玩家的必备工具。
本文将介绍如何自建并使用RomM畅玩以前的经典游戏,如:拳皇97、合金弹头、魂斗罗等。
准备工作:
1.一个域名,添加A记录解析:romm.example.com
2.如果你需要刮削游戏的元数据,则最好准备一个IGDB(互联网游戏数据库)的API密钥。IGDB是Twitch旗下的服务,你必须注册一个Twitch账号并启用2FA。然后按照这篇文档创建API密钥。在创建API密钥期间,回调地址直接配置为:http://localhost
3.RomM只是一个管理工具,游戏的ROM资源需要你自己准备,如果你不知道在哪里可以安全获取这些资源,这里我有一些推荐:Reddit的Roms板块、r-roms、minerva-archive 、 Internet Archive
其中minerva-archive是以BT种子为主的资源站,所有ROM均以BT种子的形式提供,Internet Archive提供ROM压缩包直链下载,但往往需要你注册账号才能下载。请勿轻易相信搜索引擎提供的ROM网站,通过这些网站下载的ROM很有可能携带病毒、木马等恶意软件。
安装NGINX、CertBot、Docker:
apt update
apt install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
新建compose文件:
mkdir /opt/romm && cd /opt/romm && nano docker-compose.yml
写入如下内容:
volumes:
mysql_data:
romm_resources:
romm_redis_data:
services:
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
environment:
- DB_HOST=romm-db
- DB_NAME=romm
- DB_USER=romm-user
- DB_PASSWD=
- ROMM_AUTH_SECRET_KEY=
- SCREENSCRAPER_USER= # These are the recommended metadata providers
- SCREENSCRAPER_PASSWORD= # https://docs.romm.app/latest/getting-started/metadata-providers/#screenscraper
- RETROACHIEVEMENTS_API_KEY= # https://docs.romm.app/latest/getting-started/metadata-providers/#retroachievements
- STEAMGRIDDB_API_KEY= # https://docs.romm.app/latest/getting-started/metadata-providers/#steamgriddb
- HASHEOUS_API_ENABLED=true # https://docs.romm.app/latest/getting-started/metadata-providers/#hasheous
- IGDB_CLIENT_ID=
- IGDB_CLIENT_SECRET=
volumes:
- romm_resources:/romm/resources
- romm_redis_data:/redis-data
- ./library:/romm/library
- ./assets:/romm/assets
- ./config:/romm/config
ports:
- 127.0.0.1:8080:8080
depends_on:
romm-db:
condition: service_healthy
restart: true
romm-db:
image: mariadb:latest
container_name: romm-db
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD=
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: [CMD, healthcheck.sh, --connect, --innodb_initialized]
start_period: 30s
start_interval: 10s
interval: 10s
timeout: 5s
retries: 5
1.ROMM_AUTH_SECRET_KEY的值使用如下命令生成:
openssl rand -hex 32
2.请注意MARIADB_ROOT_PASSWORD设置的是数据库root用户的密码不是romm-user用户的密码,所以DB_PASSWD的值应匹配MARIADB_PASSWORD而非MARIADB_ROOT_PASSWORD。
3.配置IGDB_CLIENT_ID和IGDB_CLIENT_SECRET,以体验最佳的刮削效果。
4.如果你配置了IGDB,则这些涉及刮削的环境变量可不配置,用处不大。大多数情况下IGDB + HASHEOUS足够了:
SCREENSCRAPER_USER=
SCREENSCRAPER_PASSWORD=
RETROACHIEVEMENTS_API_KEY=
STEAMGRIDDB_API_KEY=
启动:
docker compose up -d
新建NGINX站点配置文件:
nano /etc/nginx/sites-available/romm
写入如下内容:
server {
listen 80;
server_name romm.example.com;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
启用站点:
ln -s /etc/nginx/sites-available/romm /etc/nginx/sites-enabled/romm
签发证书:
certbot --nginx
首次访问的时候会提示你是否要创建选中的游戏平台目录,我建议直接全选创建,这样可以省去你自己整理文件夹结构的时间,后续你可以通过Web UI直接将游戏ROM上传到对应的平台下,开箱即玩。
详情见官方的这两篇文档:Folder Structure、Supported Platforms
首次访问RomM请在“元数据源”页面查看IGDB配置是否正常:
现在我们来下载ROM资源,我通过Internet Archive下载了:
合金弹头1(mslug.zip)
合金弹头2(mslug2.zip)
合金弹头4(mslug4.zip)
合金弹头5(mslug5.zip)
合金弹头X (mslugx.zip)
拳皇97(kof97.zip)
下载地址:https://archive.org/download/fbnarcade-fullnonmerged/arcade/
将这些压缩包通过Web UI上传到RomM内,我刚下载的这些游戏全部都是街机游戏(Arcade)所以平台就选择Arcade:
上传完成后,RomM会自动开始扫描,扫描完成后,你应该看到游戏库有更新,此时会显示游戏的海报、简介等信息:
游戏启动的时候需要你自己选择一个核心,对于我刚才下载的这些游戏而言,核心一律选择fbneo:
可以玩了:
现在说一下魂斗罗这款游戏如何添加到RomM,首先你得通过r-roms找到对应的平台,这里魂斗罗对应的平台是Nintendo Entertainment System:
然后你会发现这里有Headered和Headerless两个分类,这里一定要下载Headered分类的压缩包,Headerless是无法启动的。跳转到minerva-archive后搜索Contra:
后面的步骤就和之前一样了,找到对应的平台Nintendo Entertainment System,上传压缩包:
启动游戏的时候选择核心,这里我个人推荐nestopia:
可以玩了:
总结向RomM添加游戏的步骤:
1.通过r-roms找到游戏对应的平台、分类。
2.通过r-roms提供的minerva-archive或Internet Archive网页地址下载正确的游戏ROM压缩包。
3.在RomM选择正确的游戏平台后将压缩包上传到RomM,这一步非常重要,因为关系到RomM在运行时选择哪个核心来运行游戏。
如果你不知道游戏属于哪个平台,游戏ROM压缩包的名字叫什么,游戏运行时该使用哪个核心,可以问AI。
荒岛




























