Automatiza tu propio servidor de Miniflux con Ansible: Noticias RSS bajo control
¿Te atrae la idea de tener tu propio agregador de noticias sin depender de servicios externos? Hoy te traigo un playbook completo para instalar y configurar Miniflux, uno de los lectores RSS self-hosted favoritos de la comunidad, con base de datos PostgreSQL, todo listo en pocos minutos gracias a Ansible.
¿Por qué Miniflux y por qué Ansible?
- Miniflux es minimalista y ligero, perfecto para consumir tus feeds de forma privada y sin publicidad.
- Ansible te libera de instalaciones manuales y garantiza que, si mañana cambias de servidor, tendrás tu entorno listo en minutos, automatizando también los upgrades o restauraciones si algo falla.
- El playbook permite tener base de datos segura, usuario dedicado y un sistema de servicio para Miniflux, es decir, lo deja listo para producción.
Playbook completo: miniflux-rss.yml
Guarda este playbook como miniflux-rss.yml. Cubre todo el ciclo: instala dependencias, configura PostgreSQL, descarga Miniflux y ajusta el servicio.
---
- hosts: miniflux_servers
become: yes
vars:
miniflux_version: "2.1.3" # Cambia por la última estable
miniflux_user: "miniflux"
miniflux_db: "miniflux"
miniflux_db_user: "miniflux"
miniflux_db_password: "superseguro123" # Cambia esto por una contraseña robusta
miniflux_port: 8080
miniflux_url: "https://github.com/miniflux/v2/releases/download/v{{ miniflux_version }}/miniflux-linux-amd64"
tasks:
- name: Instalar dependencias
apt:
name:
- postgresql
- postgresql-contrib
- wget
update_cache: yes
- name: Crear usuario de sistema para Miniflux
user:
name: "{{ miniflux_user }}"
system: yes
shell: /usr/sbin/nologin
- name: Asegurar base de datos y usuario en PostgreSQL
become_user: postgres
postgresql_db:
name: "{{ miniflux_db }}"
state: present
postgresql_user:
name: "{{ miniflux_db_user }}"
password: "{{ miniflux_db_password }}"
db: "{{ miniflux_db }}"
priv: "ALL"
role_attr_flags: "LOGIN"
state: present
- name: Descargar binario de Miniflux
get_url:
url: "{{ miniflux_url }}"
dest: /usr/local/bin/miniflux
mode: '0755'
notify: Restart miniflux
- name: Crear directorio de configuración
file:
path: /etc/miniflux
state: directory
owner: "{{ miniflux_user }}"
mode: "0750"
- name: Crear archivo de configuración .env para Miniflux
copy:
dest: /etc/miniflux/.env
owner: "{{ miniflux_user }}"
mode: "0640"
content: |
DATABASE_URL=postgres://{{ miniflux_db_user }}:{{ miniflux_db_password }}@localhost/{{ miniflux_db }}?sslmode=disable
LISTEN_ADDR=0.0.0.0:{{ miniflux_port }}
RUN_MIGRATIONS=1
- name: Crear systemd service para Miniflux
copy:
dest: /etc/systemd/system/miniflux.service
mode: "0644"
content: |
[Unit]
Description=Miniflux RSS Service
After=network.target postgresql.service
[Service]
User={{ miniflux_user }}
Group={{ miniflux_user }}
EnvironmentFile=/etc/miniflux/.env
ExecStart=/usr/local/bin/miniflux
Restart=always
[Install]
WantedBy=multi-user.target
notify: Reload systemd
- name: Habilitar e iniciar servicio Miniflux
systemd:
name: miniflux.service
state: started
enabled: yes
handlers:
- name: Reload systemd
command: systemctl daemon-reload
- name: Restart miniflux
systemd:
name: miniflux.service
state: restarted
Paso final: acceso y primer login
- Una vez finalice el playbook, abre http://<tu-servidor>:8080 en tu navegador.
-
Ejecuta en el servidor:
sudo -u miniflux /usr/local/bin/miniflux create-adminy sigue las instrucciones para crear tu usuario administrador.
Consejos extra y troubleshooting
-
¿Problemas de conexión a PostgreSQL? Revisa el archivo de logs de Miniflux
journalctl -u miniflux.service -f. - Si quieres exponerlo públicamente, pon un proxy inverso (Nginx, Caddy o Traefik) delante y usa HTTPS.
- Cambia las contraseñas y usuarios de la base de datos por valores únicos y robustos para máxima seguridad.
- Actualiza la versión del binario desde GitHub para mantenerte seguro.
¿Te ha gustado el artículo? ¡Proponme el próximo servicio que quieras automatizar y lo convierto en playbook!
