Logo

Desplegar Nextcloud en Docker y https

En este tutorial, vamos a desplegar una infraestructura de contenedores, para poner en funcionamiento un servidor Nextcloud usando varios contenedores Docker:

Nextcloud: Contenedor ya preparado, aunque tiene la opción de phpfpm, vamos a usar Apache y lo vamos a poner detràs de un proxy inverso en Nginx.

Mariadb: Contenedor de base de datos Mariadb, un fork de MySQL que presenta un rendimiento superior respeto a MySQL, es necesario para que Nextcloud funcione ya que requiere de una conexión con una base de datos.

Nginx: Contenedor oficial de Nginx, vamos a usarlo para recibir todas las peticiones http y https y las va a direccionar al contenedor Nextcloud, junto a el vamos a poner otro contenedor que va a automatizar la gestión de los certificados SSL con Let's Encrypt.

Letsencrypt nginx proxy companion: Este contenedor automatiza todo el proceso de creación y renovaciones de certificados para Ngninx con Let's Encrypt.

Vamos a usar datastores persistentes, pues nos interesa mantener la configuración de los contenedores, como los datos del SQL, la configuración Nginx y certificados SSL además de los datos almacenados en nuestro Nextcloud. Para que todos estos contenedores se comuniquen entre ellos también vamos a crear una red en Docker que va a permitir que solo se puedan ver entre ellos, en excepción de Nginx que si va a ser accesible a internet.

Preparando proxy inverso y SSL.

Vamos a crear una red para que los contenedores se comuniquen entre ellos

docker network create netnext

El siguiente paso es crear el contenedor Nginx para que haga el proxy inverso y atienda a las peticiones http y https que vienen de internet.

docker run --name nginx --net netnext -p 80:80 -p 443:443 \ -v nginx-certs:/etc/nginx/certs \ -v nginx-vhost:/etc/nginx/vhost.d \ -v nginx-conf:/etc/nginx/conf.d \ -v nginx-dhparam:/etc/nginx/dhparam \ -v nginx-html:/usr/share/nginx/html \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy \ -d --restart always jwilder/nginx-proxy

Ahora vamos a poner en marcha el contenedor que nos va a permitir gestionar los certificados SSL.

docker run --name leproxy --net netnext \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ --volumes-from nginx \ -d --restart always jrcs/letsencrypt-nginx-proxy-companion

Desplegando Nextcloud

Ahora que ya tenemos listo el proxy inverso y la gestión de los certificados digitales, ya podemos empezar desplegando Nextcloud, en primer lugar vamos a preparar un contenedor para la base de datos en Mariadb.

docker run --name nextclouddb --net netnext \ -v nextclouddb:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=contraseña-root \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=contraseña-nextcloud \ -d --restart always mariadb

Por último ya podemos desplegar nuestro Nextcloud usando la base de datos de mariadb y el proxy inverso de nginx levantados anteriormente.

docker run --name nextcloud --net netnext \ -v nextcloud-html:/var/www/html \ -v nextcloud-apps:/var/www/html/custom_apps \ -v nextcloud-config:/var/www/html/config \ -v nextcloud-data:/var/www/html/data \ -v nextcloud-theme:/var/www/html/themes/ \ -e MYSQL_HOST=nextclouddb \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=contraseña-nextcloud \ -e VIRTUAL_HOST=direcciondetunextcloud.com \ -e LETSENCRYPT_HOST=direcciondetunextcloud.com \ -e LETSENCRYPT_EMAIL=tu@correo.com \ -d --restart always nextcloud

Accediendo por primera vez a tu Nextcloud

Ahora ya puedes acceder a tu nextcloud con la URL de tu sitio ;)

Notion Image

Lo primero que nos va a pedir es dar de alta un usuario y contraseña de administrador, una vez la entramos Nextcloud va a realizar los ultimos pasos de instal·lación y ya lo vamos a tener listo para usar.

Notion Image

A partir de aquí, puedes administrar tu Nextcloud, como tu necesites, recuerda que los datos se encuentran en volumenes persistentes:

docker volume ls DRIVER VOLUME NAME local nextcloud-apps local nextcloud-config local nextcloud-data local nextcloud-html local nextcloud-theme local nextclouddb local nginx-certs local nginx-conf local nginx-dhparam local nginx-html local nginx-vhost
← Volver al inicio
Desplegar Nextcloud en Docker y https