Divulgação de afiliados — Este guia contém links para a Contabo, o VPS que usamos para o nosso próprio WireGuard auto-hospedado. Se fizer uma encomenda através do nosso link, ganhamos uma comissão sem custo adicional para si. Apenas documentamos o que realmente usamos.
Executar o WireGuard em Docker oferece-lhe aquilo que torna os containers valiosos: um servidor que pode ser iniciado, desmontado, versionado e movido para outro host em minutos, sem instalar pacotes na máquina em si. A questão é que um container VPN não é um container normal — ele interage com a pilha de rede do kernel, por isso alguns parâmetros são inegociáveis. Configure-os corretamente e um WireGuard containerizado é tão rápido quanto um bare-metal. Configure-os incorretamente e o túnel conecta-se mas não encaminha nada silenciosamente.
Esta é a forma limpa e orientada para produção de o fazer.
Primeiro, o erro que as pessoas cometem sobre "WireGuard em Docker"
WireGuard é um módulo do kernel. Quando "executa o WireGuard em Docker", a encriptação e o encaminhamento ainda ocorrem no kernel Linux do host — o container apenas transporta as ferramentas de espaço de utilizador (wg, wg-quick) e a sua configuração. É por isso que não há penalização de desempenho: o caminho dos dados nunca entra no container.
Isso também explica os requisitos. Para criar e gerir uma interface de rede a partir de dentro de um container, esse container precisa de capacidade de rede elevada (NET_ADMIN), e o host deve estar autorizado a encaminhar pacotes (net.ipv4.ip_forward=1). Estas não são escolhas opcionais de endurecimento — sem elas, o container ou se recusa a iniciar ou surge inativo.
Escolha a sua imagem: linuxserver/wireguard vs wg-easy
Duas imagens cobrem quase todos os casos de uso:
linuxserver/wireguard— um servidor limpo e orientado por configuração. Define os pares através de variáveis de ambiente ou editando ficheiros num diretório montado/config. Gera configurações de cliente e códigos QR na primeira execução. Ideal quando deseja infraestrutura como código, muitos pares, ou para guardar a sua configuração num repositório privado.wg-easy— WireGuard mais um painel web. Crie e revogue pares a partir de um navegador, digitalize códigos QR para telemóveis, veja estatísticas de transferência ao vivo por cliente. Melhor para um punhado de dispositivos e integração rápida sem tocar na linha de comando.
Ambos são maduros e amplamente utilizados. A decisão é entre painel vs ficheiros, não qualidade.
O ficheiro docker-compose (wg-easy)
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
- WG_HOST=vpn.example.com # o domínio do seu VPS ou IP público
- PASSWORD_HASH=<bcrypt-hash> # login na interface web
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ./config:/etc/wireguard # persistência — mantenha isto no host
ports:
- "51820:51820/udp" # dados do WireGuard
- "51821:51821/tcp" # interface web (proteja este com firewall para o seu IP)
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Três linhas fazem o trabalho pesado e são os pontos de falha habituais:
cap_add: NET_ADMINpermite que o container gerencie a interfacewg0. Sem isso, o container não consegue ativar o túnel.sysctls: net.ipv4.ip_forward=1transforma a máquina num router. Sem isso, o túnel conecta-se mas nenhum tráfego o atravessa — a causa mais comum de "diz que está conectado mas nada funciona".volumes: ./configmantém as chaves e pares no host para que uma recriação não apague todos os clientes.
Exponha a porta de dados UDP publicamente; proteja a porta TCP da interface web para o seu próprio IP — nunca deixe a 51821 aberta para a internet.
A lista de verificação do host (faça isto antes de culpar o container)
Um container pode estar perfeito e ainda assim não encaminhar nada por causa da camada subjacente:
- Firewall na nuvem: abra
51820/udpno grupo de segurança do seu fornecedor, não apenas no host. Esta é a falha silenciosa número um num VPS. - Módulo do kernel do host: a maioria das distribuições modernas traz o módulo WireGuard no kernel (Linux 5.6+). Se
modprobe wireguardfalhar no host, instale os cabeçalhos do kernel — o container não pode carregar um módulo que o host não tem. - DNS para clientes: defina
WG_DEFAULT_DNSpara que os clientes não vazem consultas para qualquer resolvedor que estavam a usar. Combine isso com o nosso guia de prevenção de vazamento de DNS do WireGuard.
Quando um container é a escolha certa — e quando não é
Use Docker quando executa outros serviços na mesma máquina e quer o WireGuard isolado e reproduzível, quando deseja o painel do wg-easy, ou quando faz redeploy frequentemente entre hosts. Toda a configuração torna-se num ficheiro compose que pode versionar e mover.
Evite Docker quando o VPS não faz nada além do WireGuard. Uma instalação bare-metal apt install wireguard mais um ficheiro de configuração é mais simples, tem uma peça a menos e é trivialmente scriptável — veja os nossos modelos de configuração WireGuard e o walkthrough completo Contabo + WireGuard auto-hospedado. Para uma caixa VPN de propósito único, o container adiciona uma embalagem que não precisa.
O VPS por baixo
Containerizado ou não, o WireGuard precisa de um host com um IP público e uma ligação decente. Um pequeno VPS é suficiente — o WireGuard é leve o suficiente para que uma instância de 4–6 €/mês sature a sua porta de rede muito antes de o CPU notar. Nós usamos o nosso na Contabo pela relação preço-largura de banda:
Obtenha um VPS Contabo para o seu container WireGuard →
Para a análise completa de preço/desempenho entre fornecedores, veja o VPS mais barato para um VPN WireGuard.
A limitação honesta
Docker torna o WireGuard portátil, não mais seguro. O container partilha o kernel do host, executa-se com NET_ADMIN e é apenas tão seguro quanto o host. Não isola o WireGuard da máquina — qualquer pessoa com acesso root no host controla o túnel. Trate o container como uma conveniência de implementação, endureça o host como se o WireGuard estivesse instalado diretamente nele, e mantenha a porta da interface web fora da internet pública. Faça isso, e o WireGuard containerizado é a configuração de auto-hospedagem mais limpa que existe.
★ Datacenter GDPR em Nuremberg · ✓ IPv4 dedicado incluído · 200+ Mbps garantidos
Self-host your VPN on your own VPS → ContaboFull root access · public IPv4 · pick your region→