Automatiza tu propio servidor de Miniflux con Ansible: Noticias RSS bajo control

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-admin y 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!

Avatar

Por Mid