Para quienes desean tener control total sobre sus datos, Nextcloud ofrece una potente solución de código abierto para construir un sistema de almacenamiento en la nube privado. La plataforma no solo permite sincronizar archivos de forma segura entre dispositivos, sino también alojar el almacenamiento en tu propio servidor, evitando depender de proveedores externos.
En esta guía veremos cómo instalar Nextcloud utilizando contenedores Docker aislados, lo que simplifica enormemente el despliegue y la administración. También configuraremos el cifrado de tráfico automático mediante certificados SSL de Let’s Encrypt para garantizar una transmisión segura de los datos.
Necesitarás:
Un servidor en la nube de Hostman con Linux Ubuntu 24.04 preinstalado.
Un nombre de dominio.
Docker y Docker Compose instalados.
Para el servidor, se recomienda una configuración con 1 CPU, 2 GB de RAM y una dirección IPv4 pública, que puedes solicitar al crear el servidor o más tarde en la sección “Network”.
El servidor estará listo en pocos minutos. La dirección IPv4 y las credenciales de acceso SSH estarán disponibles en el Dashboard.
Nextcloud requiere varios componentes fundamentales:
Base de datos: en este caso MariaDB, un sistema de gestión de bases de datos rápido y fiable.
Certificado SSL: utilizaremos certificados gratuitos de Let’s Encrypt.
Reverse proxy: añadiremos Nginx Proxy Manager, que se encargará de enrutar el tráfico HTTP y HTTPS hacia los contenedores correspondientes.
Primero, crea la carpeta donde se almacenarán los archivos de configuración y entra en ella:
mkdir nextcloud && cd nextcloud
Este archivo oculto almacenará variables con contraseñas:
nano .env
Contenido del archivo:
NEXTCLOUD_ROOT_PASSWORD=secure_root_password_123
NEXTCLOUD_DB_PASSWORD=secure_nextcloud_db_password_456
NPM_ROOT_PASSWORD=secure_npm_root_password_789
NPM_DB_PASSWORD=secure_npm_db_password_012
Recuerda reemplazar los valores por tus propias credenciales.
Crea el archivo:
nano docker-compose.yml
Agrega la siguiente configuración (no traducida por tu indicación):
volumes:
nextcloud-data:
nextcloud-db:
npm-data:
npm-ssl:
npm-db:
networks:
frontend:
backend:
services:
nextcloud-app:
image: nextcloud:31.0.8
restart: always
volumes:
- nextcloud-data:/var/www/html
environment:
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
- MYSQL_PORT=3306
networks:
- frontend
- backend
nextcloud-db:
image: mariadb:12.0.2
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${NEXTCLOUD_ROOT_PASSWORD}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- backend
npm-app:
image: jc21/nginx-proxy-manager:2.12.6
restart: always
ports:
- "80:80"
- "81:81"
- "443:443"
environment:
- DB_MYSQL_HOST=npm-db
- DB_MYSQL_PORT=3306
- DB_MYSQL_USER=npm
- DB_MYSQL_PASSWORD=${NPM_DB_PASSWORD}
- DB_MYSQL_NAME=npm
volumes:
- npm-data:/data
- npm-ssl:/etc/letsencrypt
networks:
- frontend
- backend
npm-db:
image: jc21/mariadb-aria:10.11.5
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${NPM_ROOT_PASSWORD}
- MYSQL_DATABASE=npm
- MYSQL_USER=npm
- MYSQL_PASSWORD=${NPM_DB_PASSWORD}
volumes:
- npm-db:/var/lib/mysql
networks:
- backend
Ejecuta:
docker compose up -d
Si aparece un error relacionado con los límites de descarga de Docker Hub:
Inicia sesión en tu cuenta de Docker Hub o crea una nueva.
Ve a Account settings → Personal access tokens.
Haz clic en Generate new token.
Añade una descripción, establece una fecha de expiración y selecciona permisos: Read, Write, Delete.
Haz clic en Generate y copia el token (solo se muestra una vez).
En el servidor, inicia sesión con:
docker login -u dockeruser
Sustituye dockeruser por tu nombre de usuario y usa el token como contraseña.
Reinicia los contenedores:
docker compose up -d
Comprueba su estado:
docker ps
Todos los contenedores deben mostrar Up.
Abre en el navegador:
http://<server-IP>:81
Inicia sesión con las credenciales predeterminadas:
Usuario: admin@example.com
Contraseña: changeme
Al iniciar sesión por primera vez:
Actualiza el nombre, apodo y correo electrónico del administrador.
Cambia la contraseña:
Current Password: changeme
New Password: tu nueva contraseña
Confirm Password: repetir contraseña
Entra en Hosts → Proxy Hosts.
Haz clic en Add Proxy Host y completa:
Domain Names: el dominio de tu instancia de Nextcloud
Scheme: http
Forward Hostname/IP: nextcloud-app
Forward Port: 80
En la pestaña SSL:
Selecciona Request a new SSL Certificate
Activa:
Force SSL
HTTP/2 Support
HSTS Enabled
Introduce tu email para Let’s Encrypt y acepta los términos. Guarda los cambios.
Ahora accede a tu dominio. Si todo está configurado correctamente, se abrirá la interfaz web de Nextcloud y se emitirá automáticamente un certificado SSL de Let’s Encrypt.
Crea una cuenta de administrador.
Opcionalmente instala aplicaciones recomendadas.
La instalación y configuración básica están completas.
En este artículo hemos mostrado cómo desplegar Nextcloud utilizando Docker y cómo obtener un certificado SSL gratuito de Let’s Encrypt.
Este método es uno de los más fiables, seguros y fácilmente escalables. Docker proporciona aislamiento limpio, simplifica las actualizaciones y facilita las migraciones. El uso de un certificado SSL no es solo una recomendación, sino una necesidad para proteger datos sensibles y garantizar tráfico cifrado.