wireguard@wg-easy v14容器化部署

wg-easy 是一个开源项目,旨在提供一种简单的方式来部署和管理 WireGuard VPN,并附带一个基于 Web 的管理界面。以下是基于 GitHub 上 wg-easy/wg-easy v14.0.0 分支的介绍:

wg-easy offical

The easiest way to run WireGuard VPN + Web-based Admin UI.

1.项目概述

  • 项目名称: wg-easy (WireGuard Easy)
  • GitHub 仓库: https://github.com/wg-easy/wg-easy
  • 版本: v14.0.0 (发布于 2024 年 9 月 10 日)
  • 目标: 提供一个易于安装和使用的 WireGuard VPN 解决方案,结合直观的 Web 管理界面。
  • 许可证: AGPL-3.0
  • 主要特性:
    • 一键部署: 通过 Docker 或 Docker Compose 快速安装。
    • Web 管理界面: 支持客户端的创建、编辑、删除、启用/禁用等操作。
    • 客户端管理: 显示客户端二维码、下载配置文件、查看连接状态及流量统计。
    • 多语言支持: 支持多种语言(如英语、德语、西班牙语、中文等)。
    • Gravatar 支持: 为客户端用户显示头像。
    • Home Assistant 支持: 集成智能家居平台。
    • 安全性改进: v14.0.0 引入了 PASSWORD_HASH 替代明文密码,提升安全性。

2.v14.0.0 主要更新

根据发布说明,v14.0.0 带来了一些重要变化:

  1. 密码安全性:
    • 移除了明文 PASSWORD 环境变量,改用 PASSWORD_HASH,需要使用 bcrypt 哈希密码。
    • 提供生成 bcrypt 哈希的指南(参考 How_to_generate_an_bcrypt_hash.md)。
  2. Home Assistant 支持: 新增与 Home Assistant 的集成,方便智能家居用户。
  3. 翻译更新: 改进了多语言支持,新增或优化了部分语言。
  4. 错误修复:
    • 修复了若干 bug,提升了稳定性。
    • 修复了之前版本中可能出现的登录无需认证的问题(参见讨论 #1478)。
  5. 其他改进:
    • 增强了 Web UI 的功能,如流量图表(支持折线图、面积图、柱状图)。
    • 优化了 Docker 配置,简化部署流程。

3.安装与使用

wg-easy 推荐使用 Docker 或 Docker Compose 进行部署。以下是基本安装步骤(基于 v14.0.0):

3.1.使用 Docker

加载nat内核,开机自己加载

echo "ip_tables" | tee -a /etc/modules-load.d/wireguard.conf
echo "iptable_nat" | tee -a /etc/modules-load.d/wireguard.conf

systemctl restart systemd-modules-load

容器启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run -d \
--name=wg-easy \
-e LANG=de \
-e WG_HOST=<YOUR_SERVER_IP> \
-e PASSWORD_HASH=<YOUR_ADMIN_PASSWORD_HASH> \
-e PORT=51821 \
-e WG_PORT=51820 \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy:14
  • 关键参数:
    • WG_HOST: 服务器的公网 IP 或域名。
    • PASSWORD_HASH: 使用 bcrypt 工具生成的密码哈希。
    • PORT: Web UI 端口(默认 51821)。
    • WG_PORT: WireGuard VPN 端口(默认 51820)。

PASSWORD_HASH获取

3.2.使用 Docker Compose

  1. 下载 docker-compose.yml
    1
    wget https://raw.githubusercontent.com/wg-easy/wg-easy/v14.0.0/docker-compose.yml
  2. 编辑 docker-compose.yml,设置 WG_HOSTPASSWORD_HASH
  3. 运行:
    1
    docker compose up --detach

3.3.访问

  • Web UI 默认地址:http://<YOUR_SERVER_IP>:51821
  • 使用生成的密码登录,管理 VPN 客户端。

password 明文登录

ff8a5ca221080d5d9744d37a0cdb1cc0.png

4.功能亮点

  • 客户端管理:
    • 通过 Web 界面添加/删除客户端,生成二维码或配置文件
    • 支持查看客户端的实时流量(Tx/Rx)统计。
  • 灵活配置:
    • 支持自定义 MTU、DNS、IP 范围、Keepalive 时间等。
    • 可设置允许的 IP 范围(WG_ALLOWED_IPS),实现分流配置。
  • 图表支持:
    • 可选择禁用图表或启用折线图、面积图、柱状图来展示流量数据。
  • 多平台支持:
    • 适用于 Linux 主机,支持 Docker 和 Podman。
    • 客户端支持 Android、iOS、Windows、macOS 等。

4.注意事项

  1. 密码哈希:
    • v14.0.0 要求使用 PASSWORD_HASH,需参考官方文档生成 bcrypt 哈希。
    • 旧版本的明文密码配置不再支持,升级时需注意。
  2. 端口配置:
    • 如果更改 WG_PORT,需同步更新暴露的端口映射。
  3. 安全性:
    • 确保 WG_HOST 设置正确,否则可能导致连接失败。
    • v14.0.0 修复了无认证登录的漏洞,建议尽快升级。
  4. 升级问题:
    • 部分用户报告升级后无法连接或访问 UI,可能与网络配置(如 EADDRNOTAVAIL 错误)有关,需检查 IP 和端口设置。
    • 迁移指南(Migration Guide)可帮助从旧版本升级。

适用场景

wg-easy 适合需要快速部署 VPN 的用户,例如:

  • 个人用户:保护隐私,访问家庭网络。
  • 小型团队:构建安全的远程访问通道。
  • 开发者和爱好者:测试或学习 WireGuard 的简单工具。