使用 wg-easy 实现 WireGuard 的 Web 可视化管理

https://github.com/wg-easy/wg-easy
https://wg-easy.github.io/wg-easy/latest/

wg-easy 是一个用于快速部署和管理 WireGuard 的轻量化 Web 管理工具。

启动

Docker 启动

docker run -d \
  --name wg-easy \
  -e INSECURE=true \
  -e DISABLE_IPV6=true \
  -v ~/.wg-easy:/etc/wireguard \
  -v /lib/modules:/lib/modules:ro \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add NET_ADMIN \
  --cap-add SYS_MODULE \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy:15

管理面板设置

接口设置

修改 CIDR

image

IPv4 的 CIDR 默认是 10.8.0.0/24
可以修改为自己喜欢的,比如 10.2.0.0/24

网络设置

允许的IP:10.8.0.0/24
保活间隔:25

如果修改了 IPv4 的 CIDR,修改为对应的 10.2.0.0/24

image

环境变量

使用初始化环境变量启动,启动后直接登录用户,不需要初始化配置了。(保活间隔:25,还是需要手动配置)

docker run -d \
  --name wg-easy \
  --restart unless-stopped \
  -e INSECURE=true \
  -e DISABLE_IPV6=true \
  -e INIT_ENABLED=true \
  -e INIT_USERNAME=用户名 \
  -e INIT_PASSWORD=密码 \
  -e INIT_HOST=公网IP \
  -e INIT_PORT=51820 \
  -e INIT_DNS=1.1.1.1,8.8.8.8 \
  -e INIT_IPV4_CIDR=10.8.0.0/24 \
  -e INIT_IPV6_CIDR=2001:0DB8::/32 \
  -e INIT_ALLOWED_IPS=10.8.0.0/24,2001:0DB8::/32 \
  -v ~/.wg-easy:/etc/wireguard \
  -v /lib/modules:/lib/modules:ro \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add NET_ADMIN \
  --cap-add SYS_MODULE \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  ghcr.io/wg-easy/wg-easy:15

环境变量说明

参考:

可选配置

无人值守设置

运行时配置(每次启动生效)

环境变量 默认值 示例 说明
PORT 51821 6789 Web UI 端口
HOST 0.0.0.0 127.0.0.1 Web UI 监听地址
INSECURE false true 是否允许 HTTP
DISABLE_IPV6 false true 是否关闭 IPv6

初始化相关(仅首次启动生效)

环境变量 示例 说明 分组
INIT_ENABLED true 启用初始化配置 0
INIT_USERNAME admin 管理员用户名 1
INIT_PASSWORD Se!ureP%ssw 管理员密码 1
INIT_HOST xxx.example.com 客户端连接地址(域名/IP) 1
INIT_PORT 51820 WireGuard 监听端口 1
INIT_DNS 1.1.1.1,8.8.8.8 全局 DNS 2
INIT_IPV4_CIDR 192.168.100.0/24 IPv4 网段 3
INIT_IPV6_CIDR fd00::/64 IPv6 网段 3
INIT_ALLOWED_IPS 0.0.0.0/0,::/0 客户端路由规则 4

如果变量在同一组中,则必须设置这个组的所有变量。例如,如果设置了变量 INIT_IPV4_CIDR,则还必须设置变量 INIT_IPV6_CIDR。

使用 Docker Compose

docker-compose.yml

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    restart: unless-stopped

    environment:
      INSECURE: "true"
      DISABLE_IPV6: "true"

      INIT_ENABLED: "true"
      INIT_USERNAME: "用户名"
      INIT_PASSWORD: "密码"
      INIT_HOST: "公网IP"
      INIT_PORT: "51820"
      INIT_IPV4_CIDR: "10.8.0.0/24"
      INIT_IPV6_CIDR: "2001:0DB8::/32"
      INIT_ALLOWED_IPS: "10.8.0.0/24,2001:0DB8::/32"

    volumes:
      - ~/.wg-easy:/etc/wireguard
      - /lib/modules:/lib/modules:ro

    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"

启动:

docker compose up -d

停止:

docker compose down
posted @ 2026-04-16 23:25  ioufev  阅读(1334)  评论(0)    收藏  举报