前言

想自己搭一个 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 在它之上加了一层易用的管理界面。

核心特性

特性

说明

🖥️ Web 管理界面

浏览器里添加/删除客户端

📱 二维码

手机 App 扫码即可导入配置

📄 配置下载

一键下载 .conf 配置文件

📊 流量统计

查看各客户端的上下行流量、在线状态

🔒 密码登录

后台带身份认证保护

🐳 Docker 部署

单容器,开箱即用

🌍 多语言

支持中文等多种语言界面


二、准备工作

部署前你需要:

  1. 一台拥有公网 IP 的服务器(VPS / 云主机均可)

  2. 已安装 DockerDocker Compose

  3. 在云厂商安全组 / 防火墙放行端口:

    • 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 里要把 $ 转义成 $$


四、添加客户端

  1. 登录后台 http://你的服务器IP:51821

  2. 点击右上角 「New Client / 新建客户端」,输入名字

  3. 客户端创建后,有两种导入方式:

    • 手机:用 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

文章作者: 楚少爱看雪
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 楚少爱看雪
学习 Study
喜欢就支持一下吧