Ghi chú review
Cần quyền NET_ADMIN và SYS_MODULE. Cấu hình đúng IP public và port UDP 51820 để client kết nối.
Hướng dẫn deploy
Chạy một container Docker với quyền đặc biệt để quản lý WireGuard. Cần mở port UDP.
- Mở port UDP 51820 trên firewall và router.
- Chạy container với cap_add NET_ADMIN và SYS_MODULE.
- Cấu hình WG_HOST bằng IP public hoặc domain của server.
- Đặt mật khẩu admin qua PASSWORD_HASH.
- Tạo client profiles và tải file config hoặc scan QR code.
Backup:Backup thư mục config chứa WireGuard keys và client profiles.
Copy để chạy trên server
Dùng từng block riêng: lưu compose trước, hoặc copy script bash để tạo file và chạy container.
docker-compose.ymlyaml
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
WG_HOST: "YOUR_SERVER_IP"
PASSWORD_HASH: "$$2y$$10$$your_bcrypt_hash_here"
WG_DEFAULT_DNS: "1.1.1.1"
volumes:
- ./config:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/wg-easy
sudo chown "$USER":"$USER" /opt/wg-easy
cd /opt/wg-easy
cat > docker-compose.yml <<'COMPOSE'
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
WG_HOST: "YOUR_SERVER_IP"
PASSWORD_HASH: "$$2y$$10$$your_bcrypt_hash_here"
WG_DEFAULT_DNS: "1.1.1.1"
volumes:
- ./config:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
COMPOSE
docker compose up -d
echo "WG-Easy is running on http://SERVER_IP:51821"Stack
Node.jsDocker