WireGuard — быстрый VPN; WireGuard Easy добавляет веб-UI для клиентов и QR-кодов. Даёт доступ к домашней LAN извне без проброса каждого сервиса.
Панель лучше держать только в LAN или за отдельной аутентификацией. Ниже — простой вариант с портом UI на localhost/LAN и UDP 51820 наружу.
mkdir -p ~/wg-easy
cd ~/wg-easy
docker-compose.ymlЗамените пароль панели и публичный IP/домен сервера:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
restart: unless-stopped
environment:
LANG: ru
WG_HOST: vpn.yourdomain
PASSWORD_HASH: "PASTE_PASSWORD_HASH_HERE"
WG_DEFAULT_DNS: 1.1.1.1
WG_ALLOWED_IPS: 0.0.0.0/0, ::/0
volumes:
- ./data:/etc/wireguard
ports:
- "51820:51820/udp"
- "127.0.0.1:51821:51821/tcp"
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
Хеш пароля:
docker run --rm ghcr.io/wg-easy/wg-easy wgpw 'your-panel-password'
Вставьте вывод в PASSWORD_HASH.
WG_HOST — домен или публичный IP, который клиенты пропишут в endpoint.
firewall-cmd --permanent --add-port=51820/udp
firewall-cmd --reload
Порт 51821 слушает только 127.0.0.1 — панель через SSH-туннель:
ssh -L 51821:127.0.0.1:51821 user@server
Затем откройте http://127.0.0.1:51821 локально.
docker compose up -d
docker compose logs -f --tail=50
В панели создайте клиента, скачайте конфиг или отсканируйте QR в приложении WireGuard.
51821) в интернет без защиты../data — там ключи и peers.Итог: домашний VPN с удобной выдачей клиентов за несколько минут.