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:
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, 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
JavaScriptAqui 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
JavaScriptAdotar 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.