Cómo instalar WyrmRSS en Docker - Lector RSS autohospedado

WyrmRSS | RSS | Rust | PostgreSQL | Docker | Self-hosted | GPL-3.0

WyrmRSS en Docker: lector RSS autohospedado con PostgreSQL, carpetas y soporte para YouTube

WyrmRSS es un lector de feeds RSS escrito en Rust, con backend y frontend separados y base de datos PostgreSQL. Puedes suscribirte a cualquier feed, ver vídeos de YouTube sin salir del lector y organizar los canales en carpetas. Lo desplegamos con Docker Compose en tu servidor.

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar WyrmRSS en Docker en el canal GENBYTE:

¿Qué es WyrmRSS?

WyrmRSS es un lector de feeds RSS autohospedado. Según su README, es un proyecto escrito en Rust, con licencia GPL-3.0. Se compone de un servidor, una interfaz web y una base de datos PostgreSQL, que la guía oficial incluye en el mismo compose.

Para homelabs: si ya sigues feeds por email o en varias apps, WyrmRSS te permite tenerlos todos en tu propio servidor, con importación y exportación OPML para no empezar de cero.

Características principales

Canales de YouTube

Suscríbete a un canal y mira los vídeos en el propio lector, sin salir de él.

Carpetas

Agrupa los feeds en secciones plegables de la barra lateral, con contador de no leídos.

OPML

Importa y exporta tus suscripciones, con las carpetas incluidas.

Marcado de lectura

Elige si los artículos se marcan al abrirlos, manualmente o nunca, con retraso opcional.

Limpieza automática

Borra los artículos leídos o no leídos después de los días que configures. Los guardados para leer más tarde se conservan.

API protegible

Con WYRM_API_KEY limitas el acceso a la API; sin esa variable, la API queda abierta.

Requisitos del sistema

  • Docker y docker-compose, como indica la guía de instalación oficial
  • Puertos libres: 3000 para la interfaz web y 3001 para el servidor
  • Un volumen de PostgreSQL para los datos, incluido en el compose oficial

Instalación con Docker Compose

Paso 1: crea el fichero .env

# Contraseña de PostgreSQL. El compose oficial trae "wyrm" como valor por defecto; cámbialo POSTGRES_PASSWORD=cambia-esta-contrasena # Clave de la API. Opcional, pero recomendable si el puerto es accesible desde fuera # WYRM_API_KEY=una-clave-larga-y-aleatoria
Importante: el compose oficial usa wyrm como usuario y contraseña de la base de datos. Antes de arrancar, cambia la contraseña por una propia. Lo que está en el ejemplo es público.

Paso 2: crea el compose.yml

services: wyrm-db: image: postgres:18 container_name: wyrm-db environment: POSTGRES_USER: wyrm POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: wyrm volumes: - wyrm_data:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U wyrm -d wyrm -h 127.0.0.1"] interval: 5s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped wyrm-server: image: ghcr.io/kryoseu/wyrm-server:latest container_name: wyrm-rss environment: # Todas las variables son opcionales; estos son los valores por defecto WYRM_PORT: 3001 WYRM_DATABASE_CONNECTION: "postgres://wyrm:${POSTGRES_PASSWORD}@wyrm-db/wyrm" WYRM_DATABASE_POOL_SIZE: 30 # WYRM_API_KEY: "${WYRM_API_KEY}" ports: - "3001:3001" healthcheck: test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/127.0.0.1/3001"] interval: 5s timeout: 5s retries: 10 volumes: # Carpeta con el fichero de configuración wyrm.toml opcional - ./config:/app/config depends_on: wyrm-db: condition: service_healthy restart: unless-stopped wyrm-ui: image: ghcr.io/kryoseu/wyrm-ui:latest container_name: wyrm-ui environment: WYRM_WEB_PORT: 3000 WYRM_BACKEND_URL: "http://wyrm-server:3001" # WYRM_API_KEY: "${WYRM_API_KEY}" # debe coincidir con la del servidor ports: - "3000:3000" depends_on: wyrm-server: condition: service_healthy restart: unless-stopped volumes: wyrm_data:
Sobre los volúmenes: la base de datos usa un volumen Docker porque así lo hace el compose oficial. La configuración del servidor sí va en una carpeta del host (./config), como prefieres en el blog.

Paso 3: arranca

docker compose up -d # Revisa los logs si algún servicio no pasa el healthcheck docker compose logs -f wyrm-server

Paso 4: entra en la interfaz

Abre http://localhost:3000. Si configuraste WYRM_API_KEY, la interfaz te pedirá la clave al entrar.

Acceder a WyrmRSS

Interfaz web: http://localhost:3000 o http://IP_DEL_SERVIDOR:3000
API: http://IP_DEL_SERVIDOR:3001

Primeros pasos

  1. Importa tus suscripciones desde un fichero OPML, si ya tienes uno.
  2. Crea carpetas para agrupar los feeds por tema.
  3. Ajusta el intervalo de sondeo y los días de limpieza desde la página de ajustes.
  4. Haz una copia de seguridad del volumen de PostgreSQL y de la carpeta config.

Casos de uso

  • Noticias y blogs: todos los feeds en un lector que no depende de terceros.
  • Canales de YouTube: seguir vídeos sin cuenta ni anuncios de la plataforma.
  • Lectura para más tarde: guardar artículos y limpiar lo leído automáticamente.

Configuración avanzada

Fichero wyrm.toml

Puedes poner los ajustes de arranque en config/wyrm.toml en lugar de variables de entorno. Las variables tienen prioridad sobre el fichero, según el README.

Ajustes en tiempo de ejecución

Algunos valores se guardan en la base de datos y se cambian desde la página de ajustes sin reiniciar el servidor: tamaño de página, intervalo de sondeo (por defecto 900 segundos), timeouts, reintentos y la política de marcado de lectura.

Atención: la opción de borrar posts leídos o no leídos después de X días es irreversible. Actívala solo cuando sepas que la copia de seguridad está en orden.

Gestión y mantenimiento

Ver estado

docker compose ps

Ver logs

docker compose logs -f wyrm-server

Actualizar

docker compose pull docker compose up -d

Detener WyrmRSS

docker compose down

Stack técnico

  • Servidor: Rust, compilado en la imagen wyrm-server sobre Debian bookworm-slim
  • Interfaz: imagen wyrm-ui, con variables WYRM_WEB_PORT y WYRM_BACKEND_URL
  • Base de datos: PostgreSQL 18
  • Usuario en el contenedor: el servidor no corre como root, sino como el usuario wyrm
  • Licencia: GNU GPL v3

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Solución al Error "No se encontró la imagen de Windows RE" en Windows 10 al ejecutar reagentc /enable