https://github.com/linuxserver/docker-wireguard
https://git.zx2c4.com/wireguard-linux/about/
docker-compose
grok给加的注释
version: '3.8' # 指定Docker Compose文件版本,3.8为较新的稳定版本,兼容大多数现代功能
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest # 使用LinuxServer的WireGuard镜像,始终拉取最新版本
container_name: wireguard # 容器名称,方便识别和管理
cap_add:
- NET_ADMIN # 授予网络管理权限,WireGuard需要此权限来配置网络接口
- SYS_MODULE # 可选:允许加载内核模块,用于支持某些高级功能(如自定义内核模块)
environment:
- PUID=1000 # 设置容器内用户的UID,确保文件权限与宿主机用户一致(1000通常为默认用户)
- PGID=1000 # 设置容器内用户组的GID,保持与宿主机组权限一致
- TZ=Etc/UTC # 设置时区为UTC,可改为其他时区(如Asia/Shanghai)
- SERVERURL=wireguard.domain.com # 可选:WireGuard服务器的外部访问域名或IP,用于客户端连接
- SERVERPORT=51820 # 可选:WireGuard监听的UDP端口,默认为51820
- PEERS=1 # 可选:生成客户端配置的数量,设为1表示生成1个客户端配置
- PEERDNS=auto # 可选:客户端的DNS设置,auto表示自动选择,可指定具体DNS(如8.8.8.8)
- INTERNAL_SUBNET=10.13.13.0 # 可选:WireGuard内部网络的子网,客户端将使用此范围的IP
- ALLOWEDIPS=0.0.0.0/0 # 可选:允许通过WireGuard转发的IP范围,0.0.0.0/0表示全部流量
- PERSISTENTKEEPALIVE_PEERS= # 可选:客户端的保活时间间隔(秒),空表示禁用,适用于NAT穿透
- LOG_CONFS=true # 可选:启用配置文件日志记录,便于调试配置问题
volumes:
- /path/to/wireguard/config:/config # 挂载WireGuard配置文件目录,宿主机路径需替换为实际路径(如./wireguard/config)
- /lib/modules:/lib/modules # 可选:挂载宿主机的内核模块目录,供容器加载WireGuard模块(视系统需求)
ports:
- 51820:51820/udp # 映射WireGuard的UDP端口,宿主机51820映射到容器内51820,协议为UDP
sysctls:
- net.ipv4.conf.all.src_valid_mark=1 # 启用源地址验证标记,解决某些网络环境下WireGuard的连接问题
restart: unless-stopped # 容器重启策略,除非手动停止,否则总是重启(适合生产环境)