Traefik como proxy inverso para docker con SSL .

https://docs.traefik.io/assets/img/providers/docker.png

En esta ocasión les mostraremos como usar traefik, un proxy inverso muy flexible para nuestros contenedores docker, dándonos una facilidad de despliegue mucho mas eficiente y rápida.

Para la version de traefik 2.x en adelante tenemos una configuracion para su deploy aca https://github.com/tomasmetal23/traefikv2

Dependencias usadas:

  • Servicio DNS Cloudflare
  • docker
  • Imagen traefik:1.7.18-alpine

Extra:

  • docker-compose
  • Imagen portainer

¿Que es Cloudflare?

Cloudflare es una empresa que presta servicios de seguridad. Entre ellos uno free como servidor DNS y proxy, por otro lado también nos proporcionara certificados SSL mediante un proxy, en consecuencia nuestra ip publica no sera expuesta dándonos algo mas de seguridad.

Otras funcionalidades:

  • Protección DDoS (JavaScript challenge)
  • Analytics (métricas)
  • Firewall
  • Servidor cache
  • URL Forwading (solo 3 en modo free)
  • Speed (test y optimización web)

Estos son solo alguno de los servicios o funcionalidades que nos proporciona cloudflare mencionando aquí básicamente los servicios gratuitos aparte de todo esto hay muchas mas características free y aun mas si usamos el servicio premiun.

Si hemos llegado hasta aquí asumo que sabemos como usar o agregar un nuevo servidor DNS agregando los NS de cloudflare a la tabla DNS de nuestro servidor.

Preparación previa de Cloudflare

Ya que imagino que muchos no conocen este servicio intentare hacer una breve guía de registro no muy especifica y con los pasos necesarios para obtener la api-key de acceso global.

  • Registro en cloudflare.com
  • verificamos nuestro correo y seguimos el proceso
Registro en cloudflare
  • Agregamos nuestro sitio, seleccionamos el plan Free y confirmamos.
  • Cloudflare hará un scan automático de nuestros registros dns, cuando termine presionamos el botón Continue.
  • Nos pedirá cambiar nuestro NS por los de cloudflare.
Cambio de nameservers
Reemplazamos, asumo que sabemos sobre este tema de los dns y por eso no soy tan explicito.

Generalmente toma algunas horas o incluso días que culmine la propagación dns todo esto depende de nuestro proveedor de dominios.

cloudflare nos avisara en un email cuando culmine el registro y este disponible

Una vez que se active nuestro dominio, ajustamos nuestra tabla dns como corresponde según nuestra necesidad.

  • Extraeremos la api global de cloudflare. Para esto estando en el menú Overview, bajamos hasta que nos topemos en la barra lateral derecha con el sub-menú de la api.
panel derecho sub-menú de la api
Ingrese su contraseña y resuelva el captcha para obtener su api globar.
guardamos la api-key que usaremos con traefik

SSL/TLS

Configuración SSL/TLS
Establecemos estos valores para el ssl
Always use HTTPS On
dejamos en «On»

Traefik como proxy de nuestros contenedores

Lo primero sera crear y definir un archivo con el nombre traefik.toml lo pueden hacer en cualquier directorio que deseen, yo lo haré en /opt/traefik para mantener un orden de todos mis stacks en una carpeta en dicho directorio.

Definimos un usuario y contraseña para el monitor del traefik, pueden general la key instalando apache2-utils, reemplazamos USUARIO y CONTRASEÑA con las credenciales que queramos.

$ echo $(htpasswd -nbB USUARIO "CONTRASEÑA") | sed -e s/\\$/\\$\\$/g
credencial cifrada para el monitor
Obtendremos un resultado como este donde el cual sera nuestra credencial cifrada

Reemplazamos ‘aquituhtpasswd’ en la linea 8 por el usuario y contraseña cifrado que generamos; Sustituimos ‘tudominio.com’ por su dominio.

$ sudo nano /opt/traefik/traefik.toml

traefik.toml

acme.json

$ sudo touch /opt/traefik/acme.json
$ sudo chmod 600 /opt/traefik/acme.json

El archivo acme.json es donde traefik depositara y gestionara los certificados SSL, es obligatorio que sus permisos sean 600.

Traefik como proxy – Docker run

Ejecutamos en nuestra terminal:

$ docker network create web

Sirve para crear una red en modo bridge con la interfaz principal del host y por ultimo:

Reemplazamos ‘logincloudflare’ y ‘apiglobal’ con nuestro login de cloudflare y nuestra api global que guardamos anteriormente. También reemplazamos con nuestro dominio ‘monitor.tudominio.com’, recuerde siempre agregar las nuevas entradas «A» de subdominios nuevos que vamos creando en cloudflare.

Ejecutamos en la terminal:

Resultado

Traefik como proxy inverso para docker con SSL- ejecución de comando de despliegue

Vamos a nuestro navegador a la web del monitor, monitor.tudominio.com.

Traefik como proxy inverso para docker con SSL - petición de credenciales para acceder al monitor del traefik
introducimos nuestro usuario y contraseña que encriptamos en https://www.htaccesstools.com/htpasswd-generator/
Traefik monitor como proxy inverso para docker con SSL
listo, tenemos traefik funcionando.

Traefik como proxy – Portainer

Instalaremos portainer, una herramienta web para gestion de nuestras imágenes, red y contenedores de docker bastante interactivo, para esto necesitaremos tener instalado docker-compose y creamos una carpeta para llevar el control y orden.

$ sudo mkdir -p /opt/traefik/stacks/portainer
$ sudo nano /opt/traefik/stacks/portainer/docker-compose.yml

Agregamos a nuestro docker-compose.yml:

Recuerden cambiar tudominio.com por el de ustedes:

En nuestro terminal ejecutamos:

$ cd /opt/traefik/stacks/portainer && docker-compose up -d
resultado
resultado.

Visitamos en nuestro navegador web el subdominio que le definimos, la primera vez que iniciamos debemos registrar un usuario.

registrar un usuario  administrador para el portainer
Panel de administracion del portainer
Panel de administracion del portainer

Cualquier duda pueden comentar aquí sus inquietudes o problemas para entre todos asistirnos en lo que podamos.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada.