首先需要支持wireguard内核系统,较新的系统都支持例如飞牛和OpenWrt。群晖实测有点问题,需要的也可以去测试。
一、我比较习惯portainer,安装代码如下:SSH里直接执行就行:
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce
二、Portainer里面新建堆栈
复制以下代码,要是格式出错什么的可以直接问deepseek,注意/volume1/NAS/wg 替换成你实际存放配置路径,代码里的6080和51820端口可以替换成你喜欢的数字。
version: "3.8"
services:
wireguard:
image: linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
volumes:
- /volume1/NAS/wg:/config
ports:
- "6080:5000" # 这个映射可能不必要,除非您需要访问 WireGuard 的某个服务
- "51820:51820/udp" # WireGuard 主端口
restart: unless-stopped
# 建议添加环境变量配置
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
depends_on:
- wireguard
cap_add:
- NET_ADMIN # WireGuard-UI 通常不需要 NET_ADMIN 权限
network_mode: "service:wireguard" # 使用 WireGuard 的网络命名空间
environment:
- SENDGRID_API_KEY=${SENDGRID_API_KEY} # 使用环境变量占位符
- EMAIL_FROM_ADDRESS=${EMAIL_FROM_ADDRESS}
- EMAIL_FROM_NAME=${EMAIL_FROM_NAME}
- SESSION_SECRET=${SESSION_SECRET}
- WGUI_USERNAME=admin
- WGUI_PASSWORD=admin
- WG_CONF_TEMPLATE=${WG_CONF_TEMPLATE}
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
logging:
driver: json-file
options:
max-size: "50m" # 添加引号
volumes:
- /volume1/NAS/wg:/app/db
- /volume1/NAS/wg:/etc/wireguard # 注意:这会覆盖上一个卷挂载
restart: unless-stopped
三、登录配置wireguard-ui ,登录密码和账号默认均为admin登录之后自己在用户设置里修改
Post Up Script
iptables -A FORWARD -i %1 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
Post Down Script
iptables -D FORWARD -i %1 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
服务器IP看着改个你的DDNS域名就行也可以不改
新建客户端随便填
这些操作均需要点击右上角 应用此操作配置。 可以实时看到链接的客户端状态。
生成的二维码直接手机客户端wireguard扫描就行。重点别忘记端口映射,手机扫描后的配置文件编辑成你映射的端口。DNS最好的国内的,别用国外重要。
群晖的没搞定,我有点怀疑我把系统给搞坏了,回头再研究。