Traefik 2.*.* en Docker con LetsEncrypt Quick-Deploy

How to setup Traefik v2 with automatic Let's Encrypt certificate resolver |  by Paul Knulst | Level Up Coding

Traefik es un Edge Router de código abierto, hace que la publicación de sus servicios sea una experiencia fácil y divertida. Recibe solicitudes en nombre de su sistema y descubre qué componentes son responsables de manejarlas.

Lo que distingue a este router, además de sus muchas funciones, es que descubre automáticamente la configuración adecuada para sus servicios (containers). La magia sucede cuando inspecciona la infraestructura, donde encuentra información relevante y descubre qué servicio debe atender qué solicitud.

Dependencias usadas:

  • Docker
  • Docker-compose
  • Git

Deploy Traefik

$ git clone https://github.com/tomasmetal23/traefikv2-with-letsencrypt.git && cd traefikv2-with-letsencrypt

Primero editaremos el archivo traefik.toml y agregaremos nuestro email para recibir los mensajes sobre los certificados .

letsencrypt email 

Procederemos a modificar el archivo traefik_dynamic.toml, pero antes vamos a crear las credenciales para el dashboard. Introduciremos nuestro usuario y contraseña, el cual encriptaremos en https://www.htaccesstools.com/htpasswd-generator/ y agregamos el subdomain con el cual podremos acceder al dashboard.

Subdominio y credenciales para el dashboard 

Creamos el archivo que funciona como deposito de los certificados SSL

$ touch acme.json

$ chmod 600 acme.json

Deploy traefik with docker-compose

$ docker network create web

$ docker-compose up -d

Deploy with docker run

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $PWD/traefik.toml:/traefik.toml \
  -v $PWD/traefik_dynamic.toml:/traefik_dynamic.toml \
  -v $PWD/acme.json:/acme.json \
  -p 80:80 \
  -p 443:443 \
  --network web \
  --name traefik \
  traefik:latest
traefik dashboard
Dashboard

Portainer Container Management with Traefik labels

Hagamos un deploy de portainer con las labels en el docker-compose, de esta forma podremos ejemplificar.

$ mkdir -p stacks/portainer && cd stacks/portainer && nano docker-compose.yml
version: "3"

services:
  portainer:
    image: portainer/portainer-ce
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/data/portainer:/data
    networks:
      - web
    #traefik labels
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer.entrypoints=websecure"
      - "traefik.http.routers.portainer.rule=Host(`portainer.tudomain.com`)"
      - "traefik.http.routers.portainer.tls.certresolver=lets-encr"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
    command: -H unix:///var/run/docker.sock

networks:
  web:
    external: true

Finalmente, guardamos el docker-compose.yml con este contenido y procedemos a ejecutar docker-compose

$ docker-compose up -d 
portainer with traefik labels
Como resultado obtendremos un Dashboard de gestión de contenedores, la primera vez que visite el Dashboard deberá crear un usuario y contraseña.

Referencias

Documentación del router

Digitalocean

Otros artículos

Jitsi Meet

Chrome Remote Desktop

Administrador de sistemas, un curioso amante de las tecnologías.

Deja un comentario

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