WireGuard

https://www.wireguard.com/ 

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  # 容器重启策略,除非手动停止,否则总是重启(适合生产环境)