Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Conexão recusada no Traefik porta 80/443: causa e como reabrir

16 min de leitura  ·  Guia técnico

Conexão recusada no Traefik nas portas 80 e 443 ocorre quando o proxy reverso não está mapeando corretamente os entrypoints no docker-compose.yml, quando outro processo já ocupa essas portas, ou quando as regras de roteamento dos containers de backend estão ausentes ou incorretas. Verifique os entrypoints, libere as portas e corrija as labels dos containers para restaurar o tráfego.

Pré-requisitos para configurar o Traefik como proxy reverso

  • Acesso root ou sudo ao servidor Linux (Ubuntu 24.04 LTS, Debian 12 ou Rocky Linux 9)
  • Docker Engine instalado (versão 24 ou superior) e Docker Compose v2
  • Traefik v2.x ou v3.x instalado via imagem oficial traefik:v2.11
  • Portas 80 e 443 disponíveis no host (sem Apache, Nginx ou outro serviço ocupando-as)
  • Domínio apontando para o IP do servidor (necessário para emissão de certificado Let's Encrypt)
  • Acesso SSH ao servidor — veja como acessar servidores VPS Linux da AviraHost

Conexão recusada no Traefik porta 80/443: diagnóstico inicial

Antes de qualquer alteração, identifique exatamente o que está bloqueando o tráfego. O erro connection refused no Traefik pode ter três origens distintas: porta ocupada por outro processo, entrypoint não declarado no arquivo de configuração, ou container Traefik que simplesmente não subiu. Execute os comandos abaixo na ordem para isolar a causa.

Verifique quais processos estão escutando nas portas 80 e 443:

ss -tlnp | grep -E ":80|:443"
Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0       128     0.0.0.0:443          0.0.0.0:*          users:(("nginx",pid=1234,fd=7))

Se a saída mostrar nginx, apache2 ou qualquer outro processo que não seja o Docker, esse serviço está impedindo o Traefik de se ligar às portas. Pare o serviço conflitante antes de iniciar o Traefik:

sudo systemctl stop nginx
sudo systemctl disable nginx

Em seguida, confirme se o container do Traefik está em execução:

docker ps --filter "name=traefik"
CONTAINER ID   IMAGE           COMMAND                  CREATED        STATUS        PORTS                                      NAMES
a1b2c3d4e5f6   traefik:v2.11   "/entrypoint.sh trae…"   2 hours ago    Up 2 hours    0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik

Se o container não aparecer ou o status for Exited, verifique os logs para identificar o erro de inicialização:

docker logs traefik --tail 50

Configurar entrypoints corretos no docker-compose.yml do Traefik

O motivo mais frequente de porta 80 recusada no Traefik é a ausência ou erro na declaração dos entrypoints. O Traefik precisa que as portas sejam mapeadas tanto na seção ports do Compose quanto nos argumentos de comando (ou no arquivo traefik.yml). Veja um exemplo funcional completo:

version: "3.8"

services:
  traefik:
    image: traefik:v2.11
    container_name: traefik
    restart: unless-stopped
    command:
      - "--api.insecure=false"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
      - "[email protected]"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
    networks:
      - proxy

networks:
  proxy:
    external: true

Pontos críticos nesta configuração:

  • --entrypoints.web.address=:80 — define o entrypoint HTTP na porta 80
  • --entrypoints.websecure.address=:443 — define o entrypoint HTTPS na porta 443
  • ports: "80:80" e "443:443" — mapeia as portas do host para o container
  • providers.docker.exposedbydefault=false — exige label explícita em cada container
  • networks: proxy (external: true) — a rede deve existir antes de subir o Compose

Crie a rede Docker antes de iniciar os serviços, caso ainda não exista:

docker network create proxy

Suba o Traefik e verifique se as portas foram abertas corretamente:

docker compose up -d traefik
ss -tlnp | grep -E ":80|:443"
tcp    LISTEN  0  128  0.0.0.0:80   0.0.0.0:*  users:(("docker-proxy",pid=5678,fd=4))
tcp    LISTEN  0  128  0.0.0.0:443  0.0.0.0:*  users:(("docker-proxy",pid=5679,fd=4))

Configurar labels nos containers de backend para roteamento correto

Mesmo com o Traefik escutando nas portas corretas, o roteamento de containers Docker falha se as labels estiverem ausentes ou com erros de sintaxe. Cada container de backend precisa declarar explicitamente as regras de roteamento. Veja um exemplo com uma aplicação Node.js:

services:
  minha-app:
    image: node:20-alpine
    container_name: minha-app
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.minha-app.rule=Host(`meudominio.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=3000"
      - "traefik.http.routers.minha-app-http.rule=Host(`meudominio.com.br`)"
      - "traefik.http.routers.minha-app-http.entrypoints=web"
      - "traefik.http.routers.minha-app-http.middlewares=redirect-https"
      - "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"
      - "traefik.http.middlewares.redirect-https.redirectscheme.permanent=true"
    networks:
      - proxy

networks:
  proxy:
    external: true

Labels obrigatórias e o que cada uma faz:

  • traefik.enable=true — ativa o Traefik para este container (obrigatório quando exposedbydefault=false)
  • traefik.http.routers.[nome].rule — define a regra de roteamento (domínio, path, etc.)
  • traefik.http.routers.[nome].entrypoints — vincula o router ao entrypoint correto
  • traefik.http.services.[nome].loadbalancer.server.port — porta interna do container
  • traefik.http.middlewares.redirect-https — redireciona HTTP para HTTPS automaticamente

Após aplicar as labels, reinicie o container e verifique se o Traefik detectou o novo router:

docker compose up -d minha-app
docker logs traefik --tail 20 | grep "minha-app"

Forçar HTTPS e redirecionar HTTP para HTTPS no Traefik v2

O redirecionamento HTTP para HTTPS no Traefik é feito via middleware redirectscheme. Diferente do Nginx, onde você edita blocos de servidor, no Traefik toda a lógica fica nas labels do container ou em arquivos de configuração dinâmica. O exemplo acima já inclui o middleware de redirecionamento. Para aplicá-lo globalmente a todos os containers, adicione ao arquivo estático traefik.yml:

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
          permanent: true
  websecure:
    address: ":443"

certificatesResolvers:
  letsencrypt:
    acme:
      email: [email protected]
      storage: /letsencrypt/acme.json
      tlsChallenge: {}

providers:
  docker:
    exposedByDefault: false

api:
  insecure: false

Com esta configuração no arquivo estático, qualquer requisição HTTP na porta 80 é automaticamente redirecionada para HTTPS sem precisar declarar o middleware em cada container individualmente. Para saber mais sobre como redirecionar HTTP para HTTPS, consulte também como redirecionar um site HTTP para HTTPS.

Reinicie o Traefik para aplicar as alterações no arquivo estático:

docker compose restart traefik

Verificar firewall e regras de iptables que bloqueiam as portas

Mesmo com o Traefik configurado corretamente, o firewall do servidor pode estar bloqueando as conexões externas nas portas 80 e 443. No Ubuntu 24.04 com UFW ativo, verifique e libere as portas:

sudo ufw status verbose
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     DENY IN     Anywhere
443/tcp                    DENY IN     Anywhere

Se as portas estiverem bloqueadas, libere-as:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

No Rocky Linux 9 ou AlmaLinux 9 com firewalld:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
cockpit dhcpv6-client http https ssh

Verifique também se há regras de iptables inseridas diretamente que possam estar bloqueando o tráfego Docker:

sudo iptables -L DOCKER-USER -n -v

Atenção: Nunca execute iptables -F em produção sem entender todas as regras ativas, pois isso pode remover proteções críticas e expor o servidor.

Problemas comuns e como resolver

Sintoma: Traefik inicia mas porta 80 continua recusando conexão

Causa: O container Traefik subiu, mas a seção ports do docker-compose.yml não foi declarada ou está com sintaxe incorreta (por exemplo, usando aspas simples em vez de duplas, ou omitindo o mapeamento host:container).
Solução: Confirme que o arquivo Compose contém exatamente - "80:80" e - "443:443" na seção ports do serviço Traefik. Após corrigir, execute docker compose down && docker compose up -d para recriar o container com o mapeamento correto.

Sintoma: Container de backend não recebe tráfego mesmo com Traefik ativo

Causa: O container de backend está em uma rede Docker diferente da rede onde o Traefik opera. O Traefik só consegue rotear tráfego para containers que compartilham a mesma rede Docker.
Solução: Adicione a rede proxy (ou o nome da rede do Traefik) ao container de backend no Compose e confirme que a rede está declarada como external: true. Execute docker network inspect proxy para listar os containers conectados e verificar se o backend aparece na lista.

Sintoma: Certificado Let's Encrypt não é emitido e HTTPS falha

Causa: O arquivo acme.json não existe ou tem permissões incorretas. O Traefik exige que este arquivo tenha permissão 600 para armazenar os certificados com segurança.
Solução: Crie o arquivo e ajuste as permissões antes de iniciar o Traefik:

touch ./letsencrypt/acme.json
chmod 600 ./letsencrypt/acme.json

Após isso, reinicie o Traefik e monitore os logs para confirmar a emissão do certificado: docker logs traefik -f | grep -i "acme\|certificate".

Sintoma: Dashboard do Traefik na porta 8080 não abre

Causa: O dashboard não foi habilitado nos argumentos de comando, ou a porta 8080 não foi mapeada no Compose, ou --api.insecure=false está ativo sem um router configurado para expor o dashboard via HTTPS.
Solução: Para acesso local seguro via túnel SSH, não mapeie a porta 8080 publicamente. Adicione --api.dashboard=true e --api.insecure=true apenas em ambiente de desenvolvimento, e acesse via ssh -L 8080:localhost:8080 usuario@servidor seguido de http://localhost:8080 no navegador local.

Sintoma: Erro "bind: address already in use" ao iniciar o Traefik

Causa: Outro processo (Apache, Nginx, ou uma instância anterior do Traefik) ainda está ocupando a porta 80 ou 443 no host.
Solução: Identifique o processo com ss -tlnp | grep -E ":80|:443", pare o serviço conflitante com sudo systemctl stop [servico] e, se necessário, desative-o com sudo systemctl disable [servico]. Depois, suba o Traefik novamente.

Perguntas frequentes sobre Traefik porta 80 e 443

Por que o Traefik recusa conexão na porta 80 mesmo com o container rodando?

O Traefik pode estar rodando, mas sem o entrypoint correto mapeado no docker-compose.yml. Verifique se as portas 80 e 443 estão declaradas na seção ports do serviço Traefik e se o entrypoint web aponta para :80. Outro motivo comum é outro processo (como Apache ou Nginx) ocupando a porta antes do Traefik iniciar — use ss -tlnp | grep :80 para confirmar qual processo está vinculado à porta.

Como verificar se o Traefik está realmente escutando nas portas 80 e 443?

Execute ss -tlnp | grep -E "80|443" no host para listar processos escutando nessas portas. Se o Traefik estiver ativo, você verá o PID do processo Docker associado (geralmente identificado como docker-proxy). Também é possível acessar o dashboard do Traefik na porta 8080 (se habilitado) para confirmar os entrypoints ativos e os routers registrados.

O Traefik sobe mas os containers de backend não recebem tráfego — o que verificar?

Confirme que os containers de backend estão na mesma rede Docker que o Traefik (geralmente uma rede do tipo bridge declarada como externa). Verifique também se as labels do container estão corretas: traefik.enable=true, o router com a regra de Host e o service apontando para a porta interna correta. Use docker network inspect proxy para listar todos os containers conectados à rede do Traefik.

Como forçar HTTPS e redirecionar HTTP para HTTPS no Traefik v2?

No Traefik v2, crie um middleware de redirecionamento com a label traefik.http.middlewares.redirect-https.redirectscheme.scheme=https e aplique-o ao router HTTP do container. O router HTTPS deve usar o resolver de certificado Let's Encrypt configurado no arquivo estático do Traefik (traefik.yml ou flags de comando). Alternativamente, configure o redirecionamento global diretamente no entrypoint web no arquivo estático para aplicar a todos os containers automaticamente.

É seguro expor o dashboard do Traefik na porta 8080 em produção?

Não é recomendado expor o dashboard sem autenticação em produção. O ideal é habilitar o dashboard apenas em localhost (--api.insecure=false) e acessá-lo via túnel SSH, ou protegê-lo com middleware de autenticação básica (basicAuth) e restringir o acesso por IP usando o middleware IPWhiteList do Traefik. Expor o dashboard publicamente sem proteção revela informações sobre todos os serviços roteados.

Conclusão

  • Diagnostique primeiro: use ss -tlnp | grep -E ":80|:443" e docker logs traefik para identificar se o problema é porta ocupada, entrypoint ausente ou container parado antes de fazer qualquer alteração.
  • Valide a configuração completa: entrypoints no arquivo estático, mapeamento de portas no Compose, rede Docker compartilhada e labels corretas nos containers de backend são os quatro pilares de um Traefik funcional.
  • Proteja o ambiente de produção: desative o dashboard público, use acme.json com permissão 600, configure redirecionamento HTTPS global e restrinja o acesso ao socket Docker com :ro no volume.

Leia também

Precisa de ajuda com Traefik e containers Docker no seu servidor?

Configurar proxy reverso com Traefik exige um ambiente Linux estável, com recursos suficientes para rodar múltiplos containers simultaneamente. Um VPS com suporte a Docker e rede configurável é o ponto de partida ideal para esse tipo de infraestrutura.

Conheça os planos de VPS da AviraHost e comece sua infraestrutura com Docker hoje

  • 0 Os usuários acharam isso útil
  • Traefik, Docker, proxy-reverso, containers, AviraHost
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...