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
- Tener un servidor Ubuntu 20.04 con Nginx, PHP y MySQL instalados. En nuestra guía Cómo instalar un stack LEMP (Linux, Nginx, MySQL y PHP) en Ubuntu 20.04 puedes encontrar los pasos necesarios para cumplir con este punto.
- Registrar un dominio a tu nombre y, opcionalmente, crear un subdominio para apuntar a tu instancia de Nextcloud. En esta guía utilizaremos next.cloudme.fun con propósitos ilustrativos.
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:
- 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:
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.
A continuación, verás el panel de control de aplicaciones para comenzar a utilizar Nextcloud:
¡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.