Automatiza el despliegue de un servidor Nextcloud con Ansible

Automatiza el despliegue de un servidor Nextcloud con Ansible

Nivel: Intermedio/Avanzado

Hoy te traigo un playbook de Ansible que seguramente será de gran utilidad si buscas automatizar el despliegue de un servidor Nextcloud sobre Linux. Nextcloud es una de las soluciones más populares para implementaciones de nube privada, perfecta para almacenar archivos, calendario y datos colaborativos de forma segura.

El enfoque del playbook cubre desde la instalación de dependencias (Apache, PHP, MariaDB, utilidades), la configuración de la base de datos, hasta la descarga y la puesta en marcha de Nextcloud. Es ambicioso, pero te permitirá ahorrar horas de trabajo manual y asegurar entornos reproducibles. ¡Ideal para pruebas, laboratorios o el despliegue en producción!

Playbook YAML para desplegar Nextcloud

Este playbook está pensado para sistemas Ubuntu Server (20.04 en adelante) y realiza la siguiente magia:

  • Instala Apache, PHP y extensiones necesarias
  • Instala y configura MariaDB
  • Despliega Nextcloud desde la última versión estable
  • Configura la base de datos y permisos necesarios

---
- name: Despliegue de Nextcloud sobre Ubuntu
  hosts: nextcloud
  become: true
  vars:
    nextcloud_db: nextcloud
    nextcloud_db_user: nc_user
    nextcloud_db_password: "CambiaEstaClaveSegura123"
    nextcloud_admin: admin
    nextcloud_admin_password: "ClaveAdminSuperSecreta456"
    nextcloud_version: "27.1.2"
    web_root: /var/www/html
  tasks:
    - name: Actualizar cache de apt
      apt:
        update_cache: yes

    - name: Instalar dependencias necesarias
      apt:
        name:
          - apache2
          - mariadb-server
          - libapache2-mod-php
          - php
          - php-gd
          - php-json
          - php-mysql
          - php-curl
          - php-mbstring
          - php-intl
          - php-xml
          - php-zip
          - php-bz2
          - php-ldap
          - php-apcu
        state: present

    - name: Configurar MariaDB para Nextcloud
      mysql_db:
        name: "{{ nextcloud_db }}"
        state: present

    - name: Crear usuario MySQL para Nextcloud
      mysql_user:
        login_user: root
        login_password: ""
        name: "{{ nextcloud_db_user }}"
        password: "{{ nextcloud_db_password }}"
        priv: "{{ nextcloud_db }}.*:ALL"
        state: present

    - name: Descargar Nextcloud
      get_url:
        url: "https://download.nextcloud.com/server/releases/nextcloud-{{ nextcloud_version }}.zip"
        dest: "/tmp/nextcloud.zip"

    - name: Descomprimir Nextcloud
      unarchive:
        src: "/tmp/nextcloud.zip"
        dest: "{{ web_root }}"
        remote_src: yes
        creates: "{{ web_root }}/nextcloud"

    - name: Asignar permisos correctos al directorio Nextcloud
      file:
        path: "{{ web_root }}/nextcloud"
        owner: www-data
        group: www-data
        state: directory
        recurse: yes

    - name: Habilitar mod_rewrite de Apache
      apache2_module:
        name: rewrite
        state: present

    - name: Reiniciar Apache
      service:
        name: apache2
        state: restarted

    - name: Instalación silenciosa de Nextcloud vía occ
      shell: |
        sudo -u www-data php {{ web_root }}/nextcloud/occ maintenance:install \
         --database "mysql" \
         --database-name "{{ nextcloud_db }}" \
         --database-user "{{ nextcloud_db_user }}" \
         --database-pass "{{ nextcloud_db_password }}" \
         --admin-user "{{ nextcloud_admin }}" \
         --admin-pass "{{ nextcloud_admin_password }}"
      args:
        creates: "{{ web_root }}/nextcloud/config/config.php"
    

¡Recuerda! Ajusta los usuarios, contraseñas y versión de Nextcloud a los valores adecuados para tu entorno.

Consejos extra y troubleshooting

  • Comprueba que tu host DNS apunta correctamente hacia tu servidor Nextcloud al finalizar.
  • Si necesitas habilitar HTTPS, puedes extender el playbook con Let’s Encrypt usando el módulo community.crypto y el rol geerlingguy.certbot.
  • Verifica los logs de Apache (/var/log/apache2/error.log) si Nextcloud no carga correctamente tras la instalación.
  • Es recomendable ejecutar el playbook en una máquina virtual limpia para evitar conflictos con dependencias.
  • Utiliza ansible-vault para proteger contraseñas en producción.

¿Tienes ideas para más playbooks o quieres ver automatizaciones para otros servicios? ¡Déjame tu sugerencia en los comentarios!

Avatar

Por Mid