User Tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
services:romm [2024/04/04 06:23] – created willyservices:romm [2024/09/02 13:22] (current) willy
Line 1: Line 1:
 ====== ROMM ====== ====== ROMM ======
  
-[[https://github.com/rommapp/romm|RomM]] is a ROM manager for your console ROM collection. +[[https://github.com/rommapp/romm|RomM]] is a ROM manager for your console ROM collection. Moreover, it also allow you to play your games directly in the browser. Pretty neat, eh.
  
 ===== Installation ===== ===== Installation =====
  
-Create the usual dedicated user called **romm** belonging to the **media** group, so it can access your collection:+Create the usual dedicated user called **romm** belonging to the **media** group, so it can access your collection, since we are here, also create the podman network you will use later on:
 <code bash> <code bash>
 useradd -d /data/daemons/romm -m -g media romm useradd -d /data/daemons/romm -m -g media romm
 +podman network create romm-net
 </code> </code>
 +
 +Create the required folder structure:
 +<code bash>
 +cd /data
 +mkdir ROMs
 +mkdir ROMs/roms
 +mkdir ROMs/assets
 +mkdir ROMs/config
 +</code>
 +
 +The ROMs should be moved under the **roms** folder following the specific structure defined [[https://github.com/rommapp/romm?tab=readme-ov-file#-folder-structure|here]]. Please note that what is called __library__ path is the **/data/ROMs** folder!
 +
 +Now, create the required IGDB/MobyGames APIs according to the[[https://github.com/rommapp/romm/wiki/Generate-API-Keys|instructions here]]. this is a bit complex and long process, but it's needed to properly organize your ROMs.
  
 Download the //docker-compose.yml//: Download the //docker-compose.yml//:
Line 16: Line 29:
 wget -O docker-compose.yml https://github.com/rommapp/romm/raw/release/examples/docker-compose.example.yml wget -O docker-compose.yml https://github.com/rommapp/romm/raw/release/examples/docker-compose.example.yml
 </code> </code>
 +
  
 and edit it at lest for: and edit it at lest for:
 +<code>
 +These needs to be filled up properly:
 +      - DB_PASSWD=blahblahmysecret
 +      - IGDB_CLIENT_ID= <<< see above >>>
 +      - IGDB_CLIENT_SECRET= <<< see above >>>
 +      - MOBYGAMES_API_KEY= << see above >>>
 +      - ROMM_AUTH_SECRET_KEY= # Generate a key with `openssl rand -hex 32`
 +
 +These need to be adapted to your setup:
 +      - /data/ROMs:/romm/library # Your game library
 +      - /data/ROMs/assets:/romm/assets # Uploaded saves, states, etc.
 +      - /data/ROMs/config:/romm/config # Path where config.yml is stored
 +
 +Choose an available port (es: 22800):
 +    ports:
 +      - 2280:8080
 +
 +These needs to be set:
 +     - MYSQL_ROOT_PASSWORD= blahblahmysecret
 +      - MYSQL_PASSWORD= oiwejfoiwjoifwfoij
 +
 +This needs to be added to both services:
 +    networks:
 +      - romm-net
 +
 +This goes at the bottom of the file:
 +networks:
 +  romm-net: {}
 +</code>
 +
 +Now pull the images:
 +<code bash>
 +podman compose pull
 +</code>
 +
 +===== Reserse Proxy =====
 +
 +RomM needs to run on it's own subdomain. So check [[selfhost:nginx|The Reverse Proxy concept]] and use a similar config file **romm.conf**:
 +<file - romm.conf>
 +server {
 +        server_name romm.mydomain.com;
 +        listen 8443 ssl; # managed by Certbot
 +        listen 443 ssl; # managed by Certbot
 +        client_max_body_size 50000M;
 +        large_client_header_buffers 4 32k;
 +
 +        access_log /var/log/nginx/romm.mydomain.com_access_log main;
 +        error_log /var/log/nginx/romm.mydomain.com_error_log info;
 +       
 +       include "com.mydomain/authelia_location-basic.conf";
 +
 +        location / {
 +                proxy_pass http://127.0.0.1:2280/;
 +                include "com.mydomain/authelia_proxy.conf";
 +                include "com.mydomain/authelia_authrequest-basic.conf";          
 +                proxy_set_header Connection $http_connection;
 +                proxy_set_header Upgrade $http_upgrade;
 +        }
 +        include com.mydomain/certbot.conf;
 +}
 +</file>
 +
 +RomM also support Basic Authantication, and the above configuration file will enable it using Authelia.
 +
 +Adapt to your needs and restart your NGINX.
 +
 +===== Autostart =====
 +
 +To start it, and set it up on boot, as usual follow my indications [[gentoo:containers|Using Containers on Gentoo]], so link the **user-containers** init script:
 +<code>
 +ln -s /etc/init.d/user-containers /etc/init.d/user-containers.romm
 +</code>
 +
 +and create the following config file:
 +<file - /etc/conf.d/user-containers.romm>
 +USER=romm
 +DESCRIPTION="The rom server"
 +</file>
 +
 +Add the service to the default runlevel and start it now:
 +<code bash>
 +rc-update add user-containers.romm default
 +rc-service user-containers.romm start
 +</code>
  

This website uses technical cookies only. No information is shared with anybody or used in any way but provide the website in your browser.

More information