# 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 adecuada. 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](https://www.ionos.es/digitalguide/servidores/configuracion/nginx-conceptos-basicos-instalacion-y-configuracion/) es un software de servidor web basado en el principio de código abierto, que también puede utilizarse como [reverse proxy](https://www.ionos.es/digitalguide/servidores/configuracion/nginx-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.

Nota [Nextcloud](https://www.ionos.es/digitalguide/servidores/herramientas/que-es-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](https://www.ionos.es/digitalguide/servidores/herramientas/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.

## 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](https://www.ionos.es/digitalguide/paginas-web/creacion-de-paginas-web/instalar-certificado-ssl-lets-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.

Consejo En otros artículos, te mostramos cómo instalar [Nextcloud en Ubuntu 22.04](https://www.ionos.es/digitalguide/servidores/configuracion/nextcloud-ubuntu-2204/) o configurar [Nextcloud en Kubernetes](https://www.ionos.es/digitalguide/servidores/configuracion/nextcloud-kubernetes/). Además, tenemos una guía detallada para instalar y configurar [Nextcloud en Debian 12](https://www.ionos.es/digitalguide/servidores/configuracion/nextcloud-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](https://nextcloud.com/changelog/ "Nextcloud Changelog"), pero es más fácil si usas el siguiente comando curl:

```bash
mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zip
```

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 directorio raíz) y establece los permisos de los archivos. Usa para ello estos comandos:

```bash
unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloud
```

### Configurar 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:

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 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:

```txt
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
```

### 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:

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

Con el siguiente comando te aseguras de que la nueva configuración para Nextcloud esté activa:

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

### Configurar 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 sudo](https://www.ionos.es/digitalguide/servidores/configuracion/linux-sudo/) `sudo touch /etc/nginx/sites-available/ejemplodominio.es` (hemos utilizado la URL `ejemplodominio.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](https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html) 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:

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

A 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:

```bash
sudo certbot --nginx -d ejemplodominio.es
```

Proporciona 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:

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

Dado 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í:

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

### Reiniciar servicios y acceder a Nextcloud

Para que los cambios surtan efecto, es necesario reiniciar los servicios de PHP-FPM y NGINX ejecutando este comando:

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

A 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.

Nota Si Nextcloud no funciona, puede ser que tu dominio aún no esté registrado como [dominio de confianza de Nextcloud](https://www.ionos.es/digitalguide/servidores/herramientas/nextcloud-trusted-domains/) en `config.php`. Para solucionar el problema, añade tu dominio en ese archivo.


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/configuracion/nextcloud-nginx/](https://www.ionos.es/digitalguide/servidores/configuracion/nextcloud-nginx/) for AI/LLM consumption.