Instalar Nextcloud con Docker
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.
Requisitos previos Copiar enlace
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.
Instalar y ejecutar Nextcloud Copiar enlace
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.
Paso 1: Crear un directorio de configuración Copiar enlace
Primero, crea la carpeta donde se almacenarán los archivos de configuración y entra en ella:
mkdir nextcloud && cd nextcloud
Paso 2: Crear el archivo .env Copiar enlace
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.
Paso 3: Crear el archivo docker-compose.yml Copiar enlace
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
Paso 4: Iniciar los contenedores Copiar enlace
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.
Paso 5: Configurar HTTPS con Let’s Encrypt Copiar enlace
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
Paso 6: Añadir un Proxy Host Copiar enlace
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.
Paso 7: Iniciar sesión en Nextcloud Copiar enlace
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.
Conclusión Copiar enlace
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.