
WireHole é uma combinação de WireGuard, Pi-hole e Unbound num projeto docker-compose com o intuito de permitir que os usuários criem rápida e facilmente uma VPN WireGuard de túnel completo ou dividido, gerenciada pessoalmente, com capacidades de bloqueio de anúncios graças ao Pi-hole, e cache de DNS, opções adicionais de privacidade e provedores upstream via Unbound.
WireHole é um projeto docker-compose que combina WireGuard, PiHole e Unbound para criar uma VPN de túnel completo ou dividido (split-tunnel) que é fácil de implementar e gerenciar. Esta configuração permite uma VPN com bloqueio de anúncios via PiHole e privacidade DNS aprimorada e cache através do Unbound.
👤 Devin Stokes
Contribuições, problemas e solicitações de funcionalidades são bem-vindas! Sinta-se à vontade para verificar a página de issues.
Dê uma ⭐ se este projeto te ajudou!
A imagem suporta múltiplas arquiteturas como x86-64, arm64 e armhf. A imagem linuxserver/wireguard seleciona automaticamente a imagem correta para sua arquitetura.
As arquiteturas suportadas por esta imagem são:
| Architecture | Tag |
|---|---|
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
Para começar a usar o WireHole, clone o repositório e inicie os contêineres:
#!/bin/bash
# Clone the WireHole repository from GitHub
git clone https://github.com/IAmStoxe/wirehole.git
# Change directory to the cloned repository
cd wirehole
# Update the .env file with your configuration
cp .env.example .env
nano .env # Or use any text editor of your choice to edit the .env file
# Replace the public IP placeholder in the docker-compose.yml
sed -i "s/REPLACE_ME_WITH_YOUR_PUBLIC_IP/$(curl -s ifconfig.me)/g" docker-compose.yml
# Start the Docker containers
docker compose up
Lembre-se de definir senhas seguras para WGUI_SESSION_SECRET, WGUI_PASSWORD e WEBPASSWORD no seu arquivo .env.
O arquivo .env contém uma série de variáveis de ambiente que são essenciais para configurar os serviços WireHole dentro dos contêineres Docker. Aqui está uma explicação detalhada de cada variável:
TIMEZONE: Define o fuso horário para todos os serviços. É importante para registro de logs e operações baseadas em tempo. Exemplo: America/Los_Angeles.PUID e PGID: Estes garantem que os serviços tenham as permissões corretas para acessar e modificar arquivos no sistema host. Eles devem corresponder ao ID de usuário e ID de grupo do usuário host.UNBOUND_IPV4_ADDRESS: O endereço IP estático atribuído ao Unbound, garantindo que seja acessível pelo Pi-hole.PIHOLE_IPV4_ADDRESS: O endereço IP estático atribuído ao Pi-hole, permitindo que ele sirva requisições DNS para a rede.WIREGUARD_SERVER_PORT: A porta na qual o servidor WireGuard escutará por conexões.WIREGUARD_PEER_DNS: O servidor DNS que os clientes WireGuard usarão, que é tipicamente definido como o endereço do Pi-hole.WIREGUARD_PEERS: Especifica o número de configurações de pares/clientes a serem geradas para o WireGuard.WGUI_SESSION_SECRET: Uma chave secreta usada para criptografar dados de sessão para o WireGuard-UI. Deve ser definida como um valor aleatório e seguro.WGUI_USERNAME e WGUI_PASSWORD: Credenciais para acessar a interface do WireGuard-UI.WGUI_MANAGE_START: Quando definido como true, o WireGuard-UI gerenciará a inicialização do serviço WireGuard.WGUI_MANAGE_RESTART: Quando definido como true, o WireGuard-UI gerenciará a reinicialização do serviço WireGuard.WEBPASSWORD: A senha para acessar a interface web do Pi-hole. Deve ser definida como um valor seguro para evitar acesso não autorizado.PIHOLE_DNS: O endereço IP do servidor Unbound usado pelo Pi-hole para resolver consultas DNS.Lembre-se de substituir quaisquer valores padrão ou de espaço reservado por valores seguros e únicos antes de implantar seus serviços.
Para uma VPN de túnel dividido (split-tunnel), configure AllowedIps do seu cliente WireGuard para 10.2.0.0/24, que roteará apenas o painel web e o tráfego DNS através da VPN.
Gerencie sua VPN WireGuard através do WireGuard-UI em:
http://{YOUR_SERVER_IP}:5000
Faça login com o WGUI_USERNAME e WGUI_PASSWORD que você definiu no seu arquivo .env.
Conecte-se ao WireGuard e acesse o painel de administração do Pi-hole em http://10.2.0.100/admin. A senha de login é aquela definida como WEBPASSWORD no seu arquivo .env.
Configure o DDNS definindo WG_HOST no seu arquivo .env para sua URL DDNS.
wireguard:
environment:
- WG_HOST=my.ddns.net
Explique todas as variáveis de ambiente do seu arquivo .env aqui. (Consulte a seção anterior, onde fornecemos uma tabela de explicações para cada variável.)
Discuta quaisquer configurações adicionais, como secrets do Docker, configurações de umask, identificadores de usuário/grupo, adição de clientes, modificação de provedores DNS e considerações de rede. Certifique-se de atualizar quaisquer instruções para corresponder à configuração atual.
Forneça informações sobre como acessar o shell enquanto o contêiner está em execução, visualizar logs, atualizar contêineres e lidar com perguntas frequentes. Garanta que todos os comandos e etapas estejam atualizados para refletir as versões e práticas atuais.
Créditos ao LinuxServer.io pela manutenção da imagem do Wireguard e outras contribuições ao projeto.