BlogInfrastructure & LinuxSolution Architecture

Traefik: Gerenciando Aplicações Self-Hosted

Hospedar suas próprias aplicações web é uma tarefa desafiadora. Este post explora como o Traefik pode simplificar esse processo, funcionando como um gateway eficiente e um balanceador de carga.

Configurando o DNS: O Primeiro Passo

Antes de implementar o Traefik, é crucial ter uma configuração de DNS sólida. Vamos considerar um exemplo prático: mfs.eng.br. Esta configuração assegura que as solicitações para mfs.eng.br sejam corretamente encaminhadas para o servidor:

ResourceTTLTypePriorityData
*.mfs.eng.br86400A0<IP_DO_SERVIDOR>
mfs.eng.br86400A0<IP_DO_SERVIDOR>
Configuração do DNS

Por que o Traefik Importa?

O Traefik atua como um Gateway eficiente para suas Aplicações. Ele gerencia o tráfego, distribuindo-o de maneira inteligente entre seus serviços. Com sua integração ao Docker, o Traefik detecta automaticamente novos contêineres e configura rotas apropriadas, tornando todo o processo de gestão extremamente eficiente.

SSL/TLS Automático: Segurança Simplificada: Um aspecto crucial é a segurança das suas aplicações. O Traefik integra-se com o Let’s Encrypt para fornecer certificados SSL/TLS, garantindo uma comunicação segura sem a necessidade de configurações complexas.

Veja abaixo a tela de visualização de todos os proxy HTTP que o traefik que hospedo em self-host

Hospedando Self-Hosted Applications

Se você está hospedando suas próprias aplicações, o Traefik é seu melhor amigo. Automatiza tarefas e simplifica a exposição de suas aplicações para a internet. Com o Traefik, a administração fica suave, e você ganha tempo para focar no que realmente importa: suas aplicações.

Veja abaixo a configuração utilizada para subir um servidor totalmente funcional com geração de certificado SSL automático:

version: "3.3"

services:

  traefik:
    image: "traefik:v2.10"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--log.level=DEBUG"
      - "--log.filePath=/logs/traefik.log"
      - "--accessLog.filePath=/logs/access.log"
      - "--accessLog.bufferingSize=100"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=true"
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
      #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myresolver.acme.email=<SEU_EMAIL>"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
      - "127.0.0.1:8080:8080"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./logs:/logs"
networks:
  default:
    external:
      name: proxy_network
JavaScript

Aqui agora está a configuração de uma aplicação qualquer que utiliza o traefik para subir o seu nome de domínio:

version: '3.8'

services:
  web:
    image: nginx:alpine
    volumes:
      - ./html:/usr/share/nginx/html
    labels:
    - "traefik.enable=true"
    - "traefik.http.services.cltpj.loadbalancer.server.port=80"
    - "traefik.http.routers.cltpj.rule=Host(`clt-pj.mfs.eng.br`)"
    - "traefik.http.routers.cltpj.entrypoints=websecure" 
    - "traefik.http.routers.cltpj.tls.certresolver=myresolver"

    # Redirecionamento de HTTP para HTTPS
    - "traefik.http.routers.cltpj-http.rule=Host(`clt-pj.mfs.eng.br`)"
    - "traefik.http.routers.cltpj-http.entrypoints=web"
    - "traefik.http.routers.cltpj-http.middlewares=redirect-to-https@docker"

    # Middleware para redirecionamento
    - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"


networks:
  default:
    external:
      name: proxy_network
JavaScript

Adotar o Traefik para suas aplicações self-hosted significa economizar tempo e esforço, garantindo segurança e eficiência. É uma escolha inteligente para qualquer pessoa buscando simplificar a gestão de suas aplicações web.

Espero que tenha ajudado.