Synology Setup
External Written Guides
While you can follow the below guide, Marius Bogdan Lixandru has written excellent guides which focus on Synology infrastructure and with support for both MariaDB and PostGresSQL:
- How to Install RomM on Your Synology NAS (MariaDB)
- How to Install RomM With PostgreSQL on Your Synology NAS
We suggest following the above guides if they fit your setup, and the guide below is available for all other use cases.
Prerequisites
This guide assumes you're familiar with Docker and have basic knowledge of server management. You'll need:
- A Synology NAS or similar server
- Docker installed
- Basic command line knowledge
- Access to manage network settings
Setup Process
1. Folder Structure Setup
ROM Storage Folders
Create the following directory structure for game assets and configuration:
ROM Library Structure
RomM requires a very specific folder structure for rom files:
Note: For supported platforms and their specific folder names, refer to the official RomM wiki.
Docker Data Folders
Create these folders for project and container data:
mkdir -p /volume1/docker/romm-project/
mkdir -p /volume1/docker/romm/resources
mkdir -p /volume1/docker/romm/redis-data
mkdir -p /volume1/docker/mariadb-romm
2. Network Bridge Setup
Create a new network bridge named rommbridge
following standard Docker networking practices. You can use this guide for reference.
3. Key Generation
Authentication Key
Generate your authentication key using:
Save the output - you'll need it for the ROMM_AUTH_SECRET_KEY
in your configuration.
API Integration Setup
Follow the dedicated wiki page for API key generation to set up your API keys.
4. MariaDB Configuration
Important
- This guide uses a dedicated MariaDB container for RomM, but you can use an existing MariaDB instance if preferred
- We're using MariaDB version 10.7 for compatibility
- The container uses port 3306 internally, mapped to 3309 externally
- A simplified health check is implemented for stability
5. Docker Compose Configuration
Create a docker-compose.yml
file with the following content:
Example Docker Compose
version: "3"
volumes:
mysql_data:
services:
romm:
image: rommapp/romm:latest
container_name: romm
restart: unless-stopped
environment:
- DB_HOST=romm-db
- DB_NAME=romm # Should match MARIADB_DATABASE in mariadb
- DB_USER=romm-user # Should match MARIADB_USER in mariadb
- DB_PASSWD= # Should match MARIADB_PASSWORD in mariadb
- ROMM_AUTH_SECRET_KEY= # Generate a key with `openssl rand -hex 32`
- SCREENSCRAPER_USER= # These are the recommended metadata providers
- SCREENSCRAPER_PASSWORD= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#screenscraper
- RETROACHIEVEMENTS_API_KEY= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#retroachievements
- STEAMGRIDDB_API_KEY= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#steamgriddb
- HASHEOUS_API_ENABLED=true # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#hasheous
volumes:
- /volume1/docker/romm/resources:/romm/resources
- /volume1/docker/romm/redis-data:/redis-data
- /volume1/data/media/games/library:/romm/library
- /volume1/data/media/games/assets:/romm/assets
- /volume1/data/media/games/config:/romm/config
ports:
- 7676:8080
network_mode: rommbridge
depends_on:
romm-db:
condition: service_healthy
restart: true
romm-db:
image: mariadb:latest
container_name: romm-db
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD= # Use a unique, secure password
- MARIADB_DATABASE=romm
- MARIADB_USER=romm-user
- MARIADB_PASSWORD=
ports:
- 3309:3306
network_mode: rommbridge
volumes:
- /volume1/docker/mariadb-romm:/var/lib/mysql
healthcheck:
test: [CMD, healthcheck.sh, --connect, --innodb_initialized]
start_period: 30s
start_interval: 10s
interval: 10s
timeout: 5s
retries: 5
6. Initial Launch
- Start the containers using Docker Compose
- Be patient! The container can take a few minutes to setup on first launch
- Monitor progress through container logs
- Access RomM through your browser at
http://your-server-ip:7676
Important
- Replace placeholder values (UIDs, GIDs, passwords, API keys) with your own
- Ensure proper permissions on all created directories
- Back up your configuration after successful setup
- Monitor logs during initial startup for any errors
Troubleshooting
- If the web interface shows "page not found," wait for initial setup to complete
- For database connection issues, verify MariaDB container health status
- Check logs for both containers if experiencing issues
- Ensure all volumes are properly mounted with correct permissions
Contributing
This guide is an abridged version of ChopFoo's original guide. If you have any suggestions or improvements, please submit a pull request to the RomM wiki.