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!