This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== ROMM ====== [[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 ===== 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> useradd -d /data/daemons/romm -m -g media romm podman network create romm-net </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//: <code bash> su - romm wget -O docker-compose.yml https://github.com/rommapp/romm/raw/release/examples/docker-compose.example.yml </code> 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>