Questarr: Gestor de juegos inspirado en el ecosistema *Arr

Publicado por


Gestor de juegos

Questarr: Gestor de juegos inspirado en el ecosistema *Arr

Aplicación de gestión de videojuegos que automatiza el descubrimiento, seguimiento y descarga de títulos, inspirada en Sonarr, Radarr y Prowlarr.

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Questarr: Gestor de juegos inspirado en el ecosistema *Arr en el canal GENBYTE:

¿Qué es Questarr: Gestor de juegos inspirado en el ecosistema *Arr?

Questarr es una aplicación de gestión de videojuegos autohospedada que permite descubrir, organizar y automatizar la descarga de títulos mediante indexadores y clientes de descarga compatibles. Está inspirada en el ecosistema *Arr (Sonarr, Radarr, Prowlarr) y GamezServer, ofreciendo una interfaz oscura, minimalista y adaptada a móviles. Permite gestionar el backlog de juegos, importar bibliotecas desde Steam o disco local, buscar lanzamientos en indexadores Torznab/Newznab y G4U.to, y enviar descargas a clientes como qBittorrent, Transmission, Sabnzbd o Synology Download Station. Utiliza SQLite por defecto con soporte opcional para PostgreSQL, y se despliega fácilmente mediante Docker, instalador nativo de Windows, Proxmox LXC, Unraid, CasaOS, Umbrel, Cosmos Cloud, Kubernetes (Helm) o add-on de Home Assistant.

Automatiza el ciclo completo de descubrimiento y descarga de juegos con una interfaz tipo *Arr, soporte multi-plataforma y despliegue en un solo contenedor.

Características principales

Gestión de backlog

Seguimiento de estado, valoraciones, notas y diario de juego. Incluye ruleta de backlog para elegir un juego de la biblioteca o en curso.

Descubrimiento de juegos

Navegación por IGDB, RSS y xREL.to, sincronización de lista de deseos de Steam e importación de biblioteca local desde disco.

Búsqueda y filtrado avanzado

Búsqueda por género, plataforma y palabra clave con búsqueda automática hasta encontrar lanzamiento, lista negra de lanzamientos y grupos/plataformas preferidos. Filtros para ocultar juegos aparcados, poseídos o con restricción de edad.

Gestión de descargas

Automatización de descargas e importaciones de biblioteca, con actualizaciones de archivos que preservan archivos no relacionados, revisión manual, escaneo de seguridad opcional y coincidencia experimental por IA.

Notificaciones en tiempo real

Alertas en la aplicación y mediante Apprise, con controles de actualización para juegos aparcados y completados.

Metadatos enriquecidos

Detalles de juegos con datos de IGDB, Steam, PCGamingWiki y NexusMods, incluyendo mods tendencia cuando están disponibles.

Estadísticas de colección

Visualización de estadísticas de la biblioteca con soporte para compartir en Discord.

Enfoque en seguridad

Endurecimiento general, soporte SSL y certificación OpenSSF.

Integraciones nativas

Instalación en un clic en Unraid, CasaOS, Umbrel y Cosmos Cloud, add-on de Home Assistant, instalador de Windows, gráfico Helm para Kubernetes y extensión para Playnite.

Diseño responsive

Interfaz limpia, minimalista, modo oscuro por defecto y pensada para uso móvil.

Requisitos del sistema

  • Arquitectura compatible: linux/amd64 o linux/arm64 (64 bits). No se soporta ARM de 32 bits (armv7/Raspberry Pi 3 o anterior).
  • Docker Engine y Docker Compose (para despliegue en contenedor).
  • Para instalación nativa en Windows: Windows 10/11 x64 (instalador .exe desde v1.5.0).
  • Para Proxmox LXC: host Proxmox VE con plantilla Debian disponible.
  • Credenciales de API de IGDB (obligatorias para metadatos y descubrimiento).
  • Opcional: API de NexusMods para mods tendencia, API de Steam para logros, credenciales de indexadores (Prowlarr, G4U.to) y clientes de descarga (qBittorrent, Transmission, Sabnzbd, etc.).
  • Volumen persistente para /app/data (base de datos SQLite, configuración, claves de cifrado).
  • Opcional: montaje de carpeta de descargas/biblioteca en /data para movimientos atómicos y importaciones.

Instalación con Docker Compose

Docker Compose (recomendado)

Clona el repositorio o crea un archivo docker-compose.yml basado en el del proyecto. El contenedor expone el puerto 5000 (HTTP) y 9898 (HTTPS opcional). Persiste el volumen ./data:/app/data para conservar la base de datos SQLite y la configuración. Las variables de entorno principales son PORT, SQLITE_DB_PATH, QUESTARR_BASE_PATH (para subdirectorio detrás de proxy inverso) y TRUST_PROXY=1 si se usa proxy inverso.

services:
app:
image: ghcr.io/doezer/questarr:latest
ports:
– "${HOST_SIDE_PORT:-5000}:${CONTAINER_INTERNAL_SIDE_PORT:-5000}"
– "${SSL_PORT:-9898}:${SSL_PORT:-9898}"
environment:
– PORT=${CONTAINER_INTERNAL_SIDE_PORT:-5000}
# – SQLITE_DB_PATH=/app/data/sqlite.db
# – QUESTARR_BASE_PATH=/Questarr
# – TRUST_PROXY=1
volumes:
– ./data:/app/data
# – /mnt/user/data:/data
restart: unless-stopped
healthcheck:
test:
[
"CMD",
"node",
"-e",
"require('http').get('http://localhost:' + (process.env.PORT || 5000) + '/api/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

Despliegue rápido (one-liner)

Ejecuta un contenedor efímero con SQLite y puerto 5000. Útil para pruebas rápidas.

docker run -d -p 5000:5000 -v ./data:/app/data –name questarr ghcr.io/doezer/questarr:latest

PostgreSQL opcional

Usa el archivo docker-compose.postgres.yml incluido en el repositorio. Requiere definir POSTGRES_PASSWORD (cadena hex de 32 bytes, p. ej. openssl rand -hex 32). La migración desde SQLite existente requiere el script scripts/sqlite-to-pg.ts (ver docs/DATABASE.md).

POSTGRES_PASSWORD=$(openssl rand -hex 32) docker compose -f docker-compose.postgres.yml up -d

Instalador nativo de Windows

Descarga QuestarrSetup-<version>-windows-x64.exe desde GitHub Releases (v1.5.0 o superior). El instalador incluye Node.js, registra Questarr como servicio de Windows (Questarr.Service.exe) y lo inicia automáticamente. Accede a http://localhost:5000 tras la instalación.

Proxmox VE (LXC)

Ejecuta el script de instalación en el host Proxmox como root. Crea un contenedor LXC no privilegiado, compila Questarr desde el código fuente y lo configura como servicio systemd. Actualizaciones posteriores con pct exec <ctid> — update.

bash -c "$(curl –fail –silent –show-error –location –proto '=https' –proto-redir '=https' https://raw.githubusercontent.com/Doezer/Questarr/main/scripts/proxmox/questarr-lxc.sh)"

Unraid (Community Applications)

Busca Questarr en la pestaña Apps, instala y configura Data Path, PUID/PGID, puertos (5000 HTTP, 9898 HTTPS) y opcionalmente Library Path montado en /data para importaciones automáticas. Añade mapeo de rutas en Ajustes → Path Mappings.

CasaOS (Custom Install)

En App Store → Custom Install, importa la URL https://raw.githubusercontent.com/Doezer/Questarr/main/casaos/docker-compose.yml. Revisa los montajes (/DATA/AppData/questarr para datos, /DATA/Downloads en /data para importaciones) y añade Path Mapping correspondiente.

Umbrel (Community App Store)

En umbrelOS, añade el repositorio https://github.com/Doezer/Questarr en Community App Stores, instala Questarr (app ID doezer-questarr) y accede desde el dashboard en http://umbrel.local:5000.

Cosmos Cloud (ServApp)

En Market Place → Custom Install, pega https://raw.githubusercontent.com/Doezer/Questarr/main/cosmos/questarr.cosmos-compose.json. Rellena carpeta de datos, carpeta de biblioteca opcional (montada en /data) y PUID/PGID. Cosmos gestiona la ruta questarr.<tu-host> y HTTPS.

Kubernetes (Helm)

Clona el repositorio e instala el gráfico Helm desde charts/questarr. El gráfico usa un volumen ReadWriteOnce para SQLite y no escala a más de una réplica. Expone el servicio en el puerto 5000.

git clone https://github.com/Doezer/Questarr.git
cd Questarr
helm install questarr charts/questarr –namespace questarr –create-namespace
kubectl port-forward -n questarr svc/questarr 5000:5000

Home Assistant Add-on

En Home Assistant → Ajustes → Add-ons → Add-on Store → Repositorios, añade https://github.com/Doezer/Questarr. Instala el add-on Questarr, inícialo y accede en http://<host-ha>:5000. Solo arquitectura amd64.

Acceder al proyecto

Interfaz web

Accede a la interfaz en http://<host>:5000 (o el puerto configurado en HOST_SIDE_PORT). Si usas QUESTARR_BASE_PATH=/Questarr detrás de proxy inverso, la URL será https://<dominio>/Questarr.

Primer acceso

Al abrir la UI por primera vez, se solicita crear la cuenta de administrador y configurar las credenciales de la API de IGDB (Client ID y Client Secret de Twitch Developer Console).

Configuración inicial

Tras el login, configura indexadores (Torznab/Newznab desde Prowlarr o G4U.to), añade clientes de descarga (qBittorrent, Transmission, Sabnzbd, etc.) y empieza a añadir juegos a la biblioteca o lista de deseos.

Casos de uso

  • Gestión centralizada de la biblioteca de videojuegos con estados (jugando, completado, aparcado, deseado) y diario de partidas.
  • Descubrimiento automático de nuevos lanzamientos y ofertas mediante IGDB, RSS, xREL.to y sincronización de la wishlist de Steam.
  • Automatización de descargas: búsqueda en indexadores Torznab/Newznab/G4U.to, envío a cliente de descarga (torrent/Usenet) e importación posterior a la biblioteca con preservación de archivos no relacionados.
  • Seguimiento de mods tendencia vía NexusMods y enlaces a guías de PCGamingWiki.
  • Notificaciones en tiempo real (in-app, Apprise) de nuevos lanzamientos, descargas completadas o actualizaciones de juegos aparcados/completados.
  • Estadísticas visuales de la colección con opción de compartir en Discord.
  • Integración con Playnite para sincronizar biblioteca y solicitar descargas desde el sofá.
  • Despliegue en entornos homelab (Unraid, CasaOS, Umbrel, Proxmox, Kubernetes, Home Assistant) con una sola imagen multi-arquitectura.

Configuración avanzada

Proxy inverso y subdirectorio

Para servir Questarr bajo una ruta (p. ej. https://dominio.com/Questarr), define QUESTARR_BASE_PATH=/Questarr en el contenedor o en .env y configura el proxy inverso (nginx, Traefik, Caddy) para reenviar las peticiones a esa ruta. Además, establece TRUST_PROXY=1 (o el número de hops/subredes) para que los límites de tasa vean la IP real del cliente y las cookies mantengan la bandera Secure en HTTPS. Ver docs/REVERSE_PROXY.md para ejemplos completos.

environment:
– QUESTARR_BASE_PATH=/Questarr
– TRUST_PROXY=1

PostgreSQL como backend

Define DB_DIALECT=postgres y DATABASE_URL=postgres://usuario:password@host:5432/questarr. El pool de conexiones se ajusta con DATABASE_POOL_MAX (por defecto 10). La migración desde SQLite requiere el script scripts/sqlite-to-pg.ts (ver docs/DATABASE.md).

environment:
– DB_DIALECT=postgres
– DATABASE_URL=postgres://questarr:password@db:5432/questarr
– DATABASE_POOL_MAX=10

Cifrado de credenciales en reposo

Define CREDENTIALS_ENCRYPTION_KEY con una cadena hex de 64 caracteres (32 bytes) generada con openssl rand -hex 32. Si no se define, se genera una clave aleatoria y se almacena en la base de datos. Esta clave cifra claves API de indexadores, usuarios y contraseñas de clientes de descarga.

environment:
– CREDENTIALS_ENCRYPTION_KEY=clave_hex_64_caracteres

Clave JWT persistente

Define JWT_SECRET con una cadena aleatoria larga para mantener las sesiones válidas tras reinicios del contenedor. Si no se define, se genera una aleatoria y se guarda en la base de datos.

environment:
– JWT_SECRET=secreto_largo_aleatorio

Montaje de biblioteca de descargas para movimientos atómicos

Monta la carpeta raíz donde tus clientes de descarga escriben los archivos completados en /data dentro del contenedor. Luego, en Ajustes → Path Mappings, añade una entrada con Local Path /data y Remote Path igual a la ruta que reporta el cliente de descarga para esa raíz. Esto permite a Questarr mover/copiar archivos atómicamente tras la descarga.

volumes:
– /mnt/user/data:/data

Actualización de la imagen Docker

Para actualizar manteniendo los datos: detén el contenedor, elimínalo, descarga la imagen más reciente y vuelve a arrancar con el mismo volumen de datos. En Docker Compose: docker compose pull && docker compose up -d. En instalación desde código fuente: git pull && docker compose down && docker compose build –no-cache && docker compose up -d.

docker compose pull && docker compose up -d

Gestión y mantenimiento

Copias de seguridad

Realiza copias de seguridad periódicas del volumen /app/data (contiene base de datos SQLite, configuración, claves de cifrado y JWT). Si usas PostgreSQL, haz dump de la base de datos además del volumen de datos de la aplicación.

docker run –rm -v questarr_data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/questarr-$(date +%F).tar.gz -C /data .

Logs y diagnóstico

Los logs de la aplicación están disponibles en la UI (página Logs) con botón Enviar logs para facilitar la depuración. En Docker, consulta logs con docker logs questarr o docker compose logs -f app.

docker compose logs -f app

Restablecimiento de contraseña de administrador

Si se pierde el acceso, el proyecto provee un script npm run reset-password que permite restablecer la contraseña del usuario admin. En Docker, ejecuta el script dentro del contenedor o monta el volumen y ejecuta localmente con el mismo entorno.

docker exec -it questarr npm run reset-password

Migración de SQLite a PostgreSQL

Usa el script scripts/sqlite-to-pg.ts (requiere Node.js y dependencias del proyecto) para migrar una instalación existente de SQLite a PostgreSQL. Ver docs/DATABASE.md para el procedimiento completo.

npx tsx scripts/sqlite-to-pg.ts

Actualización de dependencias del sistema (contenedor)

La imagen Docker se basa en Node 26 Alpine y actualiza paquetes del sistema (apk upgrade) en cada build. Para aplicar parches de seguridad del SO base, reconstruye la imagen o actualiza a la etiqueta latest de ghcr.io/doezer/questarr.

docker compose build –no-cache && docker compose up -d

Stack técnico

  • TypeScript
  • React 19
  • Vite 8
  • Tailwind CSS 4
  • Node.js 22.19+
  • SQLite (better-sqlite3)
  • PostgreSQL (opcional, pg)
  • Drizzle ORM
  • Express.js
  • Socket.io
  • Radix UI / shadcn/ui
  • TanStack Query
  • Zod
  • Apprise (Python) para notificaciones
  • 7zip, unrar (RARLAB) para extracción de archivos
  • IGDB API (metadatos de juegos)
  • Torznab / Newznab (protocolos de indexadores)
  • xREL.to, NexusMods, PCGamingWiki, Steam Web API

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *