romm Docker & Self-Hosted Deployment

GitHub

A beautiful, powerful, self-hosted ROM manager and player.

13,957 stars Python Python 4 files ยท ~43,257 tokens #emulation#open-source#retrogaming#rommapp#self-hosted
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/mariadb
2. Docker Run (1-Click Launch) docker run -d --name romm -p 3000:3000 --restart always mariadb:13.0.2
3. Podman Run podman run -d --name romm -p 3000:3000 --restart always mariadb:13.0.2
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/mariadb:13.0.2
5. ORAS Pull (OCI Artifact) oras pull mariadb:13.0.2
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
# Please see the full example under examples/docker-compose.example.yml

# Pinned so the default network stays romm_default whatever the checkout
# directory is named; docker-compose.oidc.yml and .streaming.yml join it.
name: romm

services:
  romm-dev:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: romm-dev
    env_file: .env
    environment:
      - REDIS_HOST=romm-valkey-dev
      - DB_HOST=${DB_HOST:-romm-db-dev}
      - ROMM_BASE_PATH=/app/romm
    ports:
      - "3000:3000" # Vite dev server (custom)
      - "5173:5173" # Vite dev server (default)
      - "8443:8443" # HTTPS dev server
      - "5678:5678" # debugpy
      - "${DEV_PORT:-5000}:5000" # Backend API
    volumes:
      - ./backend:/app/backend
      - /app/backend/romm_mock # Empty directory
      - ./frontend:/app/frontend
      - /app/frontend/node_modules # Empty directory
      - /app/frontend/dist # Empty directory
      - ./romm_mock:/app/romm
      - ~/.vite-plugin-mkcert:/app/.vite-plugin-mkcert
      # Read-only, so the backend can report the checked-out branch (see
      # backend/utils/__init__.py get_git_branch) without git write access.
      - ./.git:/app/.git:ro
    depends_on:
      - romm-db-dev
      - romm-valkey-dev
    command: /bin/bash -c "cd /app && bash"
    stdin_open: true
    tty: true

  romm-db-dev:
    image: mariadb:13.0.2
    container_name: romm-db-dev
    restart: unless-stopped
    env_file: .env
    environment:
      - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWD:-rootpassword}
      - MARIADB_DATABASE=${DB_NAME:-romm}
      - MARIADB_USER=${DB_USER:-romm}
      - MARIADB_PASSWORD=${DB_PASSWD:-romm}
    volumes:
      - romm-db-dev:/var/lib/mysql
    ports:
      - "3306:3306"

  romm-valkey-dev:
    image: valkey/valkey:9.0.6
    container_name: romm-valkey-dev
    restart: unless-stopped
    env_file: .env
    ports:
      - "${REDIS_PORT:-6379}:6379"

volumes:
  romm-db-dev: