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:
useradd -d /data/daemons/romm -m -g media romm podman network create romm-net
Create the required folder structure:
cd /data mkdir ROMs mkdir ROMs/roms mkdir ROMs/assets mkdir ROMs/config
The ROMs should be moved under the roms folder following the specific structure defined here. Please note that what is called library path is the /data/ROMs folder!
Now, create the required IGDB/MobyGames APIs according to theinstructions here. this is a bit complex and long process, but it's needed to properly organize your ROMs.
Download the docker-compose.yml:
su - romm wget -O docker-compose.yml https://github.com/rommapp/romm/raw/release/examples/docker-compose.example.yml
and edit it at lest for:
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: {}
Now pull the images:
podman compose pull
Reserse Proxy
RomM needs to run on it's own subdomain. So check The Reverse Proxy concept and use a similar config file romm.conf:
- 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; }
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 Using Containers on Gentoo, so link the user-containers init script:
ln -s /etc/init.d/user-containers /etc/init.d/user-containers.romm
and create the following config file:
- /etc/conf.d/user-containers.romm
USER=romm DESCRIPTION="The rom server"
Add the service to the default runlevel and start it now:
rc-update add user-containers.romm default rc-service user-containers.romm start