# ROMarr. Copy this file, edit the two paths and the four URLs, and start it. # # Prowlarr, your download client and your game library are not started here -- # you already run them, and a compose file that spawned its own copies would # fight the stack it is meant to join. services: romarr: image: ghcr.io/blizzhacker/romarr:latest container_name: romarr restart: unless-stopped ports: - "6868:6868" environment: # Who owns the ROMs ROMarr writes. Use the same ids as your library app, # or `id -u` / `id -g` for your media user. PUID: 1000 PGID: 1000 TZ: Etc/UTC # Prowlarr -- how ROMarr finds releases. PROWLARR_URL: http://prowlarr:9696 PROWLARR_API_KEY: "" # Your game library. LIBRARY_KIND is romm, gaseous or retrom. LIBRARY_KIND: romm LIBRARY_URL: http://romm:8080 LIBRARY_USERNAME: romarr LIBRARY_PASSWORD: "" # Where finished ROMs are filed, as seen inside THIS container. It is the # container path, not the host path -- see the volume below. LIBRARY_PATH: /roms # Download client. At least one is required: a release found with no # client that speaks its protocol is ranked and then refused. QBITTORRENT_URL: http://qbittorrent:8080 QBITTORRENT_USER: "" QBITTORRENT_PASS: "" # Optional usenet clients. # SABNZBD_URL: http://sabnzbd:8080 # SABNZBD_API_KEY: "" # NZBGET_URL: http://nzbget:6789 # NZBGET_USER: "" # NZBGET_PASS: "" # What ROMarr labels its own downloads with, per client. Defaults to # "romarr". The category does NOT have to exist in the client first -- # SABnzbd keeps an undefined one verbatim and ROMarr still matches it. # Define it there anyway if you want its own folder or a post-processing # script, or point this at a built-in like "software". # SABNZBD_CATEGORY: romarr # QBITTORRENT_CATEGORY: romarr # NZBGET_CATEGORY: romarr # Optional request front-end, shown on the System page. # GGREQUESTZ_URL: http://ggrequestz:3000 # Optional headless RetroArch stream server. ROMarr only ever reads from # it -- one GET asking which platforms it can play -- and uses the answer # to report PS2, GameCube, Wii, Dreamcast and 3DS as playable instead of # download-only. Everything works without it, minus those routes. # STREAM_SERVER_URL: http://romm-stream:8090 LOG_LEVEL: INFO volumes: # History, settings and indexer configuration. Keep this one. - ./config:/config # Your library root. The left side is the host; the right side must match # LIBRARY_PATH above. - /path/to/roms:/roms # Your download client's completed directory. # # Left side is the host. The RIGHT side must be the path your download # client reports, character for character -- ROMarr asks the client where # a finished download is and then opens that path itself, so the two have # to agree. The host side only has to be the directory actually holding # those files; it does not have to resemble the container path. # # So if the files live at /mnt/downloads/complete on the host and SABnzbd # reports /downloads/complete, both sides change: # # - /mnt/downloads/complete:/downloads/complete # # A client running on the host rather than in a container reports host # paths, which makes the two sides identical: # # - /mnt/downloads:/mnt/downloads # # Not sure what your client reports? qBittorrent shows it as "Save path" # in Options -> Downloads; SABnzbd as "Completed Download Folder" in # Config -> Folders. ROMarr uses whatever the client's API returns, which # is that setting. # # When the paths genuinely cannot be made to match, leave this as-is and # add a mapping under Settings -> Media Management, which rewrites the # client's prefix into a local one. - /path/to/downloads:/downloads # Prefer an env file to editing this one? Delete the `environment:` block and # use `env_file: .env` -- compose turns those entries into real environment # variables, which is what ROMarr reads.