EnglishРусский Map

RomM

title
RomM
type
toolbox
summary
Self-hosted менеджер библиотеки ROM'ов, собирающий метаданные и запускающий игры прямо в браузере
tags
python, self-hosted, gaming, emulation, media-library
language
Python
license
AGPL-3.0
created
2026-07-23
updated
2026-07-23
lang
ru
translation_of
romm
source_updated
2026-07-23
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

RomM для коллекции ROM'ов - то же самое, чем Jellyfin или Plex являются для видео: указываешь ему дерево каталогов с файлами игр, он их сканирует, сопоставляет каждый с онлайн-базами данных и даёт веб-интерфейс для просмотра, скачивания и - для немалого числа систем - запуска прямо в браузере. Многодисковые игры, DLC, моды, хаки, патчи и руководства пользователя он воспринимает как полноценные записи, а не просто лишние файлы, а принятые в именах ROM'ов теги вроде (USA) или [!] превращает в фильтры.

Как это устроено

Сервер представляет собой бэкенд на Python с веб-фронтендом на Vue, разворачиваемый в Docker-контейнере с базой данных MySQL/MariaDB. Сканирование здесь - задача сопоставления: файл на диске нужно привязать к известному релизу, и RomM опрашивает для этого сразу несколько провайдеров метаданных. IGDB, ScreenScraper и MobyGames поставляют данные о релизах для более чем 400 платформ, SteamGridDB отдаёт обложки и другие иллюстрации, а RetroAchievements - списки достижений и прогресс. Для каждого провайдера нужны свои учётные данные API, что создаёт привычные неудобства при первом запуске.

Воспроизведение в браузере делегировано сторонним движкам. EmulatorJS закрывает консольные и аркадные core'ы, RuffleRS - Flash. Сам RomM ничего не эмулирует - он хранит файлы, находит метаданные и передаёт нужный blob подходящему веб-плееру.

Многопользовательский режим встроен изначально и поддерживает права на уровне отдельных пользователей, так что другу можно выдать аккаунт с доступом только на чтение к части библиотеки.

Клиенты

Веб-интерфейс - не единственный фронтенд, и список клиентов отлично отражает популярность проекта. Сама команда RomM поддерживает три: Argosy (нативный лаунчер для Android), Grout (скачивает игры и управляет ими прямо на ретро-консолях с Linux под управлением Allium, Batocera, Knulli, MinUI, muOS, NextUI, Onion, ROCKNIX, Spruce или TrimUI) и плагин библиотеки для Playnite на Windows. Сообщество добавило приложение для iOS, инструмент синхронизации с RetroArch, пару десктопных браузеров, синхронизатор для Steam Deck (Decky), homebrew NRO для Switch и бота для Discord.

Grout особенно интересен тем, кто пользуется портативными консолями из retrocatalog - он превращает self-hosted экземпляр RomM в источник загрузки для устройства, на которое иначе пришлось бы закидывать файлы вручную через SD-карту.

Ограничения

Качество метаданных упирается в провайдеров и имена файлов. Проблемы со сканированием возникают достаточно часто - в документации под них даже вынесена отдельная страница устранения неполадок, - а нестандартные схемы именования приходится править вручную. Все API провайдеров требуют регистрации и накладывают ограничения по частоте запросов (rate limits). Запуск в браузере ограничен возможностями EmulatorJS, так что более новые и требовательные системы из списка в 400+ платформ на практике доступны только для скачивания.

Лицензия - AGPL-3.0, что важно, если вы планировали делать поверх собственный хостинг-сервис. Сам RomM игры не ищет и не скачивает из сети: он лишь наводит порядок в уже имеющихся файлах.

Repo: github.com/rommapp/romm - ~11 200 звёзд, AGPL-3.0, Python. Для стриминга библиотеки современных игр для ПК вместо управления эмулируемой коллекцией см. moonshine.