Skip to main content
50% off all plans, limited time. Starting at $2.48/mo
RomM

RomM

RomM is a self-hosted ROM manager and player. It scans your collection, pulls box art and metadata, and plays supported titles straight in the browser. AGPL-3.0 licensed with 12,100+ GitHub stars.

At a glance

License AGPL-3.0 Version Latest OS Ubuntu Server 24.04 LTS Min RAM 2 GB IP IPV4,IPV6

Getting Started

  1. Open http://<SERVER-IP> in your browser.
  2. The first startup may take some time.
  3. On the first visit, RomM will redirect you to the Setup Wizard.
  4. Complete the Setup Wizard.
  5. Create the administrator username and password.
  6. The first account created becomes the administrator.

ROM Library

  1. Place your ROM files in: /root/romm/library/roms
  2. Place BIOS files in: /root/romm/library/bios
  3. After adding games, run a library scan from the RomM web interface.

Metadata

  • Hasheous metadata support lets RomM retrieve game metadata without requiring an API key.
  • Additional metadata providers can be configured in: /root/romm/.env

Important Files & Directories

  • Install path: /root/romm
  • Compose file: /root/romm/docker-compose.yml
  • Environment file: /root/romm/.env
  • ROM library: /root/romm/library
  • ROMs: /root/romm/library/roms
  • BIOS: /root/romm/library/bios
  • Assets: /root/romm/assets
  • Configuration: /root/romm/config
  • Caddy configuration: /etc/caddy/Caddyfile
  • MariaDB data: /var/lib/docker/volumes/romm_mysql_data

Docker Management

View status:

docker ps

View logs:

cd /root/romm
docker compose logs -f

Restart services:

cd /root/romm
docker compose restart

Stop services:

cd /root/romm
docker compose down

Start services:

cd /root/romm
docker compose up -d

Domain & HTTPS (Caddy)

Note: TLS certificates from Let's Encrypt cannot be issued for IP addresses. A domain name is required.

1. Point a domain (e.g. example.com) to your server’s IP address.

2. Edit /root/romm/.env and update ROMM_BASE_URL:

BASE_URL=https://example.com

3. Recreate the services:

docker compose -f /root/romm/docker-compose.yml up -d

4. Update the site address in /etc/caddy/Caddyfile from http://<SERVER_IP> to your domain. Keep the existing compression, headers, and reverse-proxy configuration unchanged.

vim /etc/caddy/Caddyfile

Change:

http://<SERVER_IP> {

to:

example.com {

5. Reload Caddy:

systemctl reload caddy

6. Caddy will automatically obtain and renew a Let's Encrypt certificate.

7. Access RomM at: https://example.com

Deploy RomM now. From $2.48/mo.