.jpg)
Artículo · Administración de Servidores
Multi-Site con Lets Encrypt
. De igual manera con la configuración de un nginx podemos obtener los mismos resultados, sin embargo me preguntaba ¿Porqué no hacerlo con los contenedores?
En el siguiente articulo les explicaré como realizar una configuración básica con 2 contenedores de diversas herramientas web y sus respectivos certificados con lets encrypt.
Requerimientos
-
VPS en con 2GB de Ram, 1 vcpu, 55 GB SSD.
-
Dominio gratuito o pagado en este caso usare 2 subdominios *.utponline.xyz
-
Contar con docker y docker compose instalado previamente.
-
Arquitectura Deseada
El siguiente diagrama vemos las herrmientas a utilizar un Nginx , que repartirá las peticiones de los subdominios a los respectivos contenedores con wordpress y Ghost. El contenedor de lets encrypt lo veremos en el archivo docker-compose.yml
Fuente: Propia, el contenedor de lets encrypt no esta reflejado en el gráfico dado su utilidad es para generar el certificado únicamente.
2.
version: '3.1'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./vhostd:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion:v1.13
restart: always
environment:
- NGINX_PROXY_CONTAINER=nginx-proxy
volumes:
- ./certs:/etc/nginx/certs:rw
- ./vhostd:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
wordpress:
image: wordpress
container_name: wordpress_1
links:
- mariadb:mysql
expose:
- 80
environment:
- WORDPRESS_DB_PASSWORD=qwertyqwerty
- WORDPRESS_DB_USER=userwp
- WORDPRESS_DB_NAME=wpdb
- "VIRTUAL_HOST=web1.utponline.xyz"
- "LETSENCRYPT_HOST=web1.utponline.xyz"
- "LETSENCRYPT_EMAIL=jose.moreno@comunidaddojo.org"
volumes:
- ./web1/html:/var/www/html
mariadb:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=qwerty123456789
- MYSQL_DATABASE=wpdb
- MYSQL_USER=userwp
- MYSQL_PASSWORD=qwertyqwerty
volumes:
- ./database:/var/lib/mysql
ghost:
image: ghost
expose:
- 80
environment:
- VIRTUAL_HOST=ghost.utponline.xyz
- VIRTUAL_PORT=2368
- "LETSENCRYPT_HOST=ghost.utponline.xyz"
- "LETSENCRYPT_EMAIL=jose.moreno@comunidaddojo.org"
-
-
VIRTUAL_HOST: dominio de la aplicación a utilizar
-
LETSENCRYPT_HOST: el parámetro toma el host que vamos a generar los certificados
-
LETSENCRYPT_EMAIL: correo a utilizar para el certificado
-
NGINX_PROXY_CONTAINER: definimos el proxy
-
-
docker-compose up -d
Verificamos que los contenedores hayan iniciado correctamente
Observamos de igual manera los directorios creados por el docker-compose.yml
4. Resultado final
-
Contenedor Wordpress con el dominio https://web.utponline.xyz
Hemos automatizado la creación de certificados, además de utilizar un proxy que administra las peticiones a los contenedores con diversas tecnologías o herramientas web, adicionalmente se podría añadir a esta arquitectura un contenedor con gitlab, jenkins, entre otros.
Referencias
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Penetration Testing Professional.

Escrito por
José MorenoPurple Team
Jugador de HTB, script kiddie, apasionado por la seguridad informática especialmente red team, Miembro Fundador Asociación Panameña de Peritos en Informática Forense, Purple-Team UTP.


.jpg)
