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 moderno.

Configurando o DNS: O Primeiro Passo

Antes de implementar o Traefik, é crucial ter uma configuração de DNS sólida. Aqui está um exemplo real usando mfs.eng.br. Essa configuração garante que as solicitações sejam corretamente encaminhadas para o servidor:

Resource TTL Type Priority Data
*.mfs.eng.br 86400 A 0 <IP_DO_SERVIDOR>
mfs.eng.br 86400 A 0 <IP_DO_SERVIDOR>

Por que o Traefik Importa?

O Traefik atua como um gateway eficiente para suas aplicações. Ele gerencia o tráfego, distribui requisições e detecta automaticamente novos containers Docker, criando rotas para eles sem necessidade de configuração manual.

SSL/TLS Automático: A integração com o Let’s Encrypt permite gerar e renovar certificados automaticamente, trazendo segurança sem fricção.

Hospedando Aplicações Self-Hosted

Se você hospeda suas próprias aplicações, o Traefik é seu melhor aliado. Ele automatiza tarefas críticas e simplifica a exposição das aplicações para a internet.

Abaixo está a configuração de um servidor Traefik completamente funcional com SSL automático:


version: "3.3"

services:
  traefik:
    image: "traefik:v2.10"
    container_name: "traefik"
    command:
      - "--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.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
  

E aqui está um exemplo de aplicação configurada para ser exposta com domínio próprio via Traefik:


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"

      - "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"

      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"

networks:
  default:
    external:
      name: proxy_network
  

Conclusão

Adotar o Traefik para suas aplicações self-hosted significa economizar tempo, esforço e garantir segurança. É uma escolha inteligente para quem busca simplificar a gestão de aplicações web.

Espero que este guia tenha ajudado!

Traefik: Gerenciando Aplicações Self-Hosted