Ejecutar Nextcloud en un servidor NGINX permite un uso eficiente de los recursos del software en la nube y ofrece opciones de im­ple­me­n­ta­ción flexibles. La in­s­ta­la­ción requiere tanto un entorno del sistema co­m­pa­ti­ble como una co­n­fi­gu­ra­ción adecuada. Además, para integrar Nextcloud sin problemas en el entorno NGINX, es necesario realizar algunos ajustes es­pe­cí­fi­cos.

Nextcloud y NGINX: una co­m­bi­na­ción potente para tu nube

NGINX es un software de servidor web basado en el principio de código abierto, que también puede uti­li­zar­se como reverse proxy, load balancer (ba­la­n­cea­dor de carga) y caché HTTP. La apli­ca­ción la de­sa­rro­lló en gran parte el pro­gra­ma­dor ruso Igor Sysoev y se publicó con la licencia BSD (una variante de Unix).

NGINX está diseñado para gestionar una gran cantidad de co­ne­xio­nes si­mu­l­tá­nea­me­n­te. Para lograrlo, utiliza una ar­qui­te­c­tu­ra orientada a eventos y no blo­quea­n­te. A di­fe­re­n­cia de los se­r­vi­do­res web tra­di­cio­na­les, 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 co­n­fi­gu­ra­ción, mientras que los procesos de trabajo gestionan las so­li­ci­tu­des entrantes de los clientes.

Combinar Nextcloud con NGINX ofrece varias ventajas que son es­pe­cia­l­me­n­te re­le­va­n­tes para entornos de servidor con altas exi­ge­n­cias de re­n­di­mie­n­to. Entre los be­ne­fi­cios más de­s­ta­ca­dos se en­cue­n­tran los si­guie­n­tes:

  • Uso eficiente de recursos: NGINX es capaz de gestionar numerosas co­ne­xio­nes si­mu­l­tá­neas de manera muy op­ti­mi­za­da.
  • Alta es­ca­la­bi­li­dad: permite di­s­tri­buir la carga de forma flexible y puede ampliarse con facilidad añadiendo se­r­vi­do­res extra.
  • Opciones de pe­r­so­na­li­za­ción: gracias a su es­tru­c­tu­ra modular, NGINX se puede adaptar a una variedad de casos de uso.
  • Re­n­di­mie­n­to estable sometido a carga: incluso con alta demanda del servidor, NGINX sigue fu­n­cio­na­n­do con fia­bi­li­dad y estando di­s­po­ni­ble co­n­s­ta­n­te­me­n­te.
Nota

Nextcloud solo es ofi­cia­l­me­n­te co­m­pa­ti­ble con Apache 2.x como servidor web y no brinda soporte oficial para NGINX. Por eso, usar Nextcloud con NGINX se re­co­mie­n­da sobre todo para usuarios que tengan ex­pe­rie­n­cia en la co­n­fi­gu­ra­ción de se­r­vi­do­res web.

¿Qué re­qui­si­tos 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 co­m­pa­ti­ble 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 re­co­mie­n­do un sistema con más núcleos de CPU y memoria RAM. Además, asegúrate de tener su­fi­cie­n­te espacio de al­ma­ce­na­mie­n­to para tus datos y copias de seguridad.

Para la in­s­ta­la­ción, también necesitas una base de datos co­m­pa­ti­ble como MySQL o MariaDB, así como el lenguaje de scripting PHP (como mínimo versión 8.1; se re­co­mie­n­da 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 pro­ce­sa­mie­n­to y la ejecución de las funciones de Nextcloud. Además, para poder instalar Nextcloud, necesitas una cuenta con permisos de ad­mi­ni­s­tra­dor.

Hosting Nextcloud ad­mi­ni­s­tra­do
Tu al­ma­ce­na­mie­n­to cloud bajo control
  • Control total de datos
  • Fácil de ad­mi­ni­s­trar
  • Agrega fá­ci­l­me­n­te apli­ca­cio­nes y he­rra­mie­n­tas de co­la­bo­ra­ción

Nextcloud con NGINX como servidor web: in­s­ta­la­ción y co­n­fi­gu­ra­ción

Antes de instalar Nextcloud, hemos realizado ya las tareas previas fu­n­da­me­n­ta­les. En esta guía partimos de un servidor Ubuntu en el que ya se ha instalado el sistema operativo junto con todas las de­pe­n­de­n­cias ne­ce­sa­rias. 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 ex­te­n­sio­nes re­que­ri­das.

También hemos instalado Certbot para poder instalar un ce­r­ti­fi­ca­do SSL con Let’s Encrypt fá­ci­l­me­n­te. Además, damos por hecho que cuentas con un dominio propio, para poder acceder a Nextcloud mediante una URL pe­r­so­na­li­za­da en lugar de una dirección IP.

Consejo

En otros artículos, te mostramos cómo instalar Nextcloud en Ubuntu 22.04 o co­n­fi­gu­rar Nextcloud en Ku­be­r­ne­tes. Además, tenemos una guía detallada para instalar y co­n­fi­gu­rar Nextcloud en Debian 12.

Descargar Nextcloud y de­s­co­m­pri­mi­r­lo

Primero, dirígete al di­re­c­to­rio de usuario de tu servidor y crea una carpeta llamada “nextcloud”. Aquí de­s­ca­r­ga­rás los archivos de in­s­ta­la­ción de Nextcloud. Puedes hacerlo ma­nua­l­me­n­te 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.zip
bash
Nota

Si 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 di­re­c­to­rio 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/nextcloud
bash

Co­n­fi­gu­rar la base de datos

Para co­n­fi­gu­rar la base de datos MySQL, ejecuta el comando sudo mysql_secure_installation. Introduce “y” para es­ta­ble­cer tu co­n­tra­se­ña root (VALIDATE PASSWORD) y se­le­c­cio­na “2” para una co­n­tra­se­ña segura (STRONG), que podrás co­n­fi­gu­rar a co­n­ti­nua­ción. Pulsa “y” para confirmar la co­n­tra­se­ñ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 pri­vi­le­gios.

Después, debes hacer lo siguiente:

  1. Inicia sesión como usuario root en la base de datos con el comando sudo mysql -u root -p.
  2. Crea la base de datos de Nextcloud con create database nextcloud;.
  3. Crea la cuenta de usuario de Nextcloud mediante el comando create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Otorga todos los permisos de la base de datos al usuario con grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Después, actualiza los permisos con flush privileges; y sal de la consola de la base de datos con exit.

Una vez que la base de datos se haya creado co­rre­c­ta­me­n­te, introduce los datos de acceso (DB_NAME, DB_USER, DB_PASSWORD) en el archivo de co­n­fi­gu­ra­ción de Nextcloud. Para ello, abre el archivo ./var/www/nextcloud/config/config.php y añade las si­guie­n­tes entradas re­le­va­n­tes:

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt
Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

Des­ac­ti­var la co­n­fi­gu­ra­ción por defecto de NGINX

Antes de integrar Nextcloud en NGINX, debes ase­gu­rar­te de que no exista ningún archivo de co­n­fi­gu­ra­ción que pueda in­te­r­fe­rir con la in­s­ta­la­ción. Por defecto, es posible que aún exista un archivo de co­n­fi­gu­ra­ción llamado default en ./etc/nginx/sites-enabled/, que podría impedir que Nextcloud se cargue co­rre­c­ta­me­n­te. Este archivo debe eli­mi­nar­se usando el siguiente comando:

sudo rm /etc/nginx/sites-enabled/default
bash

Con el siguiente comando te aseguras de que la nueva co­n­fi­gu­ra­ción para Nextcloud esté activa:

sudo ln -s /etc/nginx/sites-available/ejemplodominio.es /etc/nginx/sites-enabled/
bash

Co­n­fi­gu­rar el servidor NGINX

Para co­n­fi­gu­rar NGINX como servidor web, debes tener ya un dominio co­n­fi­gu­ra­do y vinculado a la dirección IP del servidor. Asegúrate también de que la co­n­fi­gu­ra­ción DNS sea correcta. Crea el archivo de co­n­fi­gu­ra­ción de NGINX en el di­re­c­to­rio sites-available usando el comando Linux sudo sudo touch /etc/nginx/sites-available/ejemplodominio.es (hemos utilizado la URL ejemplodominio.es).

Abre el archivo de co­n­fi­gu­ra­ció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 co­n­fi­gu­rar NGINX y pégalo en la co­n­fi­gu­ra­ción dentro de ./etc/nginx/sites-available/ejemplodominio.es.

Como el ce­r­ti­fi­ca­do HTTPS se añadirá con Certbot, también debes eliminar todas las líneas re­la­cio­na­das con SSL del archivo de co­n­fi­gu­ra­ción de NGINX. Certbot se encargará de realizar au­to­má­ti­ca­me­n­te la co­n­fi­gu­ra­ción, por lo que no es necesario co­n­fi­gu­rar de forma manual.

Co­n­fi­gu­rar el ce­r­ti­fi­ca­do SSL con Certbot

Para que Nextcloud funcione a través de una conexión segura HTTPS, es necesario co­n­fi­gu­rar un ce­r­ti­fi­ca­do SSL (en este caso, de Let’s Encrypt). Primero, hay que co­n­fi­gu­rar el co­r­ta­fue­gos para permitir las co­ne­xio­nes HTTPS y SSH. Usa el siguiente comando con sudo:

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

A co­n­ti­nua­ción, usa sudo ufw enable para activar el co­r­ta­fue­gos y comprueba si las co­ne­xio­nes se permiten con sudo ufw status. Después de eso, ya puedes generar el ce­r­ti­fi­ca­do SSL con Certbot:

sudo certbot --nginx -d ejemplodominio.es
bash

Pro­po­r­cio­na tu correo ele­c­tró­ni­co para la re­no­va­ción de ce­r­ti­fi­ca­dos, acepta los términos de uso y se­le­c­cio­na la opción 2 para redirigir au­to­má­ti­ca­me­n­te todo el tráfico HTTP a HTTPS. Los archivos del ce­r­ti­fi­ca­do se guardan en el di­re­c­to­rio .etc/letsencrypt/live/ejemplodominio.es/. El archivo fullchain.pem contiene el ce­r­ti­fi­ca­do SSL, mientras que el archivo privkey.pem contiene la co­n­tra­se­ña privada. Ambos deben añadirse en el archivo de co­n­fi­gu­ra­ción de NGINX:

ssl_certificate /etc/letsencrypt/live/ejemplodominio.es/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ejemplodominio.es/privkey.pem;
txt

Dado que Certbot ha mo­di­fi­ca­do el archivo de co­n­fi­gu­ra­ción, hay que volver a añadir el atributo ssl entre 443 y http2. El bloque co­rre­s­po­n­die­n­te debería verse así:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name ejemplodominio.es;
txt

Reiniciar servicios y acceder a Nextcloud

Para que los cambios surtan efecto, es necesario reiniciar los servicios de PHP-FPM y NGINX eje­cu­ta­n­do este comando:

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

A co­n­ti­nua­ción, abre tu navegador y accede a tu dominio (en nuestro caso, eje­m­plo­do­mi­nio.es). Si todo está co­n­fi­gu­ra­do co­rre­c­ta­me­n­te, verás la página de inicio de Nextcloud.

Nota

Si Nextcloud no funciona, puede ser que tu dominio aún no esté re­gi­s­tra­do como dominio de confianza de Nextcloud en config.php. Para so­lu­cio­nar el problema, añade tu dominio en ese archivo.

Ir al menú principal