|
|
||
|---|---|---|
| .gemini | ||
| _backup | ||
| .dockerignore | ||
| .gitignore | ||
| README.md | ||
| docker-compose.yml | ||
| dynamic_conf.yml | ||
| traefik.yml | ||
README.md
NGINX Pathfinder Proxy (Migrated to Traefik)
Solução moderna de Proxy Reverso containerizado, agora utilizando Traefik para maior automação, suporte nativo a Docker e SSL gerenciado via Let's Encrypt.
🚀 Funcionalidades
🛡️ Traefik Proxy
- SSL Automatizado: Let's Encrypt nativo com renovação automática.
- Auto-Discovery: Detecta automaticamente novos containers Docker com labels específicos.
- Dashboard: Interface visual para monitoramento de rotas e serviços.
- Métricas: Suporte nativo a Prometheus habilitado por padrão.
- Logs em JSON: Ideal para integração com stacks de monitoramento (ELK, Loki).
⚡ Performance & Flexibilidade
- HTTP/2 & HTTP/3: Suporte a protocolos modernos.
- Roteamento Dinâmico: Configuração de backends externos (VMs/LXC) via arquivo dinâmico.
🛠️ Como Trabalhar neste Repositório
Pré-requisitos
- Docker & Docker Compose instalados.
- Portas 80 e 443 liberadas.
1. Implantar o Proxy (Portainer/Docker Compose)
- Certifique-se de que os arquivos
traefik.ymledynamic_conf.ymlestão presentes. - Crie o arquivo de certificados:
touch acme.json && chmod 600 acme.json. - Inicie os containers:
docker compose up -d
2. Adicionar um Novo Site (Backend Externo)
Edite o arquivo dynamic_conf.yml para adicionar novas rotas para servidores fora do Docker.
Exemplo de rota:
http:
routers:
meu-site:
rule: "Host(`meu-site.com.br`)"
service: meu-servidor
entryPoints: [websecure]
tls: { certResolver: letsencrypt }
services:
meu-servidor:
loadBalancer:
servers:
- url: "http://IP_DO_SERVIDOR"
3. Adicionar uma nova Aplicação (Containers Docker)
Diferente do Nginx, com Traefik você não precisa editar o proxy para adicionar novos containers. Basta adicionar labels no docker-compose.yml da sua aplicação.
Exemplo de uma nova app:
services:
minha-app:
image: nginx:alpine
networks:
- proxy_network # DEVE estar na mesma rede do Traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.minha-app.rule=Host(`app.itguys.com.br`)"
- "traefik.http.routers.minha-app.entrypoints=websecure"
- "traefik.http.routers.minha-app.tls.certresolver=letsencrypt"
- "traefik.http.services.minha-app.loadbalancer.server.port=80"
networks:
proxy_network:
external: true # Usa a rede já criada pelo proxy
O Traefik detectará essa app assim que ela subir e criará o SSL automaticamente.
4. Dashboard do Traefik
🏗️ Visão Geral da Stack
📊 Monitoramento (Zabbix)
O Traefik está configurado para exportar métricas no formato Prometheus. Para monitorar no Zabbix:
- Host: Adicione o host do Traefik no Zabbix.
- Template: Use o template oficial "Traefik by HTTP" (que utiliza Prometheus internamente).
- Endpoint: As métricas estão disponíveis em
http://IP_DO_PROXY:8080/metrics. - Macros: Se necessário, ajuste a macro
{$TRAEFIK.METRICS.PATH}para/metrics.
-mermaid +mermaid
graph TD
Client[Cliente Externo] -->|":80 / :443"| Traefik
subgraph DockerHost["Docker Host"]
Traefik[Traefik Proxy]
App1[Container A]
App2[Container B]
end
subgraph External["Rede Externa (LXC/VM)"]
Gitea[Gitea Server]
Zammad[Zammad Server]
end
Traefik --> App1
Traefik --> App2
Traefik --> Gitea
Traefik --> Zammad
---
*Mantido por IT Guys*