# Romm — Self-Hosted ROM Collection Manager & Player > A self-hosted ROM library manager with metadata scraping, in-browser emulation, and multi-platform support for retro gaming collections. ## Install Save as a script file and run: # Romm — Self-Hosted ROM Collection Manager & Player ## Quick Use ```bash mkdir romm && cd romm curl -LO https://raw.githubusercontent.com/rommapp/romm/main/docker-compose.yml docker compose up -d ``` ## Introduction Romm is a self-hosted game library manager designed for retro ROM collections. It automatically scrapes metadata and artwork from IGDB, organizes games by platform, and provides in-browser emulation so you can play directly from your server without downloading files locally. ## What Romm Does - Scans and organizes ROM files by platform with automatic folder detection - Scrapes game metadata, cover art, and screenshots from IGDB and MobyGames - Provides in-browser emulation via EmulatorJS for instant play without downloads - Supports multi-user access with individual game libraries and save states - Manages firmware files, BIOS images, and save data alongside ROMs ## Architecture Overview Romm runs as a Python FastAPI backend with a Vue.js frontend, packaged in a single Docker container. It uses MariaDB for metadata storage and scans a mounted ROM directory on disk. The EmulatorJS integration serves WASM-based emulator cores directly in the browser, communicating with the backend for ROM streaming and save state sync. ## Self-Hosting & Configuration - Deploy with Docker Compose; requires MariaDB and a mounted ROM directory - Obtain an IGDB API key (free) for metadata scraping - Organize ROMs in platform-named folders for automatic detection - Configure via environment variables for database, auth, and scraper settings - Supports HTTPS behind a reverse proxy with standard headers ## Key Features - In-browser play: emulate games directly without client software - Multi-platform support: covers 50+ retro systems from Atari to PS2 - Cloud save states: resume games across devices through the web UI - Multi-user: each user gets their own library view and save data - Bulk scanning with incremental updates for large collections ## Comparison with Similar Tools - **RetroArch** — desktop emulator frontend; Romm is web-based and server-hosted - **Playnite** — Windows game launcher; Romm focuses on ROM management and web access - **LaunchBox** — Windows-only with paid tiers; Romm is free and cross-platform - **EmulatorJS standalone** — player only; Romm adds library management and metadata - **Gaseous** — similar self-hosted concept; Romm has broader platform coverage ## FAQ **Q: What platforms does Romm support for in-browser emulation?** A: Most systems from NES through PS1/N64, plus handheld consoles. Newer systems depend on EmulatorJS core availability. **Q: How large can my ROM library be?** A: There is no built-in limit. Users manage collections with tens of thousands of ROMs on modest hardware. **Q: Does Romm handle multi-disc games?** A: Yes, multi-file and multi-disc games are grouped together as a single library entry. **Q: Can I share my library with friends?** A: Yes, multi-user support lets you invite others with configurable permissions per user. ## Sources - https://github.com/rommapp/romm - https://romm.app --- Source: https://tokrepo.com/en/workflows/asset-18753a68 Author: Script Depot