traefik en ubuntu 20.04

Cómo instalar Traefik v2 en docker Ubuntu Server

by Mayra Salas

En este tutorial, configurará Traefik v2 para enrutar solicitudes a dos contenedores de aplicaciones diferentes.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente:

A lo largo de este tutorial, sustituya yourdomain por su_dominio en los archivos de configuración y ejemplos

Paso 1: Configurar y ejecutar Traefik

mkdir -p data/configurations
touch docker-compose.yml
touch data/traefik.yml
touch data/acme.json
touch data/configurations/dynamic.yml
chmod 600 data/acme.json

Paso 2: Creacion de archivo docker-compose.yml

File location ~/docker-compose.yml

version: '3.7'

services:
  traefik:
    image: traefik:v2.4
    container_name: traefik
    restart: always
    security_opt:
      - no-new-privileges:true
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      # Add folder with dynamic configuration yml
      - ./data/configurations:/configurations
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.traefik-secure.entrypoints=websecure"
      - "traefik.http.routers.traefik-secure.rule=Host(`traefik.yourdomain`)"
      - "traefik.http.routers.traefik-secure.middlewares=user-auth@file"
      - "traefik.http.routers.traefik-secure.service=api@internal"

networks:
  proxy:
    external: true

Paso 3 : Configuracion de rutas estaticas

En este paso debes definir los parametros de configuracion realacionados a tu dominio y tu direccion de correo .

File location ~/data/traefik.yml

api:
  dashboard: true

entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          to: websecure

  websecure:
    address: :443
    http:
      middlewares:
        - secureHeaders@file
        - nofloc@file
      tls:
        certResolver: letsencrypt

pilot:
  dashboard: false

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
  file:
    filename: /configurations/dynamic.yml

certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@yourdomain
      storage: acme.json
      keyType: EC384
      httpChallenge:
        entryPoint: web

  buypass:
    acme:
      email: admin@yourdomain
      storage: acme.json
      caServer: https://api.buypass.com/acme/directory
      keyType: EC256
      httpChallenge:
        entryPoint: web

Paso 4 : Configuracion dinamica

File location ~/data/configurations/dynamic.yml

# Dynamic configuration
http:
  middlewares:
    nofloc:
      headers:
        customResponseHeaders:
          Permissions-Policy: "interest-cohort=()"
    secureHeaders:
      headers:
        sslRedirect: true
        forceSTSHeader: true
        stsIncludeSubdomains: true
        stsPreload: true
        stsSeconds: 31536000   

    # UserName : admin
    # Password : qwer1234    
    user-auth:
      basicAuth:
        users:
          - "admin:$apr1$tm53ra6x$FntXd6jcvxYM/YH0P2hcc1"

tls:
  options:
    default:
      cipherSuites:
        - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
        - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
      minVersion: VersionTLS12

Una vez ingresado la configuracion en los archivos correspondientes, nos dirigimos al directorio /data e inciamos nuestro contenedor traefik, debemos verificar que en dicho directorio, se encuentre el archivo traefik.yml

docker-compose up -d

Luego de iniciar nuestro contenedor, podemos ingresar via web al servicio de traefik (Recomedamos que no se publique el puerto 80 para evitar cualquier riego)

no olvidemos que al ingresar nos pedira nuestras credenciales de acceso que definimos en el archivo dynamic.yml

  • UserName: admin
  • Password: qwer1234

Conclusión

En este artículo, ha aprendido a configurar traefik en Ubuntu 20.04. Tiene una idea de cómo registrar contenedores automáticamente en traefik para el equilibrio de carga y el proxy inverso.

Related Posts

Leave a Comment