WireGuard Easy + Docker Compose 最简搭建教程

最简单、最轻量的 Linux WireGuard 部署方式!

本教程包含:

  • docker-compose.yml 完整示例
  • 如何生成 wg-easy 管理面板登录密码
  • 变量说明与注意事项
  • Web UI 访问方式
  • Nginx 反向代理示例配置

适用于所有支持 Docker 的 Linux 主机(Debian、Ubuntu、CentOS、Alpine 等)。


一、Docker Compose 配置文件

创建 docker-compose.yml

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

    environment:
      - WG_HOST=1.2.3.4               # 服务器公网 IP 或域名
      - PASSWORD_HASH=***
      - WG_DEFAULT_ADDRESS=192.168.6.x
      - WG_DEFAULT_DNS=223.6.6.6
      - WG_ALLOWED_IPS=192.168.6.0/24
      - WG_PERSISTENT_KEEPALIVE=25

    volumes:
      - ./config:/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

二、生成 wg-easy 管理后台登录密码

wg-easy 通过 Bcrypt 哈希方式保护登录密码。 使用官方镜像自带的 wgpw 工具生成哈希:

docker run --rm -it ghcr.io/wg-easy/wg-easy wgpw 'YOUR_PASSWORD'

生成结果示例:

PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW'
你的密码是:YOUR_PASSWORD

:warning: 重要注意:

使用场景 是否需要引号 $ 是否要转义
docker run 必须使用 '单引号' 不需要
docker-compose.yml :cross_mark: 不能加引号 每个 $ 换成 $

示例(适用于 docker-compose):

- PASSWORD_HASH=$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW

三、Web UI 访问方式

启动容器后,浏览器访问:

http://服务器IP:51821

即可通过 Web 面板管理 WireGuard 客户端、导出配置、扫描二维码等。


四、参数说明与常见误区

:check_mark: WG_DEFAULT_ADDRESS=192.168.6.x

  • x 是自动递增分配,不是只能一个客户端
  • 所有客户端都在 192.168.6.0/24 中自动分配地址

:check_mark: WG_ALLOWED_IPS=192.168.6.0/24

表示默认客户端仅访问 WireGuard 内网,如你希望:

  • 全流量走 VPN → 改为 0.0.0.0/0
  • IPv6 全流量 → 追加 , ::/0

:check_mark: WG_HOST

可填写以下任意一种:

  • 公网 IPv4
  • 公网 IPv6
  • 你自己的域名(推荐)

五、Nginx 反向代理(HTTPS Web UI)

如果希望通过域名访问 Web UI,可使用 Nginx 反代:

server {
    server_name wg-easy.myhomelab.com;

    location / {
        proxy_pass http://wg-easy:51821/;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
}

:pushpin: 建议配合 Let’s Encrypt 添加 HTTPS。


六、启动并检查容器

启动 wg-easy

docker-compose up -d

查看运行状态

docker ps

查看日志

docker logs -f wg-easy

:tada: 至此,你的 WireGuard Easy 已成功搭建!

你现在拥有:

  • 自动生成客户端配置
  • Web UI 图形化管理
  • 自动 NAT、自动防火墙规则
  • 支持多客户端动态分配 IP
  • 支持 HTTPS 反代访问