Docker部署wg-easy教程:一键搭建WireGuard VPN服务器和Web管理界面
Docker 部署 wg-easy 教程:一键搭建 WireGuard VPN 服务器
如果你希望在 VPS 或 Linux 服务器上快速搭建一套稳定、安全、易管理的 WireGuard VPN,那么 wg-easy 是一个非常适合的选择。它将复杂的 WireGuard 配置封装成一个网页管理界面,支持新建客户端、下载配置、扫码导入和连接状态查看,适合个人使用、家庭网络、远程办公和开发环境。
本文将从零开始,详细介绍如何用 Docker 部署 wg-easy,完成服务器启动、端口开放、Web 管理界面登录以及客户端接入配置。
1. 什么是 wg-easy?
wg-easy 是一款基于 WireGuard 的 Web 管理工具,目标是让复杂的 VPN 部署变得更简单。它的主要特点包括:
- 适合 Docker 一键部署
- 用网页界面管理服务器和客户端
- 支持客户端二维码和配置文件导入
- 适合轻量级 VPN 方案和远程访问场景
- 帮你避开手工编写大量 WireGuard 配置文件
如果你想要的是“快速搭建 VPN,但又不想手动处理繁琐的配置”,wg-easy 非常适合。
2. Docker部署wg-easy前需要准备什么?
在开始 Docker 部署 wg-easy 前,确认以下条件都满足:
- 一台公网 VPS 或 Linux 服务器
- 已安装 Docker
- 服务器开放了
51820/UDP与51821/TCP - 你拥有公网 IP 或绑定了一个域名
- 你的系统支持 WireGuard 所需的网络能力
2.1 安装 Docker
如果你的服务器还没有安装 Docker,可以使用下面的方法:
1 | curl -sSL https://get.docker.com | sh |
如果你希望查看更详细的安装步骤,可以参考这篇文章:
也可以直接访问 Docker 官方文档 获取说明。
3. 生成 wg-easy 管理员密码哈希
在启动容器前,先为 Web 管理界面设置登录密码。这个步骤在 wg-easy 安装 流程里非常关键,直接决定后续是否能正常登录 wg-easy 管理界面。这里推荐使用官方自带的密码生成命令:
1 | docker run --rm -it ghcr.io/wg-easy/wg-easy wgpw 'YOUR_PASSWORD' |
将 YOUR_PASSWORD 替换成你的实际密码。执行后,命令会返回类似如下内容:
1 | PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW' |
这里得到的 PASSWORD_HASH 就是之后容器启动时需要使用的密码哈希值。你只需要保留中间那段哈希字符串即可,不需要引号。
这一步很关键:不要直接使用明文密码填写到容器参数里,否则管理页面的安全性会明显下降。
4. Docker 启动 wg-easy 容器:完整命令
下面是一条完整的 Docker 启动 wg-easy 命令,适合直接用于 VPS 或 Linux 服务器环境:
1 | docker run --detach \ |
参数说明
--name wg-easy:给容器起一个名字,便于后续管理。--env LANG=chs:界面语言设置为中文,方便使用。--env WG_HOST:填写你的公网 IP 或域名。客户端连接时会用到这个地址。--env PASSWORD_HASH:刚才生成的管理员密码哈希值。--env PORT=51821:Web 管理界面的端口。--env WG_PORT=51820:WireGuard 监听端口。--volume ~/.wg-easy:/etc/wireguard:把配置目录挂载到宿主机,确保数据持久化。--publish 51820:51820/udp:映射 WireGuard UDP 端口。--publish 51821:51821/tcp:映射管理界面端口。--cap-add NET_ADMIN和--cap-add SYS_MODULE:给容器增加网络管理权限,WireGuard 依赖这些能力。--sysctl 'net.ipv4.ip_forward=1':启用 IP 转发,保证 VPN 流量可以正常转发。--restart unless-stopped:容器异常后自动重启。
端口放行建议
如果你用的是云服务器,记得在安全组或防火墙中放行:
1 | # 示例:Ubuntu / Debian ufw |
如果不放行,外部设备就无法正常连接到 VPN 服务。
5. 访问 wg-easy Web 管理界面
容器启动成功后,打开浏览器访问:
1 | http://你的服务器公网IP:51821 |
例如:
1 | http://203.0.113.10:51821 |
输入你在之前设置的密码即可登录。
登录成功后,你会看到 wg-easy 提供的管理界面,里面支持:
- 新增客户端
- 删除客户端
- 下载
.conf配置文件 - 扫码配置移动设备
- 查看连接状态
6. 创建 WireGuard 客户端并下载配置
在 wg-easy 管理界面 中,选择“Add Client”或类似入口,然后创建一个客户端:
- 设定客户端名称
- 生成唯一密钥对
- 下载对应配置文件
- 将配置文件导入到 WireGuard 客户端
- 启用连接
如果你使用的是手机端,通常可以直接扫描二维码快速加入网络;如果你使用的是电脑端,则更推荐导入 .conf 文件。
通常这类配置中会包含:
- 服务器公钥
- 客户端私钥
- 服务器地址
- 分配的内网 IP
- 允许访问的网段
7. WireGuard 客户端配置示例
下面是一份标准的 WireGuard 客户端配置 示例,适合用于手机端、电脑端和其他支持 WireGuard 的设备:
1 | [Interface] |
说明:
Address:客户端在 VPN 内部分配的 IPEndpoint:服务器公网地址和端口AllowedIPs = 0.0.0.0/0:表示所有流量走 VPNPersistentKeepalive:用于保持 NAT 环境下的连接稳定
8. wg-easy 常见问题:连接不上、访问失败和不能上网
8.1 连接不上 VPN
这通常是下面几种原因:
- 防火墙没有放行 51820/UDP
- 服务器没有开启 IP 转发
- Docker 容器没有正常启动
- 客户端配置中的
Endpoint地址不正确
可以先检查容器状态:
1 | docker ps -a |
如果看到相关报错信息,通常能直接定位问题。
8.2 网页访问失败
确认以下几点:
51821/TCP已放行- 容器处于运行状态
- 服务器绑定了正确的公网 IP 或域名
- 你访问的是
http://IP:51821,不是https://或错误端口
8.3 配置文件导入后不能连网
这通常是 DNS 或路由规则没有正常工作。请确认:
AllowedIPs设置正确- 服务器端已开启 IP 转发
- 客户端设备已启用 WireGuard 连接
- 你是否需要挂载内网网段或特定访问路由
9. wg-easy 部署后的优化建议
如果你打算长期稳定运行 wg-easy,建议注意以下几点:
- 将配置目录挂载到宿主机持久目录,如
~/.wg-easy - 使用域名替代裸 IP,避免更换服务器后客户端重新配置
- 配置 Nginx 或 Caddy 做反向代理,以便实现 HTTPS 访问
- 定期备份 WireGuard 配置目录
- 使用强密码并定期更新镜像,避免版本过旧造成安全风险
10. 总结
使用 Docker 部署 wg-easy,可以在较短时间内搭建起一套简单、可管理、适合日常使用的 WireGuard VPN 服务器。它适合需要快速实现远程访问、家庭网络穿透和分流代理的场景,尤其适合不想手动维护复杂 WireGuard 配置的用户。
如果你已经完成服务搭建,下一步就是在手机或电脑端导入生成的配置文件,测试客户端连接是否正常。
