Solução da comunidade

Encaminhe as aplicações do ZimaOS através de uma VPN com o Gluetun

A ZimaOS user looking for WireGuard client mode discovered Gluetun as the practical Docker VPN-client path. Later replies worked through qBittorrent routing, shared network namespaces, and port conflicts.

Se quiser que aplicações selecionadas do ZimaOS enviem o respetivo tráfego através de uma VPN comercial, o tópico da comunidade aponta para o Gluetun, em vez de tratar a entrada do WireGuard na App Store como uma simples interface para carregar a configuração do cliente. O autor original perguntou inicialmente como executar o WireGuard como cliente, mas encontrou depois o Gluetun no ZimaOS e documentou a abordagem baseada na rede Docker.

O princípio fundamental é que a aplicação-alvo partilha o namespace de rede do Gluetun. O Gluetun gere o túnel VPN, a firewall e as portas publicadas; o qBittorrent ou outra aplicação utiliza depois essa stack de rede, em vez da sua interface bridge normal.

O WireGuard e o Tailscale na App Store do ZimaOS não são o mesmo que um cliente de VPN de um fornecedor

Zima-Giorgio respondeu que o WireGuard e o Tailscale estavam disponíveis na App Store. O autor esclareceu então o que faltava: pretendia um fluxo de trabalho de cliente em que fosse possível importar uma configuração de fornecedor e utilizá-la para encaminhar o tráfego das aplicações.

Essa distinção é importante. O Tailscale e um endpoint WireGuard autoalojado são úteis para redes privadas de acesso remoto, enquanto o Gluetun foi concebido especificamente para ligar cargas de trabalho Docker através de fornecedores de VPN comerciais compatíveis, utilizando OpenVPN ou WireGuard.

A descoberta do Gluetun no tópico original

Mais tarde, o autor escreveu que o ZimaOS incluía o Gluetun, embora procurá-lo na App Store pelo termo genérico “VPN” não o tornasse evidente.

O conselho original era alterar a rede da aplicação encaminhada, passando do modo bridge normal para o namespace de rede do Gluetun, e remover as portas publicadas pela própria aplicação, uma vez que deve ser o Gluetun a publicá-las.

network_mode: container:gluetun

Essa sintaxe é válida quando um contentor externo se junta, pelo nome, a um contentor Gluetun já em execução.

service:gluetun vs container:gluetun

A documentação atual do Gluetun distingue dois casos comuns do Compose:

# Mesmo projeto Compose
network_mode: "service:gluetun"

e:

# Projeto Compose separado / contentor externo
network_mode: "container:gluetun"

Ambas as formas surgiram conceptualmente na discussão da comunidade. A correta depende de o Gluetun e a aplicação encaminhada estarem na mesma stack do Compose.

Guia atual de configuração da rede do contentor Gluetun

Porque é que o qBittorrent pode continuar a revelar o IP do ISP

Um utilizador posterior relatou que o próprio Gluetun apresentava um IP da NordVPN nos registos, mas o qBittorrent continuava a parecer utilizar o endereço do ISP quando testado. Esse sintoma significa que “o Gluetun está ligado” e que “o qBittorrent está realmente a partilhar a pilha de rede do Gluetun” têm de ser testados separadamente.

Verifique a definição do contentor qBittorrent e confirme que o seu modo de rede está realmente ligado ao Gluetun. Uma interface bridge normal juntamente com o Gluetun pode fazer com que o qBittorrent utilize a rota normal do anfitrião.

Mova as portas do qBittorrent para o contentor Gluetun

A documentação atual do Gluetun indica que, quando outro contentor partilha a sua pilha de rede, as portas da aplicação-alvo devem ser publicadas no Gluetun.

Por exemplo, se o qBittorrent escutar internamente na porta 8080:

services:
  gluetun:
    image: qmcgaw/gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - "8080:8080"

  qbittorrent:
    image: your-qbittorrent-image
    network_mode: "service:gluetun"

Não publique a mesma porta do qBittorrent em ambos os contentores. Isso cria os conflitos de portas descritos no tópico de origem.

Guia de mapeamento de portas do Gluetun

O vídeo referido no tópico da comunidade

Um participante posterior afirmou explicitamente que seguiu o vídeo do DB Tech sobre o CasaOS enquanto tentava encaminhar o qBittorrent através do Gluetun. Como esse vídeo faz parte do percurso de resolução de problemas do tópico de origem, é preservado aqui.

O vídeo é anterior ao tópico do ZimaOS e utiliza o CasaOS, por isso deve ser usado para compreender a arquitetura Docker/Gluetun, em vez de copiar literalmente todos os passos da interface.

Um utilizador posterior confirmou que uma pilha Compose personalizada funcionava

Em novembro de 2025, outro membro da comunidade afirmou que a solução fiável era implementar o qBittorrent e o Gluetun juntos como uma aplicação personalizada/pilha Compose e configurar aí o fornecedor de VPN. Relatou que, ao aceder ao qBittorrent através da porta escolhida no anfitrião, o tráfego passou a ser encaminhado pela VPN.

O tópico de origem inclui uma ligação para um Gist criado por um utilizador para essa configuração. Trate os ficheiros Compose de terceiros como exemplos: reveja as variáveis de ambiente, as versões das imagens, os segredos e as definições de rede antes de os implementar.

O Gluetun fornece um interruptor de segurança da VPN

A documentação atual do Gluetun descreve a sua firewall como um interruptor de segurança: quando o caminho da VPN está indisponível, a firewall bloqueia o tráfego que não deveria sair pela interface normal. Esta é uma das razões pelas quais partilhar a pilha de rede do Gluetun é preferível a simplesmente iniciar um contentor VPN ao lado do qBittorrent.

Não desative as regras de firewall do Gluetun apenas para tornar uma porta acessível. Corrija antes as rotas LAN/de saída pretendidas.

Permitir deliberadamente o acesso à LAN

Se a aplicação encaminhada precisar de aceder a sub-redes locais, o Gluetun suporta FIREWALL_OUTBOUND_SUBNETSPor exemplo:

FIREWALL_OUTBOUND_SUBNETS=192.168.1.0/24

Utilize a sua sub-rede LAN real e evite sobrepô-la ao intervalo do túnel VPN.

O encaminhamento de portas do fornecedor VPN é diferente do mapeamento de portas do Docker

A documentação do Gluetun distingue:

  • Publicação de portas do Docker: disponibilização da WebUI do qBittorrent na sua LAN.
  • Encaminhamento de portas do fornecedor VPN: obtenção de uma porta de entrada junto de um fornecedor VPN que o suporte.

Não ative VPN_PORT_FORWARDING apenas para corrigir o acesso local à WebUI do qBittorrent. Resolvem problemas diferentes.

Lista de verificação do Gluetun no ZimaOS

  1. Configure o Gluetun para o seu fornecedor de VPN efetivo, utilizando a documentação atual do fornecedor.
  2. Confirme que os registos do Gluetun mostram o IP de saída VPN esperado.
  3. Coloque a aplicação de destino no espaço de nomes de rede do Gluetun.
  4. Utilize serviço:gluetun para a mesma stack Compose ou contentor:gluetun para um contentor externo.
  5. Remova as portas publicadas duplicadas da aplicação encaminhada.
  6. Publique as portas necessárias da WebUI/escuta no Gluetun.
  7. Reinicie a stack.
  8. Teste o IP público da aplicação de destino de forma independente do próprio registo do Gluetun.
  9. Mantenha as credenciais da VPN e as chaves privadas WireGuard fora dos ficheiros Compose públicos.

Perguntas frequentes sobre o cliente VPN do ZimaOS

O ZimaOS consegue encaminhar apenas o qBittorrent através de uma VPN?

Sim. O tópico da comunidade utilizou especificamente o Gluetun para partilhar a pilha de rede VPN com aplicações Docker selecionadas, em vez de criar um túnel para todos os serviços ZimaOS.

Porque é que o Gluetun mostrou o IP da VPN enquanto o qBittorrent continuou a mostrar o IP do ISP?

Porque o contentor VPN pode estar saudável enquanto o qBittorrent continua ligado à sua rede normal. Verifique o modo de rede efetivo do qBittorrent.

Porque é que alterar as portas faz com que a WebUI do qBittorrent deixe de funcionar?

Quando o qBittorrent partilha o espaço de nomes de rede do Gluetun, publique a porta da WebUI no Gluetun em vez de publicar a mesma porta no qBittorrent.

Devo utilizar serviço:gluetun ou contentor:gluetun?

Utilize serviço:gluetun quando ambos os serviços estão no mesmo projeto Compose. Utilize contentor:gluetun quando um contentor externo se junta a um contentor Gluetun com nome.