Запуск WireGuard Easy в Docker Compose

WireGuard — быстрый VPN; WireGuard Easy добавляет веб-UI для клиентов и QR-кодов. Даёт доступ к домашней LAN извне без проброса каждого сервиса.

Панель лучше держать только в LAN или за отдельной аутентификацией. Ниже — простой вариант с портом UI на localhost/LAN и UDP 51820 наружу.

1. Каталог

mkdir -p ~/wg-easy
cd ~/wg-easy

2. 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.

3. Firewall

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 локально.

4. Запуск

docker compose up -d
docker compose logs -f --tail=50

В панели создайте клиента, скачайте конфиг или отсканируйте QR в приложении WireGuard.

Замечания

  • Не публикуйте UI (51821) в интернет без защиты.
  • Бэкапьте ./data — там ключи и peers.
  • На роутере пробросьте UDP 51820 на сервер.

Итог: домашний VPN с удобной выдачей клиентов за несколько минут.