QuestarrNG is Snapetech's maintained fork of Doezer/Questarr. It keeps the upstream game-management foundation and adds a substantial set of fork-maintained features: platform-aware discovery and library views, richer play tracking, post-processing and RomM imports, Playnite and SeerrNG integrations, optional PostgreSQL, and hardened multi-architecture releases. See What changed in QuestarrNG for the overview and the changelog for the release-by-release history.
Use ghcr.io/snapetech-org/questarrng:latest or the Compose file in this
repository for the latest published release. The main, master,
latest, and stable tags all point to the same most recently
published stable image. The dev tag tracks main-branch builds. Semantic-version
tags pin one exact release.
The upstream Questarr image does not contain the SeerrNG provider routes. The
fork image is published for linux/amd64 and linux/arm64.
Support QuestarrNG on Ko-fi.
A video game management application inspired by the -Arr apps (Sonarr, Radarr, Prowlarr...) and GamezServer. Track and organize your video game collection with automated discovery and download management.
⭐ Star us on GitHub — your support motivates us a lot! 🙏😊
For local MCP access, see the SnapeTech MCP integration guide.
- What this fork adds
- List of features
- Installation
- Screenshots
- Tech Stack
- Configuration
- Roadmap
- Troubleshooting
- Project Security & Documentation
- Upstream issue and PR resolution
- Contributing
- License
- Acknowledgments
QuestarrNG continues to share its foundation with upstream Questarr. We maintain a separate fork for the versioned SeerrNG provider and the standalone library, acquisition, and deployment capabilities described in the fork and convergence guide. Its convergence matrix lists the contract and operator checks for moving off this fork.
- A richer game library: platform-scoped discovery and filters, local library scanning, a Playing page with journal entries, milestones, screenshots and Steam achievements, personal game lists, update availability, and DLC and expansion details.
- A complete acquisition path: Prowlarr and Torznab/Newznab search, Hydra-format JSON catalogs, optional RAWG discovery, file-type filtering, release scoring, direct torrent/NZB downloads, configurable release selection, download monitoring, automated post-processing, safer archive extraction, and optional VirusTotal or ClamAV checks before import.
- External library workflows: mapped RomM imports, a Playnite extension for library sync and request-to-download, and a versioned SeerrNG catalog and PC acquisition API.
- More deployment choices: optional PostgreSQL alongside the default SQLite setup, multi-architecture images, a Windows service installer, and rootless container configurations with release attestations.
- A more accessible interface: English plus twelve translated locales, regional date and number formats, and right-to-left layout support.
The fork changes guide summarizes these additions and their release history. The documentation map links to setup, integration, API, database, and security guides.
| Feature | Description |
|---|---|
| Backlog management | Track collection status, ratings, and notes; make private game lists; and distinguish available updates from ordinary search results. The Playing page adds journal notes, milestones, screenshots, and Steam achievements, with crack status, DLC, and expansion details on each game. |
| Game Discovery | Browse popular, new, and upcoming titles via IGDB or optional RAWG, follow RSS and xREL.to feeds, or sync a Steam wishlist. Per-platform Root folder / Scan Disk discovers games already on disk. Game details can show HowLongToBeat estimates for close title matches. |
| Search & Filter | Search by genre, platform, and keyword; filter torrent results by verified file extensions; and use public Hydra-format catalogs. Release scoring, preferred groups/platforms, and blacklists help narrow results. A Platforms setting scopes discovery, library views, downloads, and imports, with optional visibility filters. |
| Download Management | Send releases to a configured downloader or download torrent/NZB files directly. Choose updates and small extras, rank results with saved scoring profiles, then monitor and post-process downloads. Includes password-protected archive handling, optional VirusTotal/ClamAV scanning, and experimental BYOK matching with TypeSafe's Jev. |
| Real-time Notifications | In-app alerts for releases and downloads, plus external notifications to 100+ providers via Apprise. |
| Rich Game Metadata | Details enriched with IGDB, optional RAWG, Steam, HowLongToBeat, PCGamingWiki, and NexusMods, including trending mods where available. |
| Localization | Use the interface in English or one of twelve translated locales, with regional date and number formatting and right-to-left layout support. |
| Statistics | Review collection and download statistics, with sharing to Discord where supported. |
| Security Focused | General security hardening and SSL support — see SECURITY.md for the reporting and deployment hardening process. |
| Deployment | Install through Unraid, CasaOS, Umbrel, Cosmos Cloud, Home Assistant, Windows, or Kubernetes; use published amd64/arm64 images and optional rootless container settings. |
| Integrations | Connect Playnite, RomM, and SeerrNG using the documented integration paths. |
| Design | Clean, minimalist, dark-first UI built with mobile usage in mind. |
Can't decide what to play? Click Pick a game in your Library for Backlog roulette: draw a game, roll again, or mark it as Playing.
When a main release has updates, Questarr opens a bundle choice with updates selected by default. Smaller extras are shown as optional, unchecked choices when their measured size is no more than 25% of the main release. Larger extras and extras with unknown sizes are not suggested, and Download game only remains available. See the release-selection guide for the full behavior and the reason for the size cutoff.
- Sync indexers from Prowlarr.
- G4u.to: the site offers an API to VIP members, which can be used in Questarr.
| Indexers | Downloaders |
|---|---|
| Torznab protocol (Torrent) | - qBittorent - Transmission - rTorrent - Deluge - Synology Download Station |
| Newznab protocol (Usenet) | - Sabnzbd - Nzbget |
| G4U.to | Same as Newznab |
QuestarrNG provides SeerrNG with an IGDB catalog and request-scoped PC-game
acquisition through a versioned, authenticated integration API. The contract
keeps SeerrNG's request ID and selected OS/architecture attached to QuestarrNG's
tracked game and download records. See docs/API.md for the
catalog, status, retry, cancellation, and imported-file streaming routes.
Cancellation stops only downloads safely correlated to the SeerrNG request;
completed files remain on disk, and ambiguous active downloads are refused. If
Questarr restarts during a handoff before recording its download, it pauses the
request for a duplicate-download check before retrying or cancelling. The retry
or cancel endpoint returns 409 with confirmationRequired until the caller
checks the download queue/history and sends confirmNoExistingDownload: true.
QuestarrNG 2.1.1's provider advertises contract v2 and preserves exact IGDB
request identity, verified Steam ownership, and community play-time estimates.
It supports authenticated multi-file bundles and can stage Real-Debrid
downloads locally before import. The wider interface is available in English
and twelve translated locales with regional date and number formatting.
Emulation acquisition remains unsupported. See the
compatibility guide.
Editions, selected content, and discovery. The same API now lets SeerrNG
list a game's editions and the content each links, request only the expansions
or add-ons a person selected (or a complete edition), and find games by theme,
game mode, perspective, genre, and language. Content IGDB does not describe is
reported as unknown instead of guessed, an edition request is met only by
releases that name that edition, and an add-on request only by releases that
name it or a complete bundle. For a game already in your library the selected
content is searched for without changing what you own. Handshake flags:
editions, discover, wantedContent. Routes and the request selection
field are in docs/API.md.
Post-processing can move, copy, hardlink, or symlink completed downloads into your PC library, unpack supported archives, or route matched ROM imports into RomM folders. Optional VirusTotal hash checks and ClamAV scans run before unpacking or import. The import guide explains RomM routing and scanner setup; Library Import covers folder discovery, import history, and recovery. Pending-import recovery stays with the account that owned the original game: other accounts cannot see, skip, or relink that download, and a relink target must belong to the same account.
Docker is the easiest way to deploy QuestarrNG with all dependencies included. SQLite is the default database; PostgreSQL is available as an optional backend. See docs/DATABASE.md before configuring PostgreSQL.
The optional Windows installer runs QuestarrNG as a Windows service and bundles its service host as a self-contained .NET 10 LTS executable. QuestarrNG itself is a Node.js application; the installer does not require a separate .NET runtime. Version-tag releases include the Windows x64 installer and a SHA-256 checksum on the GitHub release page.
Supported architectures: released QuestarrNG Docker images are published for
linux/amd64 and linux/arm64, so the app runs on a Raspberry Pi 4/5 with a
64-bit OS, other 64-bit ARM SBCs, and ARM-based NAS boxes as well as on x86
hardware. Docker selects the right architecture automatically — the commands
below are identical on every platform. Both images build a native RARLAB UnRAR
7.23 executable, so RAR/RAR5 and multi-volume imports work on ARM64 as well as
amd64. (32-bit ARM, e.g. armv7/a 32-bit OS on Raspberry Pi 3 and earlier, is
not supported. The Home Assistant add-on is
amd64-only.)
mkdir -p ./data
docker run -d -p 5000:5000 --user "$(id -u):$(id -g)" \
-e PUID="$(id -u)" -e PGID="$(id -g)" \
-v ./data:/app/data --name questarrng ghcr.io/snapetech-org/questarrng:latestThe main, master, latest, and
stable production aliases move together when a validated versioned release
is published. A push to main does not publish a release image. Each release
also keeps its exact semantic-version tag, such as 2.1.1. To update a Compose install,
run docker compose pull && docker compose up -d.
-
Use the
docker-compose.ymlfile from the repo or create a minimal one. It pulls the published GHCR image and does not need a.envfile for the default SQLite setup:services: app: image: ghcr.io/snapetech-org/questarrng:latest user: "${PUID:-1000}:${PGID:-1000}" ports: - "5000:5000" volumes: - ./data:/app/data environment: - SQLITE_DB_PATH=/app/data/sqlite.db restart: unless-stopped
-
Start the application:
mkdir -p ./data PUID="$(id -u)" PGID="$(id -g)" docker compose up -d
-
Access the application: Open your browser to
http://localhost:5000
If port 5000 is already in use, the repository Compose file lets you change
the host-side port while keeping the app on its internal port:
HOST_SIDE_PORT=5100 docker compose up -dThen open http://localhost:5100. If you use the minimal Compose example
above, change its port mapping from 5000:5000 to 5100:5000; the left side
is the host port and the right side is the port inside the container.
For compatibility, a PORT value in the Compose .env file sets both sides
when neither split variable is set. For example, PORT=5201 maps
5201:5201 and makes the app listen on 5201. Explicit
HOST_SIDE_PORT and CONTAINER_INTERNAL_SIDE_PORT values take precedence,
so you can still expose a different host port without changing the port inside
the container.
The image runs as a non-root user by default. Set PUID and PGID to the
owner of the mounted data directory; the Compose file uses those values as the
container user. Existing installs keep their data and should set these values
to the current owner. For a read-only container filesystem, drop all Linux
capabilities, and block privilege escalation, use the
docker-compose.hardened.yml overlay. It runs
the app as the configured PUID:PGID directly, so prepare the bind-mounted
./data directory with that ownership before starting it.
-
Optional — use Postgres instead of SQLite:
Questarr uses SQLite by default and needs no database configuration. If you would rather run it against Postgres, use the bundled compose file:
POSTGRES_PASSWORD=$(openssl rand -hex 32) docker compose -f docker-compose.postgres.yml up -dKeep whatever password you pick — the same value must be supplied on every restart, and it must be safe to embed in a connection URL (a hex string from
openssl rand -hex 32always is).Switching an existing SQLite install to Postgres does not move your data — run
scripts/sqlite-to-pg.tsto bring your library across. See docs/DATABASE.md.To switch a current optional-Postgres install back to SQLite, the database guide also includes a safe copy command. The old pre-v1.1 PostgreSQL migration procedure remains separate because it handles a different schema.
Maintainers can publish a fresh image without waiting for the scheduled build:
open Actions → Deploy Web App → Run workflow
and choose production, dev, or test. A custom image tag is optional; the
workflow summary lists the tags it created and prints a matching docker pull
command. Production builds include ARM64; for other environments, ARM64 and the
Windows installer are optional builds. The workflow runs its dependency and
license checks before publishing.
GitHub Actions supplies the GITHUB_TOKEN used to publish to GHCR. Application
credentials belong in the runtime environment where the container is deployed,
not in repository workflow secrets; see Environment variables.
HOST defaults to 0.0.0.0 for container networking. For a bare-metal install
with a reverse proxy on the same host, set HOST=127.0.0.1 to restrict access.
Install via the Windows installer (.exe)
Prefer running Questarr as a native Windows service instead of Docker? Download
QuestarrSetup-<version>-windows-x64.exe from the
latest QuestarrNG release and
run it. The installer bundles Node.js, installs Questarr as a Windows service
(Questarr.Service.exe), and starts it automatically — open
http://localhost:5000 once it finishes.
Deploy as a Proxmox LXC container — no Docker
Run this on your Proxmox VE host, as root, to create an LXC container with Questarr installed
and running as a systemd service:
bash -c "$(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://raw.githubusercontent.com/snapetech/QuestarrNG/main/scripts/proxmox/questarr-lxc.sh)"The script picks the next free container ID, downloads a Debian template if needed, creates an unprivileged container, builds Questarr from source, and prints the URL to open. Every prompt has a default, so you can accept them all and be done in a few minutes.
Update later with pct exec <ctid> -- update.
See docs/PROXMOX.md for non-interactive installs, sizing guidance, configuration, and troubleshooting.
Install via an Unraid user template
The upstream Questarr Community Apps entry uses the upstream image and
does not include this fork's SeerrNG integration routes. Use the
QuestarrNG fork template
for ghcr.io/snapetech-org/questarrng:latest. QuestarrNG works as a standalone
game manager; SeerrNG integration is optional. For package or integration
support, use the SeerrNG issue tracker.
Unraid 6.10 and later no longer has the Template repositories field. Add the local user template from the Unraid terminal:
wget -O /boot/config/plugins/dockerMan/templates-user/questarrng.xml \
https://raw.githubusercontent.com/snapetech-org/QuestarrNG/main/unraid/questarr.xml- In Docker, choose Add Container and select the QuestarrNG user template.
- Set your Data Path (default
/mnt/user/appdata/questarrng), PUID/PGID, and HTTP port (default5000). - Set the Game Library and Downloads paths to the folders shared with your download client. The game
library is mounted at
/datainside the container. Under Settings → Path Mappings, set Local Path to/dataand Remote Path to the exact path reported by the download client. - Apply, then open
http://<unraid-host>:5000to access the UI.
The image runs as a non-root user. The template maps that user to 99:100 by
default; make sure the mounted folders are writable by that ID. If you change
PUID/PGID, update the template's Extra Parameters --user value to match.
Install via Custom Install (AppFile)
- Open the App Store and click Custom Install.
- Click the import icon (top right) and paste this URL:
https://raw.githubusercontent.com/snapetech/QuestarrNG/main/casaos/docker-compose.yml - Review the mounts — by default
/DATA/AppData/questarrholds Questarr's data and/DATA/Downloadsis mounted at/dataso Questarr can import finished downloads. If you keep that second mount, add a matching entry under Settings → Path Mappings. - Click Install, then open Questarr from the CasaOS dashboard (port
5000).
Install via Community App Store
- In umbrelOS, open the App Store.
- Click the ⋮ menu (top right) → Community App Stores.
- Add this repository URL:
https://github.com/snapetech-org/QuestarrNG - Open the Snapetech store and install QuestarrNG (app ID
doezer-questarr, retained for existing installs), then open it from your dashboard (http://umbrel.local:5000).
Install as a ServApp
- Open Market Place → Custom Install (or Servapps → Add).
- Paste this URL:
https://raw.githubusercontent.com/snapetech/QuestarrNG/main/cosmos/questarr.cosmos-compose.json - Fill in the install form: Data folder, optional Library folder (the root your download
client writes into, mounted at
/data), andPUID/PGID. - Install. Cosmos creates the route
questarr.<your-server-hostname>and handles HTTPS for you.
Install with the bundled Helm chart
A Helm chart lives in charts/questarr. Each version-tag
release attaches a packaged chart and SHA-256 checksum to its GitHub release.
There is no Helm repository yet; you can install from a repository clone:
git clone https://github.com/snapetech-org/QuestarrNG.git
cd QuestarrNG
helm install questarr charts/questarr --namespace questarr --create-namespaceThen port-forward (or enable the Ingress) and open the UI:
kubectl port-forward -n questarr svc/questarr 5000:5000Questarr keeps its state in a single SQLite database on a ReadWriteOnce volume, so the
chart never runs more than one replica. See charts/questarr/README.md
for the full option reference — persistence, media mounts, secrets, Ingress and
subdirectory deployments.
Install as a Home Assistant add-on
You can install Questarr as a Home Assistant add-on from this repository:
- In Home Assistant, open Settings → Add-ons → Add-on Store.
- Click the menu (⋮) and choose Repositories.
- Add this repository URL:
https://github.com/snapetech-org/QuestarrNG - Install the Questarr add-on and start it.
- Open
http://<home-assistant-host>:5000to access the UI.
The add-on stores its application state in Home Assistant's persistent /data
volume and runs as UID/GID 1000:1000; it does not expose PUID/PGID settings or
a separate media-library mount. On startup, a narrowly scoped helper corrects
ownership inside /data and checks that it is writable. A wrong or read-only
volume binding still needs to be corrected in the host configuration. See the
add-on operations notes.
Platform definitions live in the repository; mount and port behavior varies by installer. See docs/HOME_SERVER_APPS.md for platform-specific details.
👀 See the app in action
Your central hub for recent activity, collection overview and downloading available games. Manage your owned and wanted games.
Manage your wanted games and when they release.
Browse and find new games to add to your collection. Download from a game’s details to add it as Wanted and send a release to your downloader.
Discover releases through RSS feeds and xREL.to, with IGDB matching.
Monitor your downloaders' active downloads and history.
Check out your library statistics.
Configure indexers, downloaders, and application preferences.
- APIs: IGDB (game metadata), Torznab/Newznab (indexer search), PCGamingWiki, NexusMods, xREL.to
- AIs usage:
- Claude and Github Copilot are used for AI-Assisted coding, internal code reviews, PR cleanup. Eventually automated coding and troubleshooting for small tasks and bug reports.
- Gemini & Codex are used for automated code reviews, and brainstorming from time to time (as well as Perplexity for this usage).
- Google Jules is used for light periodical refactoring.
- First-time setup:
- Create your admin account
- Configure the IGDB credentials
Once logged-in:
- Configure indexers
- Add downloaders
- Add games!
See the upstream Configuration Wiki for more detailed info.
Getting IGDB API Credentials
IGDB provides game metadata (covers, descriptions, ratings, release dates, etc.).
- Go to Twitch Developer Console
- Log in with your Twitch account (create one if needed)
- Click "Register Your Application"
- Fill in:
- Name: Questarr (or any name)
- OAuth Redirect URLs:
http://localhost(not used, but required) - Category: Application Integration
- Click "Create"
- Copy your Client ID and Client Secret
- Add them to your
.envfile
Upgrading from v1.0 (PostgreSQL)
If you are upgrading from an older version that used PostgreSQL, you need to migrate your data.
The migration tooling was removed in v1.5.0 and is now run from the archived v1.4.2 release. Follow docs/MIGRATION.md, which inlines the pinned compose file and links the sources by tag permalink.
This is only for pre-v1.1 PostgreSQL installations. Running Questarr on PostgreSQL as an opt-in backend is a separate feature — see
docs/DATABASE.md.
See docs/MIGRATION.md for more details.
Advanced usage
This is mainly for users who want the latest commit (e.g when trying out fixes for an issue) or contributing users.
- Clone the repository:
git clone https://github.com/snapetech-org/QuestarrNG.git
cd QuestarrNG-
Configure the application: Edit
docker-compose.ymldirectly if you need to setup a specific environment. -
Build and start the containers:
docker-compose up -d- Access the application:
Open your browser to
http://localhost:5000
Your database content will be kept.
git pull
docker-compose down
docker-compose build --no-cache
docker-compose up -dWant to serve Questarr from a path like https://xxx.domain.com/Questarr
instead of its own subdomain? Set QUESTARR_BASE_PATH=/Questarr on the
container (or in .env for npm installs) and point your reverse proxy at it
— no rebuild required. See docs/REVERSE_PROXY.md for
full setup instructions (nginx, Traefik, Caddy).
Behind any reverse proxy, also set TRUST_PROXY=1 so rate limits see real
client IPs (see the same doc).
The original upstream roadmap is now partly delivered and partly superseded by fork work. Post-processing, indexer links, optional PostgreSQL, RomM import routing, the Playnite and SeerrNG integrations, and Real-Debrid downloads are shipped. The remaining product proposals are version-aware game upgrades, additional direct-download providers, importing owned Steam or GOG libraries, and possible Gameyfin or user-defined webhook integrations. The maintained PRD marks what is shipped, what remains, and which ideas have no delivery commitment. The UI localization roadmap tracks current language and calendar coverage, plus the remaining screen-level translation and RTL work.
See the upstream Troubleshooting Wiki
If you lose the local account password, an operator can reset it from the QuestarrNG host or container with the password-recovery CLI.
If you run into an issue, go to the Logs page and click Send Logs before reporting it — it makes diagnosing the problem much easier.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: Join our Server
- OIDC sign-in setup, account admission, and recovery
- Shared OIDC provider catalog and setup links · cross-project contract
- What changed in the fork summarizes the maintained additions since the upstream baseline.
- Import processing and security scans explains RomM routing, archive handling, and optional malware checks.
- Start with docs/GITHUB_DOCUMENTATION.md for the full documentation map.
QuestarrNG is reviewing the complete history of Doezer/Questarr issues and pull requests, including closed issues, merged PRs, and closed unmerged PRs. The goal is to implement missing actionable behavior in this fork, verify behavior that already exists, and record a source-backed disposition for every item. Upstream maintainers decide whether to accept changes or close their issues and PRs.
The campaign overview links to the full audit and evidence process, the per-item ledger, the generated 1,163-item inventory, and each batch's validation evidence. After Batch 83, the ledger records 690 verified, 224 superseded, 14 not applicable, six implemented-but-unverified, zero needing implementation, and 229 unreviewed records. Batch 83 reviewed PRs #942–943, issue #944, and PRs #945–949. It bounded recursive game-file scans and made partial results clear in the Files tab. See the campaign overview, the Batch 83 validation record, and the Batch 82 validation record. QuestarrNG does not require DCO sign-off trailers. See the current contribution attribution policy for licensing responsibility and AI-assisted contribution disclosure.
- See .github/CONTRIBUTING.md for guidelines on how to contribute to this project.
- See DCO.md for the contribution attribution policy.
- See MAINTAINERS.md for how repository access and release permissions are managed.
Made with contrib.rocks.
QuestarrNG is a self-hosted game manager designed solely for organizing, tracking, and automating game libraries using user-provided data and metadata APIs (such as IGDB). QuestarrNG does not host, distribute, or provide any copyrighted game content, ROMs, or download links. It is a technology-neutral tool: any indexers, download clients, or sources you configure are chosen and operated entirely by you. You are solely responsible for ensuring that your use of QuestarrNG, and any content you access or download through third-party services you configure, complies with all applicable laws and the terms of service of those third parties.
GPL-3.0-only - see COPYING for the full license text.
- Inspired by Sonarr and GamezServer
- Game metadata powered by IGDB API
- UI components from shadcn/ui
- Security scanning supported by Snyk through the Snyk Open Source program
- AI code reviews by CodeRabbit, free for open source
- This project is tested with BrowserStack
Run ./scripts/security-scan-local.sh for local Semgrep CE and the Trivy scanners that fit this repository. The installed pre-commit hook runs Semgrep on staged source/config files only; Trivy runs on demand or in CI. See security-scanning.md. Use ./scripts/update-security-tools.sh to refresh local scanner data and the Trivy database.













