Como configurar um nome de domínio personalizado para o Jitsi Meet no Docker

O caminho mais curto para um domínio personalizado para o Jitsi Meet Docker é apontar um nome de host DNS para o host Docker, definir PUBLIC_URLo URL HTTPS final, configurar o TLS confiável para esse mesmo nome de host e garantir que a mídia WebRTC ainda possa alcançar o Jitsi Videobridge. Para uma instalação diretamente voltada para a Internet, a configuração oficial do Docker oferece suporte à automação de certificados integrada por meio de `--configure` ENABLE_LETSENCRYPT, LETSENCRYPT_DOMAIN`--configure` e `--configure` LETSENCRYPT_EMAIL.

Este guia usa meet.example.comcomo exemplo concreto e pressupõe o projeto padrão docker-jitsi-meet . Substitua o nome do host, o endereço de e-mail e o endereço IP (somente para documentação) de exemplo pelos seus próprios valores. A configuração descrita aqui foi verificada em relação ao manual oficial do Jitsi Docker e à versão atual do projeto env.exampleem 7 de outubro de 2026.

O que você precisa antes de alterar o domínio.

Um domínio personalizado funciona melhor quando o nome do host é definido antes de solicitar um certificado. Por exemplo, se os usuários devem acessar `example.com` https://meet.example.com, o DNS, PUBLIC_URLo certificado TLS e o próprio domínio devem usar ` example.com` meet.example.com. Misturar `example.com` jitsi.example.comem um lugar e ` meet.example.comexample.com` em outro é uma causa comum de avisos de certificado ou redirecionamentos para o host errado.

  • Um domínio que você controla.
  • Um servidor com Docker Engine e Docker Compose.
  • Um endereço IP público ou um proxy reverso que já possua as portas 80 e 443.
  • Acesso via firewall para as portas web e tráfego de mídia do Jitsi.
  • O docker-jitsi-meetdiretório existente e seu .envarquivo.

O manual oficial do Jitsi Docker afirma que PUBLIC_URLo domínio deve ser configurado para um ambiente de produção. Ele também documenta as portas 80/TCP, 443/TCP e 10000/UDP como as principais portas externas para a configuração direta padrão. Consulte o guia de auto-hospedagem do Jitsi Docker .

Passo 1: Aponte o nome de host personalizado para o servidor Jitsi.

Crie um registro A para o nome de host que você deseja usar. Neste exemplo, meet.example.comele aponta para o endereço IPv4 público do servidor. Se o seu servidor tiver conectividade IPv6 estável, você também pode adicionar um registro AAAA que aponte para o endereço IPv6 público dele.

Type: A
Name: meet
Value: YOUR_PUBLIC_IPV4
TTL: 300

Não copie 203.0.113.10a ilustração para uma implementação real; esse endereço é reservado para documentação. Se você usa um provedor de DNS com modo proxy/CDN, comece com a resolução DNS comum, a menos que tenha confirmado que o proxy suporta o padrão de tráfego do Jitsi que você pretende usar.

Tela de gerenciamento de DNS com um registro A para meet.example.com apontando para um endereço IP do servidor.
Exemplo de configuração de DNS para o subdomínio meet. Substitua o endereço ilustrado pelo IP público real do seu host Jitsi.

Etapa 2: Defina os valores de PUBLIC_URL e HTTPS no arquivo .env.

Abra o .envarquivo no diretório onde você clonou ou extraiu o Jitsi docker-jitsi-meet. Para uma implantação direta em que o contêiner web do Jitsi ficará escutando publicamente nas portas 80 e 443, as configurações importantes são:

PUBLIC_URL=https://meet.example.com
HTTP_PORT=80
HTTPS_PORT=443
ENABLE_HTTP_REDIRECT=1
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.example.com
LETSENCRYPT_EMAIL=admin@example.com
LETSENCRYPT_ACME_SERVER=letsencrypt

PUBLIC_URLNão é apenas uma questão estética. O Jitsi usa isso ao construir uma configuração eficaz, portanto, deixá-lo em localhost ou em um nome de host antigo pode gerar links quebrados e comportamento inconsistente. O exemplo de projeto atual também observa que, se você usar deliberadamente uma porta HTTPS não padrão, essa porta deve estar em PUBLIC_URL.

O exemplo oficial identifica atualmente o ZeroSSL como o servidor ACME padrão e permite o uso LETSENCRYPT_ACME_SERVER="letsencrypt"do Let's Encrypt quando você o deseja especificamente. Se a sua instalação atual já obtém um certificado confiável com sucesso, mantenha a configuração ACME que corresponde ao seu ambiente de trabalho, em vez de trocar de provedor sem um motivo.

Editor de terminal mostrando as variáveis ​​PUBLIC_URL, HTTP_PORT, HTTPS_PORT e Let's Encrypt para meet.example.com
Os valores principais do arquivo .env devem usar o mesmo nome de host público que os usuários digitarão em seus navegadores.

Passo 3: Abra as portas de firewall necessárias.

Para a implantação do Docker com acesso direto à Internet descrita acima, permita as portas 80/TCP, 443/TCP e 10000/UDP. Mantenha também a porta de gerenciamento SSH aberta. Em um host Ubuntu usando UFW, um exemplo mínimo é:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw status verbose

As portas web servem o site e o desafio de certificado. UDP 10000 é a porta de mídia padrão do Jitsi Videobridge. Uma página pode carregar perfeitamente, mas as reuniões podem falhar ou perder áudio/vídeo se a porta de mídia estiver bloqueada; portanto, verificar apenas o HTTPS não é suficiente.

Se o seu host estiver atrás de um NAT, consulte também JVB_ADVERTISE_IPSa variável `<nome_da_variável>`. O manual oficial explica que essa variável controla o endereço que o Jitsi Videobridge anuncia para a mídia e é necessária em muitas implantações de LAN ou NAT. Um exemplo típico na Internet pública é:

JVB_ADVERTISE_IPS=YOUR_PUBLIC_IPV4
Terminal mostrando as regras do UFW permitindo as portas TCP 80 e 443 e a porta UDP 10000.
A verificação do firewall deve incluir a porta de mídia UDP do Jitsi Videobridge, e não apenas as portas do site.

Etapa 4: Reinicie o Docker com o novo domínio.

Salve .enve, em seguida, recrie os contêineres para que as alterações de ambiente sejam aplicadas:

docker compose down
docker compose up -d
docker compose ps

Uma abordagem simples restartnão é a melhor escolha após alterar variáveis ​​de ambiente, pois a definição do contêiner existente ainda pode conter o ambiente anterior. Recriar a pilha torna PUBLIC_URLexplícitos os novos valores de porta e configurações de certificado.

Se você estiver começando com uma nova cópia do projeto, siga primeiro os passos oficiais de início rápido, incluindo a geração das senhas necessárias e a criação dos diretórios de configuração. As versões recentes do contêiner Jitsi executam os serviços como um usuário sem privilégios e exigem armazenamento gravável e diretórios temporários; portanto, uma instalação completamente nova deve seguir os comandos de diretório do manual atual, em vez de um tutorial antigo de terceiros.

Terminal do Docker Compose mostrando os contêineres Jitsi web, Prosody, Jicofo e JVB iniciados.
Após alterar o arquivo .env, recrie o ambiente e confirme se os contêineres principais do Jitsi estão em execução.

Etapa 5: Confirme o DNS e o HTTPS de fora do servidor.

Após a propagação do DNS, verifique se o nome do host é resolvido para o endereço público esperado:

dig +short meet.example.com

Em seguida, teste o endpoint HTTPS:

curl -I https://meet.example.com

Uma resposta bem-sucedida comprova que o DNS, a porta TCP 443 e o serviço web estão funcionando em conjunto. Isso ainda não comprova o funcionamento da mídia multipartidária, portanto, trata-se de uma verificação intermediária, e não da conclusão definitiva.

Se digretornar um endereço antigo, aguarde o TTL do DNS ou corrija o registro. Se o DNS estiver correto, mas curlexpirar o tempo limite, verifique os grupos de segurança na nuvem, o firewall do host, as regras do roteador/NAT e se outro serviço já está utilizando a porta 443.

O terminal está executando o comando `dig` para `meet.example.com` e `curl -I` contra seu URL HTTPS, retornando uma resposta 200.
A resolução de DNS e uma solicitação de cabeçalho HTTPS bem-sucedida fornecem uma primeira verificação rápida do nome de host personalizado.

Etapa 6: Verificar a emissão do certificado e os registros da web

Se o navegador ainda exibir um aviso de certificado, verifique os logs do contêiner web em vez de excluir repetidamente a configuração e solicitar outro certificado:

docker compose logs --tail=200 web

Procure por erros de validação ACME, falhas na vinculação de portas ou incompatibilidade de nomes de host. O manual do Jitsi alerta sobre os limites de taxa da autoridade de certificação e recomenda preservar o armazenamento de configuração que contém os certificados emitidos. Durante experimentos de configuração repetidos, o ambiente de teste pode ser útil, mas após a mudança para um ambiente de produção, o manual observa que os certificados de teste antigos podem precisar ser removidos do armazenamento da web antes de solicitar um certificado de produção.

Se você já possui um certificado confiável de outra fonte, o Jitsi também oferece suporte à montagem de uma cadeia completa de certificados e chave privada existentes no serviço web, em vez de habilitar o fluxo ACME integrado. Consulte o exemplo de montagem de certificado na seção oficial sobre certificados existentes .

Logs da web do Docker Compose mostrando uma solicitação de certificado e mensagens de inicialização do nginx para meet.example.com
Use os logs do contêiner web para diagnosticar problemas de certificado ou de inicialização do nginx em vez de solicitar novos certificados repetidamente.

Passo 7: Abra o domínio personalizado em um navegador.

Acesse https://meet.example.comem um navegador moderno. Você deverá ver a página inicial do Jitsi com o nome de host escolhido e um indicador TLS válido. Crie uma sala de teste com um nome temporário.

Use HTTPS para reuniões reais. O guia oficial do Docker alerta especificamente que o acesso HTTP direto pode causar falhas nas APIs WebRTC do navegador, como o acesso ao microfone e à câmera. Portanto, o HTTPS faz parte da configuração funcional, e não é apenas um selo de segurança.

Navegador exibindo uma página inicial do Jitsi Meet em https://meet.example.com com um campo de nome da reunião.
A página de destino deve carregar a partir do nome de host HTTPS final antes de você iniciar os testes de mídia.

Passo 8: Teste uma chamada real, não apenas a página inicial.

Se possível, tente entrar na mesma sala a partir de dois dispositivos ou redes diferentes. Confirme se cada participante consegue enviar e receber áudio e vídeo. É importante testar com dois navegadores, pois a instalação pode exibir o site corretamente mesmo que o endereço do Videobridge ou o caminho UDP ainda estejam incorretos.

Para instalações atrás de um NAT, um sintoma comum é que a primeira conexão parece normal, mas a mídia falha à medida que mais participantes se conectam. Nesse caso, verifique novamente JVB_ADVERTISE_IPSo mapeamento NAT público e a porta UDP 10000. O manual do Jitsi observa explicitamente que o endereço de mídia do Videobridge permanece relevante mesmo quando o tráfego HTTP é tratado por um proxy reverso.

Chamada do navegador Jitsi Meet em meet.example.com mostrando dois participantes e os controles da reunião.
Uma chamada bem-sucedida com dois participantes é um teste de ponta a ponta melhor do que simplesmente confirmar que a página inicial do Jitsi carrega.

Quando você deve usar um proxy reverso em vez de um proxy reverso.

A configuração direta acima é apropriada quando o contêiner web Jitsi pode utilizar as portas públicas 80 e 443. Se o mesmo servidor já estiver executando Nginx, Apache, Caddy, Traefik ou outro proxy nessas portas, não tente vincular o Jitsi a eles simultaneamente.

Para um proxy reverso no mesmo host, o guia oficial do Jitsi para Docker recomenda desabilitar o HTTPS dentro do contêiner do Jitsi, evitar a exposição pública de suas portas web internas e encaminhar as requisições para o ingress HTTP do contêiner. O proxy também deve suportar o encaminhamento de WebSocket /xmpp-websocket. Um ambiente típico do lado do Jitsi é:

DISABLE_HTTPS=1
ENABLE_HTTP_REDIRECT=0
ENABLE_LETSENCRYPT=0
PUBLIC_URL=https://meet.example.com

Em seguida, encerre o certificado confiável no seu proxy reverso. Essa é a melhor opção quando um único proxy gerencia certificados para vários aplicativos. Não há motivo para alterar o domínio visível externamente PUBLIC_URL; os usuários ainda devem ver o domínio HTTPS final.

Solução de problemas de falhas em domínios personalizados

O domínio antigo ainda aparece após editar o arquivo .env.

Recrie os contêineres com ` docker compose downcomposer update` seguido de `composer update` docker compose up -d. Verifique também se você editou o .envarquivo usado pelo projeto Compose que você está iniciando.

A validação do certificado HTTPS falhou.

Confirme se os registros DNS A/AAAA apontam para o servidor que recebe o desafio e se a porta pública 80 está acessível ao usar o fluxo de certificado direto integrado. Verifique docker compose logs webo erro ACME exato antes de fazer outra solicitação.

A página carrega, mas os participantes não têm áudio nem vídeo.

Verifique a porta UDP 10000 e, para implantações NAT, defina o valor correto JVB_ADVERTISE_IPS. Lembre-se de que o proxy reverso lida com o tráfego da web; ele não substitui o caminho de mídia do Videobridge.

O navegador funciona, mas o aplicativo móvel rejeita o servidor.

Verifique a cadeia de certificados. O manual do Jitsi Docker observa que os aplicativos móveis não funcionam com o certificado autoassinado padrão. Use um certificado publicamente confiável ou uma arquitetura de infraestrutura em que o aplicativo receba uma cadeia de certificados confiável.

Lista de verificação final

  • meet.example.comresolve-se com o endereço público pretendido.
  • PUBLIC_URL=https://meet.example.comcorresponde exatamente ao URL do navegador.
  • O certificado TLS é confiável e abrange meet.example.com.
  • As portas 80/TCP e 443/TCP estão acessíveis para configuração direta.
  • A conexão UDP 10000 chega ao host do Jitsi Videobridge.
  • JVB_ADVERTISE_IPSEstá correto quando o servidor está atrás de um NAT ou precisa de endereços anunciados explicitamente.
  • docker compose psMostra os contêineres necessários em execução.
  • Um teste com dois participantes enviou áudio e vídeo com sucesso.

Após a aprovação nessas verificações, o domínio personalizado não apenas aponta para o Jitsi, mas também é configurado para as partes que realmente importam em uma reunião real: HTTPS, sinalização e transporte de mídia.

Referências oficiais

Deixar um comentário

Corrigir o alto uso de CPU no Jitsi Meet em navegadores de clientes

Corrigir o alto uso de CPU no Jitsi Meet em navegadores de clientes

Diagnostique picos de uso da CPU no navegador do Jitsi Meet e reduza a carga do cliente verificando os mosaicos de vídeo, os efeitos da câmera, os gráficos do navegador e as configurações do host.

Como monitorar as métricas do Jitsi Videobridge com Prometheus e Grafana

Como monitorar as métricas do Jitsi Videobridge com Prometheus e Grafana

Monitore a integridade, a carga da conferência e o tráfego do Jitsi Videobridge com seu endpoint Prometheus integrado e, em seguida, explore e visualize os dados em gráficos no Grafana.

Como configurar um nome de domínio personalizado para o Jitsi Meet no Docker

Como configurar um nome de domínio personalizado para o Jitsi Meet no Docker

Configure um domínio personalizado para o Jitsi Meet Docker com DNS, URL pública, HTTPS, Let's Encrypt, portas de firewall, configurações de NAT e verificação de ponta a ponta.

Corrigir erro 404 "Console de administração do Zimbra não encontrado" após a renovação do SSL.

Corrigir erro 404 "Console de administração do Zimbra não encontrado" após a renovação do SSL.

Corrija os erros 404 do Console de Administração do Zimbra após a renovação do SSL, verificando o URL e a porta corretos, o roteamento do proxy, o status do serviço, os certificados implantados e os logs.

Corrigir aviso do Nextcloud: “O cache OP do PHP não está configurado corretamente”

Corrigir aviso do Nextcloud: “O cache OP do PHP não está configurado corretamente”

Aprenda a diagnosticar e corrigir o aviso de configuração do PHP OPcache do Nextcloud, verificando o PHP SAPI ativo, os limites de tamanho, os comentários e as configurações de revalidação.

Corrigir erros de migração do banco de dados Kopano após uma atualização da versão do MySQL

Corrigir erros de migração do banco de dados Kopano após uma atualização da versão do MySQL

Solucione problemas de falhas na migração do banco de dados Kopano após uma atualização do MySQL ou MariaDB, verificando backups, versões do servidor, modos SQL, conjunto de caracteres, estado do esquema e logs.

Como configurar a autenticação LDAP e do Active Directory no Nextcloud

Como configurar a autenticação LDAP e do Active Directory no Nextcloud

Conecte o Nextcloud ao LDAP ou Active Directory com transporte seguro, filtros de usuários e grupos, atributos de login e uma implementação testada.

Corrigir notificações do Android sem os serviços do Google: Guia UnifiedPush

Corrigir notificações do Android sem os serviços do Google: Guia UnifiedPush

Corrija as notificações do Element no Android em telefones sem serviços do Google configurando o UnifiedPush, as permissões do Android, as configurações de bateria e realizando testes de verificação confiáveis.

Corrigir o aviso do Nextcloud "Banco de dados com alguns índices ausentes"

Corrigir o aviso do Nextcloud "Banco de dados com alguns índices ausentes"

Remova o aviso de índices de banco de dados ausentes do Nextcloud com o comando oficial occ. Primeiro, faça um backup, visualize as alterações, execute o reparo e verifique o resultado.

Como configurar o Single Sign-On (SSO) com o Keycloak no Element Web

Como configurar o Single Sign-On (SSO) com o Keycloak no Element Web

Configure o SSO do Keycloak para o Element Web conectando o OIDC ao Synapse, definindo a URL de retorno de chamada exata, mapeando as declarações do usuário e testando o logout.