Nextcloud con NGINX: requisitos, instalación y configuración
Ejecutar Nextcloud en un servidor NGINX permite un uso eficiente de los recursos del software en la nube y ofrece opciones de implementación flexibles. La instalación requiere tanto un entorno del sistema compatible como una configuración adec uada. Además, para integrar Nextcloud sin problemas en el entorno NGINX, es necesario realizar algunos ajustes específicos.
Nextcloud y NGINX: una combinación potente para tu nube
NGINX es un software de servidor web basado en el principio de código abierto, que también puede utilizarse como reverse proxy, load balancer (balanceador de carga) y caché HTTP. La aplicación la desarrolló en gran parte el programador ruso Igor Sysoev y se publicó con la licencia BSD (una variante de Unix).
NGINX está diseñado para gestionar una gran cantidad de conexiones simultáneamente. Para lograrlo, utiliza una arquitectura orientada a eventos y no bloqueante. A diferencia de los servidores web tradicionales, que crean unos hilos o procesos por cada conexión, NGINX emplea un proceso maestro (master process) y varios procesos de trabajo (worker processes). El proceso maestro se encarga de gestionar la configuración, mientras que los procesos de trabajo gestionan las solicitudes entrantes de los clientes.
Combinar Nextcloud con NGINX ofrece varias ventajas que son especialmente relevantes para entornos de servidor con altas exigencias de rendimiento. Entre los beneficios más destacados se encuentran los siguientes:
- Uso eficiente de recursos: NGINX es capaz de gestionar numerosas conexiones simultáneas de manera muy optimizada.
- Alta escalabilidad: permite distribuir la carga de forma flexible y puede ampliarse con facilidad añadiendo servidores extra.
- Opciones de personalización: gracias a su estructura modular, NGINX se puede adaptar a una variedad de casos de uso.
- Rendimiento estable sometido a carga: incluso con alta demanda del servidor, NGINX sigue funcionando con fiabilidad y estando disponible constantemente.
Nextcloud solo es oficialmente compatible con Apache 2.x como servidor web y no brinda soporte oficial para NGINX. Por eso, usar Nextcloud con NGINX se recomienda sobre todo para usuarios que tengan experiencia en la configuración de servidores web.
¿Qué requisitos debes cumplir para instalar Nextcloud con NGINX?
Para instalar Nextcloud con NGINX, lo básico es tener un servidor con Ubuntu, Debian u otro sistema compatible ya instalado. Tu servidor debería contar como mínimo con 4 GB de RAM y 2 CPU. Si planeas usar muchas Nextcloud apps o tener muchos usuarios, te recomiendo un sistema con más núcleos de CPU y memoria RAM. Además, asegúrate de tener suficiente espacio de almacenamiento para tus datos y copias de seguridad.
Para la instalación, también necesitas una base de datos compatible como MySQL o MariaDB, así como el lenguaje de scripting PHP (como mínimo versión 8.1; se recomienda tener la 8.3). En la base de datos se almacenan tanto los usuarios como los plugins, sus datos y los metadatos de los archivos. PHP es esencial para el procesamiento y la ejecución de las funciones de Nextcloud. Además, para poder instalar Nextcloud, necesitas una cuenta con permisos de administrador.
- Control total de datos
- Fácil de administrar
- Agrega fácilmente aplicaciones y herramientas de colaboración
Nextcloud con NGINX como servidor web: instalación y configuración
Antes de instalar Nextcloud, hemos realizado ya las tareas previas fundamentales. En esta guía partimos de un servidor Ubuntu en el que ya se ha instalado el sistema operativo junto con todas las dependencias necesarias. En concreto, se trata de NGINX como servidor web, MySQL como base de datos y PHP en su versión 8.3 con todas las extensiones requeridas.
También hemos instalado Certbot para poder instalar un certificado SSL con Let’s Encrypt fácilmente. Además, damos por hecho que cuentas con un dominio propio, para poder acceder a Nextcloud mediante una URL personalizada en lugar de una dirección IP.
En otros artículos, te mostramos cómo instalar Nextcloud en Ubuntu 22.04 o configurar Nextcloud en Kubernetes. Además, tenemos una guía detallada para instalar y configurar Nextcloud en Debian 12.
Descargar Nextcloud y descomprimirlo
Primero, dirígete al directorio de usuario de tu servidor y crea una carpeta llamada “nextcloud”. Aquí descargarás los archivos de instalación de Nextcloud. Puedes hacerlo manualmente desde el changelog de Nextcloud, pero es más fácil si usas el siguiente comando curl:
mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zipbashSi prefieres instalar otra versión, asegúrate de usar la URL correcta del archivo ZIP en el comando de descarga.
Extrae el archivo, mueve la carpeta a ./var/www (que actúa como directorio raíz) y establece los permisos de los archivos. Usa para ello estos comandos:
unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloudbashConfigurar la base de datos
Para configurar la base de datos MySQL, ejecuta el comando sudo mysql_secure_installation. Introduce “y” para establecer tu contraseña root (VALIDATE PASSWORD) y selecciona “2” para una contraseña segura (STRONG), que podrás configurar a continuación. Pulsa “y” para confirmar la contraseña y de nuevo “y” para eliminar usuarios anónimos, prohibir accesos remotos, eliminar la base de datos de prueba y volver a cargar las tablas de privilegios.
Después, debes hacer lo siguiente:
- Inicia sesión como usuario root en la base de datos con el comando
sudo mysql -u root -p. - Crea la base de datos de Nextcloud con
create database nextcloud;. - Crea la cuenta de usuario de Nextcloud mediante el comando
create user 'nextcloud'@'localhost' identified by <new_password>;. - Otorga todos los permisos de la base de datos al usuario con
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';. - Después, actualiza los permisos con
flush privileges;y sal de la consola de la base de datos conexit.
Una vez que la base de datos se haya creado correctamente, introduce los datos de acceso (DB_NAME, DB_USER, DB_PASSWORD) en el archivo de configuración de Nextcloud. Para ello, abre el archivo ./var/www/nextcloud/config/config.php y añade las siguientes entradas relevantes:
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,txt- Ancho de banda de hasta 1 Gb/s y tráfico ilimitado
- Almacenamiento SSD NVMe ultrarrápido
- Incluye: edición Plesk Web Host
Desactivar la configuración por defecto de NGINX
Antes de integrar Nextcloud en NGINX, debes asegurarte de que no exista ningún archivo de configuración que pueda interferir con la instalación. Por defecto, es posible que aún exista un archivo de configuración llamado default en ./etc/nginx/sites-enabled/, que podría impedir que Nextcloud se cargue correctamente. Este archivo debe eliminarse usando el siguiente comando:
sudo rm /etc/nginx/sites-enabled/defaultbashCon el siguiente comando te aseguras de que la nueva configuración para Nextcloud esté activa:
sudo ln -s /etc/nginx/sites-available/ejemplodominio.es /etc/nginx/sites-enabled/bashConfigurar el servidor NGINX
Para configurar NGINX como servidor web, debes tener ya un dominio configurado y vinculado a la dirección IP del servidor. Asegúrate también de que la configuración DNS sea correcta. Crea el archivo de configuración de NGINX en el directorio sites-available usando el comando Linux sudosudo touch /etc/nginx/sites-available/ejemplodominio.es(hemos utilizado la URLejemplodominio.es`).
Abre el archivo de configuración en un editor de texto como Vim con sudo vim /etc/nginx/sites-available/ejemplodominio.es y copia el bloque de código del apartado “Nextcloud in a subdir of the NGINX webroots” de la página oficial de Nextcloud para configurar NGINX y pégalo en la configuración dentro de ./etc/nginx/sites-available/ejemplodominio.es.
Como el certificado HTTPS se añadirá con Certbot, también debes eliminar todas las líneas relacionadas con SSL del archivo de configuración de NGINX. Certbot se encargará de realizar automáticamente la configuración, por lo que no es necesario configurar de forma manual.
Configurar el certificado SSL con Certbot
Para que Nextcloud funcione a través de una conexión segura HTTPS, es necesario configurar un certificado SSL (en este caso, de Let’s Encrypt). Primero, hay que configurar el cortafuegos para permitir las conexiones HTTPS y SSH. Usa el siguiente comando con sudo:
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'bashA continuación, usa sudo ufw enable para activar el cortafuegos y comprueba si las conexiones se permiten con sudo ufw status. Después de eso, ya puedes generar el certificado SSL con Certbot:
sudo certbot --nginx -d ejemplodominio.esbashProporciona tu correo electrónico para la renovación de certificados, acepta los términos de uso y selecciona la opción 2 para redirigir automáticamente todo el tráfico HTTP a HTTPS. Los archivos del certificado se guardan en el directorio .etc/letsencrypt/live/ejemplodominio.es/. El archivo fullchain.pem contiene el certificado SSL, mientras que el archivo privkey.pem contiene la contraseña privada. Ambos deben añadirse en el archivo de configuración de NGINX:
ssl_certificate /etc/letsencrypt/live/ejemplodominio.es/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ejemplodominio.es/privkey.pem;txtDado que Certbot ha modificado el archivo de configuración, hay que volver a añadir el atributo ssl entre 443 y http2. El bloque correspondiente debería verse así:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ejemplodominio.es;txtReiniciar servicios y acceder a Nextcloud
Para que los cambios surtan efecto, es necesario reiniciar los servicios de PHP-FPM y NGINX ejecutando este comando:
sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.servicebashA continuación, abre tu navegador y accede a tu dominio (en nuestro caso, ejemplodominio.es). Si todo está configurado correctamente, verás la página de inicio de Nextcloud.
Si Nextcloud no funciona, puede ser que tu dominio aún no esté registrado como dominio de confianza de Nextcloud en config.php. Para solucionar el problema, añade tu dominio en ese archivo.

