使用 wg-easy 通过 Docker Compose 配置 WireGuard 服务器
使用wg-easy docker compose设置WireGuard服务器
必须知道的事情
PASSWORD_HASH
PASSWORD_HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
这是密码为123456的哈希值,参见 How_to_generate_an_bcrypt_hash.md 来了解如何获取这个哈希值,当你登录到wg-easy配置web界面时,123456将是你的密码。但现在的方法有一点问题,所以可以用以下命令代替:
sudo docker run -it ghcr.io/wg-easy/wg-easy /app/wgpw.sh 123456
如果上述命令的输出是:
PASSWORD_HASH='$2a$12$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq'
因为我们使用的是docker compose yaml文件,需要将每个$符号替换为两个$$符号。所以在yaml中的PASSWORD_HASH应为:
PASSWORD_HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
记得用一个更强的密码替换简单的123456。
关于我们使用的IP和IP范围的注释:
192.168.0.1
主机网络网关,请改为你的主机网络网关。192.168.0.0/24
主机网络IP范围,请同样改为你的主机网络IP范围。10.8.0.x
你的虚拟网络IP范围,除非你偏好其他的IP范围,否则不需要更改。10.8.0.0/24
由10.8.0.x
设定的虚拟网络IP范围。
Docker compose 文件
services:
wg-easy:
container_name: wg-easy
image: ghcr.io/wg-easy/wg-easy
network_mode: bridge
environment:
- LANG=chs # or en, de ...
- WG_HOST=stepchen.tpddns.cn
- WG_DEFAULT_DNS=192.168.0.1,114.114.114.114,8.8.8.8,8.8.4.4
- PORT=7000
- WG_DEFAULT_ADDRESS=10.8.0.x
- WG_PORT=7001
- WG_PRE_UP = iptables -t nat -F; iptables -F; # Flush all rules
- WG_POST_UP=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- WG_POST_DOWN=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- WG_ALLOWED_IPS=114.114.114.114,8.8.8.8,8.8.4.4,192.168.0.0/24,10.8.0.0/24
- PASSWORD_HASH=$$2a$$12$$31H.ZEl74tEF98shuIWWxe2PTsljr3vEMRfU7HL8dPvNJTImcUgRq
- UI_TRAFFIC_STATS=true
- UI_CHART_TYPE=3 # (0 Charts disabled, 1 # Line chart, 2 # Area chart, 3 # Bar chart)
# - WG_ENABLE_ONE_TIME_LINKS=true
- UI_ENABLE_SORT_CLIENTS=true
# - WG_ENABLE_EXPIRES_TIME=true
volumes:
- /mnt/appdata/wgeasy:/etc/wireguard
ports:
- 7000:7000/tcp
- 7001:7001/udp
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
启动docker容器后,你可以通过 http://
设置WireGuard客户端
安装WireGuard客户端
sudo apt update
sudo apt install wireguard
从服务器创建客户端并获取配置文件
访问服务器的web界面并创建一个新的客户端,然后下载客户端配置文件到客户端。然后将配置文件移动到/etc/wireguard/
目录下。比如你从服务器下载的配置文件名为stepchen-pc.conf
位于/home/stepchen/Downloads/
:
sudo mv /home/stepchen/Downloads/stepchen-pc.conf /etc/wireguard/wg0.conf
注意:文件名wg0.conf
意味着wg0
将是在客户端启动WireGuard连接的名字。
WireGuard的命令
# Start the connection
sudo wg-quick up wg0
# Stop the connection
sudo wg-quick down wg0
# Show current connection
sudo wg show
将连接作为服务添加到客户端机器中
# Create the system service and start it immediately
sudo systemctl enable --now wg-quick@wg0
# Remove the system service and stop it immediately
sudo systemctl disable --now wg-quick@wg0