Deploying RomM
Introduction
RomM (ROM Manager) is a beautiful, self-hosted ROM manager designed to organize and present your retro game collection. With automatic metadata fetching from IGDB and MobyGames, RomM transforms your ROM files into a visually stunning, searchable library accessible from any web browser.
Key highlights of RomM:
- Beautiful Interface: Modern, responsive web UI for browsing games
- Metadata Fetching: Automatic game information from IGDB and MobyGames
- Multi-Platform: Support for numerous retro gaming platforms
- Cover Art: Automatic cover art and screenshot downloading
- Search and Filter: Find games quickly across your collection
- Collections: Create custom game collections
- Multi-User: Support for multiple user accounts
- File Management: Download and manage ROM files through the web
- Mobile Friendly: Responsive design for all devices
- Docker Native: Easy containerized deployment
- Open Source: GPL-3.0 licensed with active development
This guide walks through deploying RomM on Klutch.sh using Docker and organizing your ROM collection.
Why Deploy RomM on Klutch.sh
Deploying RomM on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh automatically builds and deploys RomM without complex configuration.
Persistent Storage: Attach persistent volumes for your ROM library and metadata that survive container restarts.
HTTPS by Default: Klutch.sh provides automatic SSL for secure access to your library from anywhere.
Always-On Availability: Your ROM library remains accessible 24/7.
Environment Variable Management: Securely store API keys through Klutch.sh.
Prerequisites
Before deploying RomM on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your RomM configuration
- IGDB API credentials from Twitch Developer Portal
- Your ROM collection organized by platform
- Basic familiarity with Docker
Preparing Your Repository
Create a GitHub repository containing your Dockerfile for RomM deployment.
Repository Structure
romm-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM rommapp/romm:latest
# Set environment variablesENV ROMM_DB_DRIVER=sqliteENV IGDB_CLIENT_ID=${IGDB_CLIENT_ID}ENV IGDB_CLIENT_SECRET=${IGDB_CLIENT_SECRET}ENV ROMM_AUTH_SECRET_KEY=${ROMM_AUTH_SECRET_KEY}
# Create necessary directoriesRUN mkdir -p /romm/library /romm/resources /romm/config
# Expose the web interface portEXPOSE 8080
# The base image includes the default entrypointEnvironment Variables Reference
| Variable | Required | Description |
|---|---|---|
IGDB_CLIENT_ID | Yes | IGDB/Twitch client ID for metadata |
IGDB_CLIENT_SECRET | Yes | IGDB/Twitch client secret |
ROMM_AUTH_SECRET_KEY | Yes | Secret key for authentication (generate with openssl rand -hex 32) |
ROMM_DB_DRIVER | No | Database driver (default: sqlite) |
Deploying RomM on Klutch.sh
- Register at the Twitch Developer Portal
- Create an application to get Client ID and Secret
- These are used to fetch game metadata
- Select HTTP as the traffic type
- Set the internal port to 8080
Obtain IGDB Credentials
Generate Authentication Secret
Create a secure secret key:
openssl rand -hex 32Push Your Repository to GitHub
Commit and push your Dockerfile to GitHub.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project with a descriptive name like “romm” or “rom-library”.
Create a New App
Within your project, create a new app. Connect your GitHub account and select the repository containing your RomM Dockerfile.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
IGDB_CLIENT_ID | Your Twitch client ID |
IGDB_CLIENT_SECRET | Your Twitch client secret |
ROMM_AUTH_SECRET_KEY | Your generated secret |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/romm/library | 100+ GB | Your ROM collection |
/romm/resources | 10 GB | Cover art and metadata |
/romm/config | 1 GB | Configuration and database |
Deploy Your Application
Click Deploy to start the build process.
Access RomM
Once deployment completes, access RomM at your app URL.
Initial Configuration
First-Time Setup
- Access the RomM web interface
- Create your administrator account
- Configure platform settings
Organizing Your Library
Structure your ROMs by platform:
/romm/library/├── nes/│ └── Game Title.nes├── snes/│ └── Game Title.sfc├── genesis/│ └── Game Title.md├── gba/│ └── Game Title.gba├── n64/│ └── Game Title.z64└── psx/ └── Game Title.binScanning Your Library
- Navigate to Settings > Library
- Configure platform paths
- Trigger a library scan
- RomM will fetch metadata for discovered games
Matching Games
- Review unmatched games
- Manually match games that weren’t auto-detected
- Edit metadata as needed
Using RomM
Browsing Your Collection
- Browse by platform
- Search across all games
- View detailed game information
- See cover art and screenshots
Managing Collections
- Create custom collections
- Add games to collections
- Use collections as playlists or favorites
Downloading ROMs
- Download individual ROM files
- Access your library from any device
- Secure authentication protects your collection
Additional Resources
Conclusion
Deploying RomM on Klutch.sh gives you a beautiful, organized way to manage your retro game collection. With automatic metadata fetching and a modern interface, RomM transforms your ROM files into a proper game library accessible from anywhere with secure HTTPS access.