version: "3.8"
services:
# WireGuard-UI 管理界面容器
wireguard-ui:
image: ngoduykhanh/wireguard-ui:0.6.2
container_name: wireguard-ui
restart: always # 容器异常自动重启
environment:
# 时区配置(避免日志时间错乱,改为你的时区,如 Asia/Shanghai)
- TZ=Asia/Shanghai
# WireGuard 配置文件存放路径(与下方挂载目录一致)
- WG_CONF_DIR=/etc/wireguard
# 禁止自动重启 WireGuard 服务(由下方 wireguard 容器负责)
- WG_ENABLE=false
volumes:
# 挂载 WireGuard 配置目录(UI 生成的配置会存放在这里)
- ./wireguard:/etc/wireguard
# 挂载 WireGuard-UI 自身数据目录(保存管理员账号、客户端信息等)
- ./db:/app/db
ports:
# 映射管理端口:主机 5000 端口 → 容器 5000 端口
- "5000:5000"
depends_on:
- wireguard # 先启动 wireguard 容器,再启动 UI 容器
# WireGuard 隧道服务容器
wireguard:
image: linuxserver/wireguard:amd64-1.0.20250521
container_name: wireguard
restart: always
cap_add:
- NET_ADMIN # 授予容器网络管理权限(必需)
- SYS_MODULE # 允许加载内核模块(必需)
environment:
- TZ=Asia/Shanghai
- PUID=1000 # 当前用户 UID(默认 1000,无需修改)
- PGID=1000 # 当前用户 GID(默认 1000,无需修改)
- WG_PORT=51820 # WireGuard 数据端口(与开放的 UDP 端口一致)
volumes:
- ./wireguard:/etc/wireguard # 共享 WireGuard 配置目录(与 UI 容器同步)
- /lib/modules:/lib/modules # 挂载主机内核模块(必需)
ports:
- "51820:51820/udp" # 映射 WireGuard 数据端口
sysctls:
# 启用 IP 转发(必需,允许客户端通过服务器访问外网)
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1