Cómo cuarta opción, he estado probando Caddy tras la recomendación de Germán .
Ya había visto a diferentes artículos de cómo construir tu proxy inverso con Caddy, incluso algunos docker-compose, pero no me había llamado la atención del todo hasta el comentario de Germán.
La verdad es que este servicio es alucinante. Es una fusión entre traefik, poder levantar todos tus servicios con su certificado desde un archivo de texto plano y sencillez como Nginx Proxy Manager.
Caddy 2 es un potente servidor web de código abierto desarrollado en go.
Simplifica su infraestructura y se encarga de las renovaciones de certificados.
Funciona muy bien en contenedores porque no tiene dependencias.
Aunque la mayoría de la gente lo usa como servidor web o proxy, es una excelente opción tambien para:
Caddy requiere acceso de escritura a dos ubicaciones: un directorio de datos y un directorio de configuración .
Recuerda que para generar los certificados de Let's Encrypt, Caddy necesita tener abiertos los puertos 80 y 443.
version: "3.7"
services:
caddy:
image: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./data/caddy/data:/data
- ./data/caddy/config:/config
restart: unless-stopped
container_name: caddy
Cómo es multiarquitectura, podremos utilizarlo en ARM, amd64,…
Creamos el archivo Caddyfile, donde irá la configuración de nuestro proxy inverso.
Voy a exponer estos 3 servicios. En el puerto 8080, tengo un servidor nginx con una web estática, 8096 para jellyfin y 4533 para navidrome.
Caddy se encargará de exponer estos servicios a la red generando el certificado con Let's Encrypt.
midominio.duckdns.org {
reverse_proxy http://192.168.1.100:8080
}
jellyfin.midominio.duckdns.org {
reverse_proxy http://192.168.1.100:8096
}
navidrome.midominio.duckdns.org {
reverse_proxy http://192.168.1.100:4533
}
Voy a crear de ejemplo un docker-compose con shaarli y caddy, para que me genere el certirficado de shaarli.
version: "3.7"
services:
caddy:
image: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./data/caddy/data:/data
- ./data/caddy/config:/config
restart: unless-stopped
container_name: caddy
shaarli:
image: shaarli/shaarli
container_name: shaarli
restart: unless-stopped
Como veis, no he tenido que exponer los puertos de shaarli, ya que shaarli va ha estar dentro de la misma red de Caddy y este mediante el archivo de configuración Caddyfile, Caddy se encargará de enlazar el servicio y crear el certificado.
Mediante reverse_proxy shaarli:
, indicaremos a Caddy que este es el servicio que quiero utilizar como proxy inverso y que la url que quiero utilizar para acceder a este servicio, generandome también el certificado Let's Encrypt de esta dirección, sea shaarli.midominio.duckdns.org
.
shaarli.midominio.duckdns.org {
reverse_proxy shaarli:
}
Publicado por Angel el Friday 19 February del 2021
También te puede interesar:
Powered by org-bash-blog
Written in OrgMode with Emacs and converted to HTML with Pandoc
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.