Cómo instalar Nextcloud con Nginx en Ubuntu 20.04

Cómo instalar Nextcloud con Nginx en Ubuntu 20.04

Algunas personas y empresas desean tener pleno control sobre sus archivos personales o corporativos. Por ese motivo, se inclinan a otras alternativas distintas de las tradicionales (como Google Drive o Dropbox) para sus necesidades de almacenamiento. En esta guía aprenderás cómo instalar Nextcloud con Nginx en Ubuntu 20.04 para poner en funcionamiento tu propia solución de cloud storage. Además de todas las utilidades propias a una herramienta de este tipo, Nextcloud cuenta con las siguientes ventajas:

  • Es open source (a diferencia de ownCloud, que cuenta con una licencia propietaria)
  • Incorpora un complemento nativo para Outlook
  • Incluye chat de texto, audio, y video integrado
  • Provee listas de control de acceso y la posibilidad de crear grupos de trabajo

Requisitos previos

Paso 1: Descarga e instalación de Nextcloud

En primer lugar, dirígete al sitio de descargas de Nextcloud para obtener la última versión disponible. Por conveniencia, elige el archivo .tar.bz2 en la lista disponible:

Copia el link del archivo para descargarlo con wget y asegúrate de que el directorio donde se alojará la aplicación esté disponible. De no estarlo, puedes crearlo con el siguiente comando:

sudo mkdir /var/www/cloudme.fun

Aunque utilizaremos el directorio cloudme.fun para alojar la aplicación, tú puedes colocarle el nombre que desees. Sin embargo, es recomendable usar el nombre de dominio asociado a la aplicación para evitar confusiones.

Ahora es el turno de descargar el archivo de Nextcloud, descomprimirlo en /var/www/cloudme.fun/ y asignar al usuario www-data como propietario del directorio:

wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar xjf latest.tar.bz2 -C /var/www/cloudme.fun/
sudo chown -R www-data:www-data /var/www/cloudme.fun/

El primer comando de arriba creó un directorio llamado nextcloud dentro de /var/www/cloudme.fun. A continuación lo agregaremos como la raíz de nuestro subdominio.

Paso 2: Configuración de Nginx

En este ejemplo, vamos a crear un bloque de servidor para el subdominio next.cloudme.fun. Para ello vamos a crear y editar el archivo /etc/nginx/conf.d/next.cloudme.fun.conf.

sudo touch /etc/nginx/conf.d/next.cloudme.fun.conf
sudo nano /etc/nginx/conf.d/next.cloudme.fun.conf

Luego copia las siguientes líneas en el archivo y guárdalo.


server {
    listen 80;
    listen [::]:80;
    root /var/www/cloudme.fun/nextcloud;
    index  index.php index.html index.htm;
    server_name  next.cloudme.fun;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
         fastcgi_intercept_errors on;
         fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri $uri/ =404;
        index index.php;
    }

    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }

}

Después de guardar el archivo, revisa la configuración y reinicia el servicio:

sudo nginx -t && sudo nginx -s reload

En caso de que el comando anterior arroje algún error, utiliza la información provista el mensaje para corregir cualquier problema antes de continuar.

Paso 3: Creación de una base de datos para Nextcloud

Para comenzar, crea una base de datos para Nextcloud y la cuenta que usará la solución internamente:

sudo mysql 

En el siguiente comando reemplaza N3xtAdmin! por la contraseña que hayas elegido:

CREATE DATABASE nextcloud;
CREATE USER 'nextcloudadmin'@'localhost' IDENTIFIED BY 'N3xtAdmin!';

No olvides darle los accesos necesarios al usuario:

GRANT ALL ON nextcloud.* TO 'nextcloudadmin'@'localhost';

Ahora escribe \q o exit y presiona Enter para volver a la línea de comandos de Linux y continuar con el siguiente paso.

Paso 4: Asegurar el subdominio con Let’s Encrypt

Aprovechando que Let’s Encrypt permite generar un certificado SSL/TLS de forma gratuita, es importante que lo utilices para encriptar el tráfico desde y hacia el servidor. Esto aumentará el nivel de confianza de quien use tu herramienta. La gestión de los certificados se realiza a través de una utilidad llamada certbot que puedes instalar de la siguiente manera:

sudo apt install certbot python3-certbot-nginx -y

A continuación, genera el certificado:

sudo certbot --nginx -d next.cloudme.fun

Si ya dispones de un certificado para el dominio, puedes emplear la opción --expand en el comando de arriba para añadir el subdominio.

A esta altura, el archivo de configuración /etc/nginx/conf.d/next.cloudme.fun.conf habrá sido actualizado con los datos del certificado. Para completar este paso, reinicia Nginx.

sudo systemctl restart nginx

Paso 5: Instalación de los módulos de PHP

Nextcloud requiere de una serie de módulos de PHP para funcionar:

sudo apt install php-imagick php7.4-common php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip

En este punto el subdominio debería encontrarse funcionando:

En esta misma pantalla ingresarás los datos de tu instancia de Nextcloud a continuación.

Paso 6: Ingreso de datos de configuración

Una vez que la herramienta está instalada, escribe los datos de configuración:

  • Generación de las credenciales de una cuenta de administrador. En este ejemplo hemos elegido nubeadmin como usuario pero tú puedes escoger otro de tu preferencia. En cuanto a la contraseña, te recomendamos elegir una que incluya minúsculas, mayúsculas, caracteres especiales y números:
Creando una cuenta admin en Nextcloud
  • Elección de un directorio para almacenar archivos. Si deseas, puedes cambiar la ubicación por defecto (/var/www/cloudme.fun/nextcloud/data) o mantenerla:
  • Conexión a la base de datos usando las credenciales que generaste en el paso 3. En el caso del puerto, ingresa 3306 por MySQL:
Conectando Nextcloud a base de datos MySQL

Si lo deseas, instala las aplicaciones adicionales para aprovechar las características que mencionamos en la introducción. Haz clic en Finish setup para finalizar.

Final instalación Nextcloud en Ubuntu

A continuación, verás el panel de control de aplicaciones para comenzar a utilizar Nextcloud:

Dashboard de Nextcloud instalado en Ubuntu 20.04

¡Bien hecho! Nextcloud ya está haciendo funcionar tu nube privada.

Conclusión

En esta guía aprendiste a instalar Nextcloud con Nginx en Ubuntu 20.04. A partir de este momento puedes almacenar y controlar tus archivos de forma segura. Si por algún motivo llegas a olvidar la contraseña de administrador, puedes generarla nuevamente desde la línea de comandos de Linux siguiendo las instrucciones de la documentación oficial.

¿Te resultó útil esta guía?

Imagen por defecto
Gabriel Cánepa
Gabriel trabaja actualmente como desarrollador full-stack en Scalar, una firma que se dedica a hacer valuaciones de empresas. Es Administrador de Sistemas certificado por la Fundación Linux y previamente ha escrito un gran número de artículos y contenidos técnicos sobre el tema para: DigitalOcean, Linode, Carrera Linux Argentina y Tecmint. Tiene una certificación en programación de la Universidad de Brigham Young-Idaho, y está completando las carreras de programador y analista de sistemas en la Universidad Nacional de Villa Mercedes (UNViMe). En su tiempo libre, Gabriel disfruta leyendo libros de Stephen R. Covey, tocando piano y guitarra, y enseñando conocimientos de programación a su dos hijas.