Instalación y Configuración de Nextcloud en Debian 12 con Let’s Encrypt

Tabla de contenidos
Introducción
En este tutorial, completaremos la instalación y configuración de Nextcloud en un servidor Debian 12 con Nginx, MariaDB y PHP, además de contar con un certificado SSL de Let’s Encrypt para mayor seguridad.
Si aún no has visto la primera parte, donde configuramos Let’s Encrypt, te dejo el enlace para que sigas el proceso desde el inicio.
Paso 1: Instalación de Dependencias
Si acabas de instalar Debian 12, instala los siguientes paquetes ejecutando:
sudo apt update
sudo apt install nginx mariadb-server php php-fpm php-mysql php-xml php-mbstring php-zip php-gd php-curl php-intl php-bcmath unzip
Asegúrate de que Nginx esté en ejecución:
sudo systemctl enable --now nginx
Paso 2: Descarga e Instalación de Nextcloud
Nos dirigimos al directorio donde configuraremos Nextcloud:
cd /home/guillem/public_html/repasodemates.com/
Descargamos la última versión de Nextcloud:
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mv nextcloud /home/guillem/public_html/repasodemates.com/nextcloud
Asignamos los permisos adecuados:
sudo chown -R www-data:www-data /home/guillem/public_html/repasodemates.com/nextcloud
sudo chmod -R 755 /home/guillem/public_html/repasodemates.com/nextcloud
Paso 3: Configuración de la Base de Datos
Accedemos a MariaDB:
sudo mariadb
Ejecutamos los siguientes comandos en MariaDB:
CREATE DATABASE nextcloud_db;
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'localhost' IDENTIFIED BY 'tu_contraseña_segura';
FLUSH PRIVILEGES;
EXIT;
Esto creará la base de datos nextcloud_db con el usuario nextcloud_user y la contraseña que definas.
Paso 4: Configuración del Servidor Web (Nginx)
Creamos un archivo de configuración para el sitio nextcloud.repasodemates.com:
sudo nano /etc/nginx/sites-available/nextcloud.repasodemates.com
Añadimos la siguiente configuración:
server {
listen 443 ssl;
server_name nextcloud.repasomates.com;
ssl_certificate /etc/letsencrypt/live/nextcloud.repasomates.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nextcloud.repasomates.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name nextcloud.repasomates.com;
return 301 https://$host$request_uri;
}
Crear Enlace Simbólico
Para habilitar el sitio en Nginx, creamos un enlace simbólico:
sudo ln -s /etc/nginx/sites-available/nextcloud.repasodemates.com /etc/nginx/sites-enabled/
Verificamos que la configuración sea correcta:
sudo nginx -t
Si no hay errores, reiniciamos Nginx:
sudo systemctl restart nginx
Paso 5: Configuración Final de Nextcloud
Abrimos el navegador y accedemos a:
https://nextcloud.repasodemates.com
Se abrirá el asistente de configuración, donde debemos ingresar:
- Usuario y contraseña de administrador
- Ubicación de almacenamiento de datos (
/home/guillem/public_html/repasodemates.com/nextcloud/data
) - Datos de la base de datos:
- Usuario:
nextcloud_user
- Contraseña:
tu_contraseña_segura
- Nombre de la base de datos:
nextcloud_db
- Usuario:
Una vez completado esto, Nextcloud finalizará la instalación.
Tenéis que dar permisos al usuario apache (www-data) para que pueda escribir en los directorios que os indique la instalación.
Paso 6: Forzar HTTPS en Nextcloud
Para evitar problemas de seguridad y errores en el navegador, edita el archivo de configuración:
sudo nano /home/guillem/public_html/repasodemates.com/nextcloud/config/config.php
Añade o modifica las siguientes líneas:
'overwrite.cli.url' => 'https://nextcloud.repasodemates.com',
'overwriteprotocol' => 'https',
Guarda los cambios y reinicia Nginx:
sudo systemctl restart nginx
Conclusión
¡Listo! Ahora tienes Nextcloud completamente configurado en https://nextcloud.repasodemates.com con un servidor seguro mediante Let’s Encrypt.