RomM 遊戲管理器
從架設到遊玩完全指南 · 打造私人復古遊戲庫
第一部分:介紹大綱
RomM (Rom Manager) 是一個現代化的復古遊戲庫管理工具。它不只能整理遊戲檔案,還支援透過瀏覽器直接遊玩,就像是你的「私人復古遊戲 Netflix」。
核心特色:
- 海報牆介面:自動下載封面、簡介,將雜亂的檔案變成精美的遊戲牆。
- 網頁遊玩:內建模擬器核心,點擊「Play」即可在瀏覽器中運行,無需下載模擬器。
- 多平台支援:支援 NES, SNES, GBA, PS1, N64 等多種復古主機。
- NAS 部署:透過 Docker 輕量化運行,適合架設在 fnOS、Synology 等 NAS 系統上。
運作原理:Server 端 (NAS) 負責掃描檔案與資料庫;Client 端 (瀏覽器) 負責顯示介面並利用電腦算力運行模擬器。
第二部分:如何架設 (Docker 部署)
本教學基於 Docker Compose,適用於 fnOS 或 Portainer 環境。
步驟 1:規劃資料夾結構
在 Docker 儲存空間下 (例如 /vol1/docker/) 建立 romm 資料夾,並在其下建立 5 個子資料夾:
- /romm/library/ (存放遊戲 ROM)
- /romm/config/ (存放設定檔)
- /romm/assets/ (存放資源)
- /romm/resources/ (存放圖片)
- /romm/database/ (存放資料庫數據)
步驟 2:準備 config.yml
在電腦上建立一個文字檔 config.yml,內容填入 version: 1 即可。將此檔案上傳至 NAS 的 /romm/config/ 資料夾中。
※重要:若無此檔案容器會啟動失敗。
步驟 3:建立 Docker Compose 堆疊
複製以下內容至 Docker Compose 編輯器:
version: "3"
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=password123 # 請自訂密碼
- ROMM_AUTH_SECRET_KEY=random_key_here # 請輸入隨意亂碼
volumes:
- /vol1/docker/romm/resources:/romm/resources
- /vol1/docker/romm/assets:/romm/assets
- /vol1/docker/romm/config:/romm/config
- /vol1/docker/romm/library:/romm/library
ports:
- 8080:8080
depends_on:
- romm-db
romm-db:
image: mariadb:10
container_name: romm-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=root_pass # 請自訂 Root 密碼
- MYSQL_DATABASE=romm
- MYSQL_USER=romm-user
- MYSQL_PASSWORD=password123 # 需與上方 DB_PASSWD 一致
volumes:
- /vol1/docker/romm/database:/var/lib/mysql
步驟 4:初始化設定
- 啟動容器。
- 瀏覽器訪問
http://NAS_IP:8080。 - 建立管理員帳號 (Username/Password)。
- (可選) IGDB API Key 設定可先跳過,稍後再補。
第三部分:下載與整理遊戲庫
1. 資源與格式
- 關鍵字:搜尋 "No-Intro" (卡帶類) 或 "Redump" (光碟類)。推薦來源:Internet Archive。
- 格式:卡帶類 (NES, GBA) 可直接使用
.zip或.7z(無需解壓)。若模擬器讀取失敗,才需解壓為原生格式 (如 .nes)。
關鍵規則:資料夾結構
這是最容易出錯的地方!RomM 強制要求在平台資料夾下必須有一個名為 roms 的子資料夾。
/library/
├── nes/
│ ├── 超級瑪利歐.nes (錯誤:掃描不到)
│ └── roms/ (正確:必須有這個資料夾)
│ └── 超級瑪利歐.nes
└── gba/
└── roms/
└── Pokemon.zip
├── nes/
│ ├── 超級瑪利歐.nes (錯誤:掃描不到)
│ └── roms/ (正確:必須有這個資料夾)
│ └── 超級瑪利歐.nes
└── gba/
└── roms/
└── Pokemon.zip
2. 排除雜訊
下載的遊戲包通常包含 0-9, A, B 等分類資料夾。建議將這些資料夾內的遊戲檔案全部移出來,放在 roms 根目錄下,避免 RomM 將「A資料夾」誤判為一個遊戲。
第四部分:搜尋與掃描
1. 綁定路徑 (Manage Library)
由於 Docker 的隔離性,你需要告訴 RomM 哪個資料夾對應哪個主機。
- 進入網頁 -> 點擊 MANAGE LIBRARY。
- 點擊 Add 或 Edit。
- 左側 (Folder):選擇
nes(你建立的資料夾名)。 - 右側 (Platform):選擇
Nintendo Entertainment System。 - 點擊 Confirm。
2. 執行掃描與遊玩
- 點擊左側選單的 Scan 圖示 -> Scan Library。
- 掃描完成後,點擊封面 -> 點擊 Play 即可開始遊戲。
- 操作鍵:方向鍵移動,Enter (Start),Shift (Select),Z/X/A/S 為功能鍵。
第五部分:疑難排解 (Troubleshooting)
| 問題現象 | 原因分析 | 解決方案 |
|---|---|---|
| 掃描不到遊戲 | 資料夾結構錯誤 或 權限不足 | 1. 確認遊戲是否在 roms 子資料夾內。2. 在 NAS 開啟資料夾的遞歸讀寫權限。 |
| 封面顯示 "Not Identified" | 未設定 IGDB API Key | 這不影響遊玩。若需封面,需至 Twitch Developer 申請 API 並填入設定。 |
| 出現 "0-9", "A" 等奇怪遊戲 | RomM 把分類資料夾當成遊戲了 | 將遊戲移出至 roms 根目錄,刪除空資料夾。 |
| 點 Play 後黑屏 | 瀏覽器無法解壓該 .7z 檔案 | 將該遊戲解壓縮,上傳原生格式 (.nes, .gba) 即可解決。 |
| 無法重複綁定資料夾 | 一個資料夾對應一個平台 | 這是正常機制。請為每個平台建立獨立資料夾。 |
給新手的小撇步
1. 強調 roms 資料夾:請務必檢查路徑是否為 /library/nes/roms/遊戲檔。
2. Docker 路徑觀念:NAS 的 /vol1/docker/romm/library 對應到容器內的 /romm/library 是一個「映射」關係。
3. 先求有再求好:建議先不要糾結於封面下載,先確認遊戲能跑起來 (Play),獲得成就感後再處理美化工作。

