Nuestro propio servidor RSS con FreshRSS

Es una buena idea tener un solo lugar donde poder consultar nuestros enlaces y noticias favoritas vía RSS; siguiendo esa idea conocemos al producto FreshRSS, que nos permitirá leer y seguir las novedades en diferentes sitios web de noticias, sin la necesidad de navegar de un sitio web a otro.

Soy un seguidor de la web Debianhackers.net, es justo en esta web donde he conocido el producto, a raíz de una entrada hablando de él, escrita por Debish.

FreshRSS: un agregador y lector de RSS

Ya hemos indicado que con FreshRSS vamos a poder leer y seguir varios sitios web de noticias de un vistazo.

Veamos sus principales características:

  • RSS y agregación atómica.
  • Opción de marcar un enlace como favorito para leerlo más adelante.
  • Funcionalidades de búsqueda y filtro de ayuda.
  • Estadísticas para mostrarnos la frecuencia de publicación de todos los sitios web que seguimos.
  • Posibilidad de importar y exportar nuestros feeds a formato OPML
  • Disponibles de varios temas creados por la comunidad.
  • «Google Reader», como API para conectar aplicaciones de Android
  • Se trata de una aplicación “responsive”, por lo que se adapta a todo tipo de pantallas, incluido las pequeñas.
  • Auto alojado: el código es libre, ya que utiliza una licencia AGPL3, por lo que podemos alojar nuestra propia instancia, que es justo lo que haremos en esta entrada.
  • Multiusuario, por lo que podemos dar acceso a amigos, colegas y familiares.

Vamos al lío.

Instalación de FreshRSS en Ubuntu 18.04

Para instalar una instancia del producto en nuestra distribución favorita, esta debe cumplir con algunos requisitos.

Necesitamos un servidor web, ya sea Apache o Nginx, una base de datos, un lenguaje, que en este caso es PHP, y como no, una vez instalado, un navegador, véase Firefox.

Si no sabéis muy bien como instalar un servidor LAMP (también llamado LAMP stack), podéis consultar la entrada que escribí hace unos meses:

Instalar y configurar un servidor web LAMP en Ubuntu 18.04

En mi caso voy a instalar un servidor LEMP, esto es GNU/Linux, Nginx, MySQL (aunque yo usaré MariaDB) y PHP

Instalar servidor LEMP

Primero de todo actualizaremos e instalaremos el servidor web NGINX

  1. sudo apt update
  2. sudo apt install nginx

Una vez instalado el servidor web, pasamos al servidor de base de datos, que como he dicho será la última versión estable de MariaDB. En este parte utilizaremos la entrada que escribí hace sólo unas semanas al respecto:

Instalar MariaDB en Ubuntu 18.04

Una vez instalada debemos crear una base de datos y un usuario:

  1. sudo mysql -u root -p

Y ya dentro del gestor de la base de datos:

  1. #Creamos la base de datos
  2. CREATE DATABASE dbfreshdns;
  3. #Creamos un usuario y se lo asignamos
  4. GRANT USAGE ON dbfreshdns.* TO userfreshdns@localhost IDENTIFIED BY 'password';
  5. #Al usuario le damos todos los poderes sobre la base de datos
  6. GRANT ALL PRIVILEGES ON dbfreshdns.* TO userfreshdns@localhost ;

Pasamos a la última parte en este punto, que es instalar PHP, que actualmente en los repositorios de Ubuntu oficial, viene con la versión 7.2

  1. apt install php

Además, instalaremos módulos extras que la instalación va a requerir:

  1. sudo apt install php-curl php-xml
  2. sudo apt install php7.2-mbstring

Descarga de FreshRSS

Una vez instalado el servidor, debemos descargar el producto. En este punto tenemos dos opciones, la versión estable y la de desarrollo.  Yo me he decantando por la primera, ya que la versión de desarrollo es inestable y está únicamente pensada para las personas involucradas en el proyecto, aunque según indican en su web «Algunos dicen que los principales desarrolladores lo utilizan a diario sin ningún problema. Pueden saber lo que están haciendo

Podemos consultar los requisitos, la configuración de los «virtual hosts» y los ficheros de descarga en este enlace.

En la configuración recomendada nos indican que guardemos el proyecto en la ubicación «/srv/FreshRRS/p/» y es lo que haremos, por lo que creamos la carpeta, accedemos a ella y descargamos el producto:

  1. sudo mkdir /srv
  2. sudo mkdir /srv/FreshRSS
  3. sudo mkdir /srv/FreshRSS/p
  4. cd /srv/FreshRSS/p
  5. sudo wget https://github.com/FreshRSS/FreshRSS/zipball/master.zip

Descomprimimos el fichero:

  1. sudo apt install unzip
  2. sudo unzip master.zip
  3. sudo mv FreshRSS-master/* .

Vale, ya tenemos una cosa lista.

Ahora vamos a asignar permisos a la carpeta, para que Nginx puedo acceder sin problemas:

  1. sudo chown www-data:root /srv/FreshRSS -R
  2. sudo chmod 755 /srv/FreshRSS -R

Añadimos la configuración del Virtual Host

  1. sudo nano /etc/nginx/sites-available/rss.bitsandlinux.com

Con el siguiente contenido:

  1. server {
  2.     listen 80;
  3.     listen 443 ssl;
  4.  
  5.     # your server’s URL(s)
  6.     server_name rss.bitsandlinux.com;
  7.  
  8.     # the folder p of your FreshRSS installation
  9.     root /srv/FreshRSS/p/;
  10.  
  11.     index index.php index.html index.htm;
  12.  
  13.     # nginx log files
  14.     access_log /var/log/nginx/rss.access.log;
  15.     error_log /var/log/nginx/rss.error.log;
  16.  
  17.     # php files handling
  18.     # this regex is mandatory because of the API
  19.     location ~ ^.+?\.php(/.*)?$ {
  20.         fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
  21.         fastcgi_split_path_info ^(.+\.php)(/.*)$;
  22.         # By default, the variable PATH_INFO is not set under PHP-FPM
  23.         # But FreshRSS API greader.php need it. If you have a “Bad Request” error, double check this var!
  24.         fastcgi_param PATH_INFO $fastcgi_path_info;
  25.         include fastcgi_params;
  26.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  27.     }
  28.  
  29.     location / {
  30.         try_files $uri $uri/ index.php;
  31.     }
  32. }

La información de los certificados SSL no la añadimos, ya que más adelante configuraremos Let’s Encrypt.

Guardamos y añadimos el Virtual Host, mediante un enlace simbólico:

  1. sudo ln -s /etc/nginx/sites-available/rss.bitsandlinux.com /etc/nginx/sites-enabled

Reiniciamos NGINX

  1. sudo systemctl restart nginx

Instalar los certificados Let’s Encrypt

Veamos en pocos pasos la instalación de los certificados SSL con Let’s Encrypt. Lo primero habilitar el repositorio:

  1. sudo add-apt-repository ppa:certbot/certbot

Actualizamos e instalamos:

  1. sudo apt update
  2. sudo apt install python-certbot-nginx

Configuramos nuestro dominio. OJO aquí, el DNS ha de existir, así que antes de hacer este paso tenéis que añadir un registro A, en el caso de un subdominio, en el portal de vuestro proveedor.

  1. sudo certbot --nginx -d rss.bitsandlinux.com

Y con todo esto, la parte de la consola de comandos ha finalizado 🙂

Instalación web de FreshRSS

Nos vamos a nuestro navegador web y escribimos la dirección de nuestro servidor.

Instalación de FreshRRS vía web

Tras pasar las verificaciones, debemos añadir la configuración general:

Configuración general

Pasamos a la configuración de la base de datos:

Configuración de la base de datos

Si todo ha ido bien ya habremos acabado.

Cuando hayamos añadido algunos RSS, tendremos una vista similar a la siguiente:

FreshRSS una vez instalado tiene mucho que explicar en lo que respecta a su configuración y puesta a punto, pero eso, quizás, será en otro artículo.