WireHole 是一个 docker-compose 项目,它结合了 WireGuard、PiHole 和 Unbound,创建了一个易于部署和管理的全隧道或分流 VPN。此配置允许通过 PiHole 实现广告拦截的 VPN,并通过 Unbound 增强 DNS 隐私和缓存。
👤 Devin Stokes
欢迎贡献、报告问题和提出功能请求!请随时查看问题页面。
如果这个项目对你有帮助,请给它一个 ⭐!
该镜像支持多种架构,如 x86-64、arm64 和 armhf。linuxserver/wireguard 镜像会自动为你的架构选择正确的镜像。
此镜像支持的架构为:
| 架构 | 标签 |
|---|---|
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
要开始使用 WireHole,请克隆仓库并启动容器:
#!/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
记得在 .env 文件中为 WGUI_SESSION_SECRET、WGUI_PASSWORD 和 WEBPASSWORD 设置安全密码。
.env 文件包含一系列环境变量,这些变量对于在 Docker 容器中配置 WireHole 服务至关重要。以下是每个变量的详细说明:
TIMEZONE:设置所有服务的时区。对于日志记录和基于时间的操作很重要。示例:America/Los_Angeles。PUID 和 PGID:确保服务具有正确的权限来访问和修改主机系统上的文件。它们应与主机用户的用户 ID 和组 ID 匹配。UNBOUND_IPV4_ADDRESS:分配给 Unbound 的静态 IP 地址,确保 Pi-hole 能够访问它。PIHOLE_IPV4_ADDRESS:分配给 Pi-hole 的静态 IP 地址,使其能够为网络提供 DNS 请求服务。WIREGUARD_SERVER_PORT:WireGuard 服务器监听连接的端口。WIREGUARD_PEER_DNS:WireGuard 客户端将使用的 DNS 服务器,通常设置为 Pi-hole 的地址。WIREGUARD_PEERS:指定要为 WireGuard 生成的 peer/客户端配置数量。WGUI_SESSION_SECRET:用于加密 WireGuard-UI 会话数据的密钥。应设置为安全的随机值。WGUI_USERNAME 和 WGUI_PASSWORD:访问 WireGuard-UI 界面的凭据。WGUI_MANAGE_START:如果设置为 true,WireGuard-UI 将管理 WireGuard 服务的启动。WGUI_MANAGE_RESTART:如果设置为 true,WireGuard-UI 将管理 WireGuard 服务的重启。WEBPASSWORD:访问 Pi-hole Web 界面的密码。应设置为安全值以防止未经授权的访问。PIHOLE_DNS:Pi-hole 用于解析 DNS 查询的 Unbound 服务器的 IP 地址。在部署服务之前,记得将任何默认或占位值替换为安全、唯一的值。
对于分流隧道 VPN,将 WireGuard 客户端的 AllowedIps 配置为 10.2.0.0/24,这将仅通过 VPN 路由网页面板和 DNS 流量。
通过 WireGuard-UI 管理你的 WireGuard VPN:
http://{YOUR_SERVER_IP}:5000
使用你在 .env 文件中设置的 WGUI_USERNAME 和 WGUI_PASSWORD 登录。
连接到 WireGuard 并访问 Pi-hole 管理面板 http://10.2.0.100/admin。登录密码是在 .env 文件中设置为 WEBPASSWORD 的密码。
通过在 .env 文件中将 WG_HOST 设置为你的 DDNS URL 来配置 DDNS。
wireguard:
environment:
- WG_HOST=my.ddns.net
在此处解释 .env 文件中的所有环境变量。(参考上一节,我们为每个变量提供了说明表格。)
讨论任何其他设置,例如 Docker secrets、umask 设置、用户/组标识符、添加客户端、修改 DNS 提供商以及网络注意事项。确保更新所有说明以匹配当前设置。
提供有关如何在容器运行时访问 shell、查看日志、更新容器以及处理常见问题的信息。确保所有命令和步骤已更新以反映当前版本和实践。
感谢 LinuxServer.io 维护 Wireguard 镜像以及对该项目的其他贡献。