我们一起来看看,如何用运行在 Docker 容器中的 WireGuard 轻松搭建属于自己的私有 VPN 服务器。我会一步步带您完成安装、配置,以及向您的 VPN 服务器添加客户端。

在创建和启动容器之前,我们需要先安装 Docker 和 Docker-compose。如果您的服务器上已经安装了 docker 和 docker-compose,可以跳过这些步骤。
安装 Docker
curl -fsSL https://get.docker.com/ | sh
把一个用户加入 docker 组,以便执行 docker 命令
sudo usermod -aG docker username
安装 docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
为 docker-compose 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

创建 docker-compose 文件
接下来,我们需要创建一个 docker-compose 文件,以便方便地管理我们的 WireGuard 容器。为此,我使用来自 https://linuxserver.io 网站的 docker 镜像和模板。linuxserver.io 的团队十分投入,为 docker 社区维护着大量镜像。
首先,我们在 /opt 目录下新建一个名为 /opt/wireguard-server 的文件夹,并在该目录中创建一个新的 docker-compose.yaml 文件。您还需要把这个文件夹的所有权改为您的 Linux 用户。
sudo mkdir /opt/wireguard-server
nano /opt/wireguard-server/docker-compose.yaml
在这个文件中,我们将使用下面的模板,请参阅 linuxserver/wireguard 的文档:https://hub.docker.com/r/linuxserver/wireguard
version: "2.1"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- SERVEURURL=wireguard.domain.com #optional
- SERVERPORT=51820 #optional
- PEERS=1 #optional
- PEERDNS=auto #optional
- INTERNAL_SUBNET=10.10.10.0 #optional
volumes:
- /opt/wireguard-server/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
请把 SERVEURURL 替换为您 WireGuard 服务器的域名或公网 IP 地址,因为您的客户端需要从本地网络之外连接进来。您也可以把它设置为 auto,docker 容器会自动确定您的公网 IP 地址,并在客户端配置中使用它。
启动您的 WireGuard 服务器
现在您可以用下面的命令启动 WireGuard 容器,客户端应该就能连接了。
cd /opt/wireguard-server
docker-compose up -d
向客户端分发配置文件
对于客户端计算机来说,最方便的做法是直接在系统上安装 WireGuard 应用程序。如果您想了解具体做法,也可以参阅我们的相关文章。
从 WireGuard 客户端连接时所需的 .cnf 文件,可以在 /opt/wireguard-server/config 文件夹中找到。每个 peer.cnf 都按其编号保存在名为 peer1、peer2、peer3 等的文件夹中……
cd /opt/wireguard-server/config/peer1
添加更多客户端
如果您想添加更多客户端,只需在 docker-compose.yaml 文件中调大 PEERS 参数即可。修改该值之后,您需要使用 –force-recreate 参数重启您的 Docker 容器。
docker-compose up -d --force-recreate
希望这篇文章对您有所帮助!我们在 Awoui 再会!
