Solução da comunidade

Partilha de portas de aplicações do CasaOS 5000: altere a porta do anfitrião, não a porta do contentor

A June 2024 CasaOS question about MusicBrainz, HandBrake, and other apps sharing port 5000; a later reply identified changing the host port while preserving the container port.

Um utilizador do CasaOS instalou várias aplicações Web que esperavam pela porta de contentor 5000. Só era possível aceder a uma aplicação, porque vários contentores tentavam publicar a mesma porta no anfitrião Debian. Alterar ambos os lados do mapeamento fez com que algumas aplicações deixassem de responder.

A regra é simples: mantenha inalterada a porta do contentor da aplicação, a menos que a documentação da própria aplicação indique que a porta de escuta é configurável. Altere apenas a porta do anfitrião.

Leia os mapeamentos de portas do Docker da esquerda para a direita

5001:5000

Neste mapeamento, 5001 é a porta do anfitrião utilizada no navegador e 5000 é a porta onde a aplicação escuta dentro do contentor. O guia oficial de publicação de portas do Docker utiliza o mesmo modelo anfitrião-para-contentor.

Mapeie duas aplicações que utilizam a porta 5000 para portas do anfitrião diferentes

Aplicação Porta do anfitrião Porta do contentor Endereço no navegador
MusicBrainz 5001 5000 http://SERVER-IP:5001
HandBrake 5002 5000 http://SERVER-IP:5002

Cada combinação de endereço IP e porta do anfitrião tem de ser única. Vários contentores podem continuar a escutar internamente na porta 5000, porque os respetivos espaços de nomes de rede estão isolados.

Porque é que alterar a porta do contentor muitas vezes faz falhar a interface Web

Uma imagem pode iniciar o respetivo servidor Web numa porta interna fixa. Se o CasaOS mapear a porta 5001 do anfitrião para a porta 5001 do contentor, enquanto o processo continua a escutar na porta 5000, o Docker encaminha o tráfego para um socket vazio. O contentor pode parecer saudável, embora o navegador não receba qualquer resposta.

Altere a porta do contentor apenas quando a aplicação de origem disponibilizar uma definição ou variável de ambiente documentada que altere também a porta de escuta do processo.

Edite o campo correto no CasaOS

  1. Abra as definições da aplicação ou a configuração de instalação personalizada.
  2. Localize a entrada da porta que apresenta os valores do anfitrião e do contentor.
  3. Deixe o valor do contentor predefinido pela imagem.
  4. Escolha uma porta do anfitrião que esteja disponível.
  5. Guarde e recrie ou reinicie o contentor, conforme solicitado.
  6. Abra a aplicação através da nova porta do anfitrião.

Verifique antes de atribuir uma nova porta

Consulte a lista de aplicações do CasaOS ou a configuração do contentor para verificar os mapeamentos existentes. Considere também os serviços instalados diretamente no Debian, pois podem ocupar a mesma porta do anfitrião sem aparecerem como uma aplicação do CasaOS. Evite atribuir portas de infraestrutura comuns, como 22, 53, 80, 443 ou 445, a menos que compreenda o serviço existente.

A rede do anfitrião elimina esta flexibilidade

No modo de rede do anfitrião, o contentor partilha o espaço de nomes de rede do anfitrião e não pode remapear normalmente uma porta de escuta que já esteja a ser utilizada. A documentação da rede do anfitrião do Docker confirma que apenas um serviço pode associar-se a uma determinada porta do anfitrião.

Perguntas frequentes sobre conflitos de portas no CasaOS

Que número devo alterar?

Altere a porta do anfitrião, que é o primeiro número em HOST:CONTAINER.

Todas as aplicações podem utilizar a porta de contentor 5000?

Sim, se cada contentor estiver isolado e cada um publicar uma porta diferente no anfitrião.

Porque é que a aplicação foi instalada, mas não abriu?

O mapeamento pode apontar para uma porta do contentor onde a aplicação não está a escutar.