Tropic Host

FreshRSS: qué es y cómo instalarlo en un VPS

7 min de lectura
Tropic
FreshRSS: qué es y cómo instalarlo en un VPS

FreshRSS: tu propio feed de noticias sin algoritmos

Las redes sociales deciden qué publicaciones mostrar primero. Por eso, una actualización importante de un proyecto puede pasar desapercibida mientras en su lugar aparecen decenas de recomendaciones. FreshRSS funciona de otra manera: tú eliges las fuentes y los nuevos contenidos aparecen en un único feed cronológico.

FreshRSS puede instalarse en tu propio servidor y utilizarse como una bandeja de entrada unificada para blogs, noticias, actualizaciones de software, foros, pódcast y otras fuentes con RSS o Atom. En este artículo veremos las funciones de la aplicación, los requisitos del servidor y cómo instalarla en un VPS mediante Docker con HTTPS.

FreshRSS en cinco pasos

  1. Crear un VPS con Linux y apuntar hacia él un subdominio, por ejemplo rss.example.com.
  2. Instalar Docker y Docker Compose.
  3. Ejecutar FreshRSS junto con Caddy para disponer de HTTPS automático.
  4. Abrir el subdominio, elegir SQLite y crear una cuenta.
  5. Importar las suscripciones desde OPML o añadir los sitios manualmente.

Después de esto, el VPS comprobará las fuentes de forma automática según el horario establecido, incluso cuando el ordenador del usuario esté apagado.

Qué es FreshRSS

FreshRSS es un agregador gratuito y autoalojado de RSS y Atom. Autoalojado significa que la aplicación y la base de datos se ejecutan en un servidor que tú controlas, y no en la infraestructura de un servicio en la nube.

Un feed RSS es un archivo especial que un sitio web actualiza cuando publica contenido nuevo. FreshRSS recupera periódicamente estos archivos de las fuentes seleccionadas y reúne sus entradas en una sola interfaz. Los artículos no leídos, los favoritos y el historial de lectura se sincronizan entre dispositivos.

La idea principal es sencilla: el usuario decide a quién seguir y en qué orden consultar las publicaciones. FreshRSS no ordena las entradas según su nivel de interacción ni inserta contenido recomendado entre las suscripciones.

Funciones de FreshRSS

FunciónPara qué sirve
Categorías, estados y favoritosSeparar fuentes de trabajo, técnicas y personales
Búsqueda, filtros y consultas guardadasMostrar únicamente publicaciones sobre el tema necesario
Importación y exportación de OPMLTransferir rápidamente una lista de suscripciones
Google Reader API y Fever APIConectar aplicaciones compatibles en el teléfono y el ordenador
WebSubRecibir entradas inmediatamente después de su publicación desde fuentes compatibles
Varios usuariosCrear cuentas separadas para una familia o un equipo
Temas y extensionesCambiar la interfaz y añadir funciones
XPath y JSON FeedSuscribirse a algunas fuentes que no ofrecen RSS o Atom convencional

Una consulta guardada puede convertirse en un feed temático independiente, por ejemplo, solo con publicaciones sobre seguridad o actualizaciones de un producto concreto. El resultado puede abrirse dentro de FreshRSS o publicarse como HTML o RSS; las listas de feeds también pueden ofrecerse en formato OPML.

WebSub permite que un sitio compatible avise directamente a FreshRSS de una nueva entrada, sin esperar a la siguiente comprobación programada. Para ello, la instancia debe ser accesible desde Internet mediante una dirección pública válida.

FreshRSS resulta especialmente práctico para desarrolladores y administradores: permite reunir en un solo feed blogs de proyectos, lanzamientos, informes de incidentes y publicaciones de seguridad. Para la lectura cotidiana, sustituye decenas de pestañas abiertas y mantiene sincronizado el estado exacto de «leído» en todos los dispositivos.

Qué requisitos tiene FreshRSS

FreshRSS consume pocos recursos. Es compatible con SQLite, PostgreSQL, MariaDB y MySQL, mientras que una instalación manual requiere un servidor web y PHP 8.1 o una versión posterior. La descripción oficial incluso menciona una prueba realizada en una Raspberry Pi 1 con 150 feeds y 22 000 artículos.

Configuraciones iniciales prácticas:

EscenarioCPURAMAlmacenamientoBase de datos
Feed personal1 vCPU1 GBSSD de 10–20 GBSQLite
Familia o equipo pequeño1–2 vCPU2 GBSSD de 20–40 GBSQLite o base de datos externa
Muchos usuarios y un archivo grandeDesde 2 vCPUDesde 4 GBSSD desde 40 GBPostgreSQL o MariaDB

Son valores orientativos, no requisitos mínimos estrictos. El uso de disco depende del número de fuentes, la frecuencia de publicación y el tiempo durante el que se conserve el historial. Un VPS es más práctico que un ordenador doméstico cuando se necesitan actualizaciones continuas, acceso desde el exterior, sincronización móvil y WebSub.

Cómo instalar FreshRSS en un VPS mediante Docker

En la configuración siguiente, FreshRSS funciona detrás de Caddy. Caddy recibe las solicitudes externas y obtiene automáticamente un certificado TLS.

Necesitarás un VPS con Linux, Docker instalado con el comando docker compose, un subdominio con un registro A que apunte a la dirección IP del servidor y los puertos 80 y 443 abiertos.

Paso 1. Crea un directorio

sudo mkdir -p /opt/freshrss
sudo chown "$USER":"$USER" /opt/freshrss
cd /opt/freshrss

Paso 2. Crea compose.yaml

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    logging:
      options:
        max-size: 10m
    environment:
      TZ: Etc/UTC
      CRON_MIN: '3,33'
      FRESHRSS_ENV: production
      TRUSTED_PROXY: 172.16.0.0/12
    volumes:
      - freshrss_data:/var/www/FreshRSS/data
      - freshrss_extensions:/var/www/FreshRSS/extensions

  caddy:
    image: caddy:2
    container_name: freshrss-caddy
    restart: unless-stopped
    depends_on:
      - freshrss
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config

volumes:
  freshrss_data:
  freshrss_extensions:
  caddy_data:
  caddy_config:

CRON_MIN: '3,33' inicia la comprobación de los feeds en los minutos 3 y 33 de cada hora. FreshRSS no actualiza un mismo feed con una frecuencia superior a aproximadamente una vez cada 20 minutos, por lo que normalmente no hace falta ejecutar la tarea más a menudo.

Paso 3. Crea Caddyfile

rss.example.com {
    reverse_proxy freshrss:80
}

Sustituye el dominio por el tuyo. Cuando el registro DNS se haya propagado y los puertos estén accesibles, Caddy obtendrá y renovará el certificado automáticamente.

Paso 4. Inicia FreshRSS

docker compose up -d
docker compose ps

Puedes consultar los registros con el siguiente comando:

docker compose logs -f --tail=100

Abre https://rss.example.com. El asistente de instalación comprobará el entorno, te pedirá que elijas una base de datos y permitirá crear el primer usuario. Para un servidor personal, SQLite es la opción más sencilla porque no requiere un contenedor de base de datos independiente.

Configuración inicial

FreshRSS suele encontrar el feed RSS o Atom a partir de la dirección normal de un sitio web. Si la detección automática no funciona, introduce la URL directa del feed. Las suscripciones de Feedly, Inoreader y otros lectores pueden transferirse cómodamente mediante OPML.

Organiza desde el principio las fuentes en categorías, por ejemplo «imprescindible», «trabajo», «seguridad», «artículos largos» y «lectura secundaria». Los sitios de noticias que publican con mucha frecuencia no deberían desplazar del feed principal las actualizaciones realmente importantes.

Para conectar una aplicación, activa la API en la configuración de autenticación y establece una contraseña de API independiente en el perfil. La dirección de la Google Reader API tiene este aspecto:

https://rss.example.com/api/greader.php

Es mejor que la contraseña principal y la contraseña de la API no sean iguales.

Cómo no ahogarse entre artículos sin leer

FreshRSS resulta más útil después de una pequeña configuración:

  • deja en el feed principal únicamente las fuentes importantes;
  • utiliza filtros para marcar automáticamente como leídas las secciones innecesarias;
  • guarda consultas de búsqueda sobre productos, autores y temas;
  • revisa periódicamente las estadísticas y elimina las fuentes que solo generan ruido.

Las extensiones pueden añadir estimaciones del tiempo de lectura, resaltado de palabras, proxy de imágenes, inserción de YouTube, notificaciones mediante webhooks y clasificación de artículos a través de una API de LLM compatible. Instala complementos de terceros únicamente desde fuentes de confianza.

Actualizaciones, seguridad y copias de seguridad

Para actualizar los contenedores, ejecuta:

cd /opt/freshrss
docker compose pull
docker compose up -d

Crea una copia de seguridad antes de una actualización importante. El volumen freshrss_data contiene la configuración de los usuarios y, cuando se utiliza SQLite, la base de datos de artículos. Guarda también freshrss_extensions si utilizas complementos. PostgreSQL, MariaDB y MySQL requieren un volcado independiente de la base de datos.

Medidas mínimas de seguridad:

  • utiliza HTTPS;
  • desactiva el registro abierto después de crear las cuentas;
  • no habilites el acceso anónimo salvo que sea necesario;
  • utiliza una contraseña de API independiente;
  • actualiza FreshRSS y sus extensiones con regularidad;
  • conserva una copia de seguridad fuera del VPS.

Una exportación OPML no sustituye una copia de seguridad completa, pero permite restaurar rápidamente la lista de suscripciones en cualquier lector RSS compatible.

FreshRSS en un VPS de tropic.host

FreshRSS es una buena opción como primer servicio autoalojado: consume pocos recursos, se ejecuta en Docker y aporta una utilidad evidente inmediatamente después de importar las suscripciones. Un VPS público proporciona actualizaciones de feeds las 24 horas, acceso desde el teléfono y un funcionamiento correcto de WebSub.

Para una instalación personal suele bastar una configuración Linux pequeña. En tropic.host puedes asignar a FreshRSS un subdominio independiente, comenzar con un VPS básico y mantener el servicio separado del ordenador doméstico. Al elegir un plan, la estabilidad, el espacio para el archivo y las copias de seguridad son más importantes que disponer de una gran reserva de procesador.

Conclusión

FreshRSS convierte decenas de sitios web en un feed personal fácil de gestionar y sin clasificación algorítmica. Es compatible con clientes móviles, filtros, consultas guardadas, varios usuarios, WebSub y extensiones, y sigue siendo lo bastante ligero para un VPS pequeño.

Para empezar necesitas Docker, un dominio y SQLite. Después de la instalación, configura las categorías, las actualizaciones automáticas, HTTPS y las copias de seguridad. De este modo, FreshRSS mostrará únicamente las fuentes elegidas y mantendrá el control de la lectura en manos del usuario.

FAQ

¿FreshRSS es gratuito?

Sí. FreshRSS se distribuye bajo la licencia AGPL-3.0. Solo es necesario pagar por la infraestructura si la aplicación funciona en un VPS alquilado.

¿Se puede utilizar FreshRSS sin un dominio?

Sí, publicando el puerto del contenedor. Para un uso permanente, es preferible configurar un dominio y HTTPS: esto simplifica el acceso seguro, la sincronización móvil y WebSub.

¿Cuánta memoria RAM necesita FreshRSS?

Para un feed personal, es razonable empezar con 1 GB de RAM y SQLite. Un archivo grande, varios usuarios o servicios adicionales requerirán más memoria.

¿Se puede añadir un sitio sin RSS?

En algunos casos, sí. FreshRSS admite web scraping mediante XPath, pero las reglas deben configurarse manualmente. Si cambia el diseño del sitio, puede ser necesario corregir esa fuente.

¿Qué es imprescindible incluir en la copia de seguridad?

En primer lugar, el volumen freshrss_data: cuando se utiliza SQLite, contiene la base de datos de artículos. Guarda también freshrss_extensions y crea volcados de cualquier base de datos externa.