wg-easy:最简单的 WireGuard 自建 VPN 方案
前言
想自己搭一个 VPN,但被各种配置文件、密钥对、防火墙规则劝退?wg-easy 就是为此而生的。它把 WireGuard 的部署、客户端管理、密钥生成全部封装进一个带 Web UI 的 Docker 容器里,让你点几下鼠标就能添加客户端、扫码连接。
本文介绍 wg-easy 是什么,以及如何用 Docker 一键部署。
一、什么是 wg-easy?
wg-easy 是一个开源项目,定位是 「The easiest way to run WireGuard VPN + Web-based Admin UI」。
WireGuard 本身是目前最先进的 VPN 协议之一:
快:内核级实现,性能远超 OpenVPN / IPSec
简洁:代码量只有几千行,攻击面小
现代:使用 Curve25519、ChaCha20、Poly1305 等现代加密算法
但 WireGuard 原生只提供命令行,手动管理多个客户端的密钥和配置非常繁琐。wg-easy 在它之上加了一层易用的管理界面。
核心特性
二、准备工作
部署前你需要:
一台拥有公网 IP 的服务器(VPS / 云主机均可)
已安装 Docker 和 Docker Compose
在云厂商安全组 / 防火墙放行端口:
51820/UDP:WireGuard 数据端口51821/TCP:Web 管理界面端口
💡 如果你还没装 Docker,可以一行命令搞定:
curl -fsSL https://get.docker.com | sh
三、Docker Compose 部署
说明:wg-easy 在 v15 版本对配置方式做了较大改动——不再用环境变量预设密码,而是首次访问 Web 界面时通过「安装向导」创建管理员账号。下面给出新版(推荐)和旧版(v14)两种方式。
方式 A:v15+(推荐,最新版)
创建 docker-compose.yml:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
restart: unless-stopped
environment:
# 关闭则可用 IP 访问,开启需配置域名
- INSECURE=true
volumes:
- ./etc_wireguard:/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
启动:
docker compose up -d
然后浏览器访问 http://你的服务器IP:51821,按照向导设置管理员用户名和密码即可。
方式 B:v14(经典版,环境变量配置)
如果你偏好用环境变量一次性配置好,可以用 v14:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:14
container_name: wg-easy
restart: unless-stopped
environment:
# 你的服务器公网 IP 或域名
- WG_HOST=你的服务器IP
# 后台登录密码的哈希值(见下方说明)
- PASSWORD_HASH=$$2a$$12$$xxxxxxxxxxxxxxxxxxxx
- WG_PORT=51820
- WG_DEFAULT_DNS=1.1.1.1
- LANG=zh
volumes:
- ./etc_wireguard:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
生成密码哈希(v14 需要):
docker run --rm ghcr.io/wg-easy/wg-easy:14 wgpw "你的密码"
把输出的哈希填入 PASSWORD_HASH。注意在 docker-compose.yml 里要把 $ 转义成 $$。
四、添加客户端
登录后台
http://你的服务器IP:51821点击右上角 「New Client / 新建客户端」,输入名字
客户端创建后,有两种导入方式:
手机:用 WireGuard App 扫描二维码
电脑:下载
.conf文件,导入 WireGuard 客户端
WireGuard 官方客户端下载:wireguard.com/install
五、常见问题
Q:连上了但无法上网? 检查服务器是否开启了 IP 转发,以及 docker-compose.yml 里的 sysctls 是否生效。云服务器还要确认安全组放行了 51820/UDP。
Q:Web 界面打不开? 确认 51821/TCP 端口已放行,且容器正常运行:docker compose logs -f。
Q:数据会丢吗? 所有配置都持久化在 ./etc_wireguard 目录,备份这个目录即可。
Q:如何升级?
docker compose pull
docker compose up -d
六、安全建议
不要把
51821管理端口直接暴露在公网,建议用 Nginx 反代 + HTTPS,或只在内网/经 SSH 隧道访问使用强密码
定期更新镜像版本,修补安全漏洞
结语
wg-easy 把原本需要敲一堆命令的 WireGuard,变成了「点点鼠标」的事。无论是给自己科学上网、远程访问家里 NAS,还是给团队搭内网,它都是性价比极高的选择。
项目地址:https://github.com/wg-easy/wg-easy