最简单、最轻量的 Linux WireGuard 部署方式!
本教程包含:
docker-compose.yml完整示例- 如何生成 wg-easy 管理面板登录密码
- 变量说明与注意事项
- Web UI 访问方式
- Nginx 反向代理示例配置
适用于所有支持 Docker 的 Linux 主机(Debian、Ubuntu、CentOS、Alpine 等)。
一、Docker Compose 配置文件
创建 docker-compose.yml:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
network_mode: bridge
restart: unless-stopped
environment:
- WG_HOST=1.2.3.4 # 服务器公网 IP 或域名
- PASSWORD_HASH=***
- WG_DEFAULT_ADDRESS=192.168.6.x
- WG_DEFAULT_DNS=223.6.6.6
- WG_ALLOWED_IPS=192.168.6.0/24
- WG_PERSISTENT_KEEPALIVE=25
volumes:
- ./config:/etc/wireguard
ports:
- "51820:51820/udp" # WireGuard 接入端口
- "51821:51821/tcp" # Web UI 管理端口
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
二、生成 wg-easy 管理后台登录密码
wg-easy 通过 Bcrypt 哈希方式保护登录密码。
使用官方镜像自带的 wgpw 工具生成哈希:
docker run --rm -it ghcr.io/wg-easy/wg-easy wgpw 'YOUR_PASSWORD'
生成结果示例:
PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW'
你的密码是:YOUR_PASSWORD
重要注意:
| 使用场景 | 是否需要引号 | $ 是否要转义 |
|---|---|---|
docker run |
必须使用 '单引号' |
不需要 |
docker-compose.yml |
每个 $ 换成 $ |
示例(适用于 docker-compose):
- PASSWORD_HASH=$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW
三、Web UI 访问方式
启动容器后,浏览器访问:
http://服务器IP:51821
即可通过 Web 面板管理 WireGuard 客户端、导出配置、扫描二维码等。
四、参数说明与常见误区
WG_DEFAULT_ADDRESS=192.168.6.x
x是自动递增分配,不是只能一个客户端- 所有客户端都在
192.168.6.0/24中自动分配地址
WG_ALLOWED_IPS=192.168.6.0/24
表示默认客户端仅访问 WireGuard 内网,如你希望:
- 全流量走 VPN → 改为
0.0.0.0/0 - IPv6 全流量 → 追加
, ::/0
WG_HOST
可填写以下任意一种:
- 公网 IPv4
- 公网 IPv6
- 你自己的域名(推荐)
五、Nginx 反向代理(HTTPS Web UI)
如果希望通过域名访问 Web UI,可使用 Nginx 反代:
server {
server_name wg-easy.myhomelab.com;
location / {
proxy_pass http://wg-easy:51821/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
建议配合 Let’s Encrypt 添加 HTTPS。
六、启动并检查容器
启动 wg-easy
docker-compose up -d
查看运行状态
docker ps
查看日志
docker logs -f wg-easy
至此,你的 WireGuard Easy 已成功搭建!
你现在拥有:
- 自动生成客户端配置
- Web UI 图形化管理
- 自动 NAT、自动防火墙规则
- 支持多客户端动态分配 IP
- 支持 HTTPS 反代访问