1. Блог
  2. Мануали

WireGuard із вебінтерфейсом: встановлення wg-easy на VPS

WireGuard із вебінтерфейсом: встановлення wg-easy на VPS

WireGuard — швидкий і простий VPN-протокол, але керувати ним із консолі незручно: для кожного клієнта потрібно створювати ключі й редагувати конфігурацію. Проєкт wg-easy додає до WireGuard вебпанель, де клієнт створюється однією кнопкою, а підключення налаштовується скануванням QR-коду.

Що знадобиться

Крок 1. Встановлення

Створіть каталог і завантажте офіційний файл Compose:

mkdir -p ~/wg-easy && cd ~/wg-easy
curl -o docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

Файл уже містить усе потрібне: образ ghcr.io/wg-easy/wg-easy:15, том для конфігурації, мережеві права контейнера та два порти — 51820/udp для VPN і 51821/tcp для панелі керування.

Крок 2. Доступ до панелі

Панель передає пароль адміністратора, тому типово працює лише через HTTPS. Є два варіанти.

Варіант А: домен і зворотний проксі (рекомендовано). Спрямуйте піддомен, наприклад vpn.example.com, на сервер і опублікуйте порт 51821 через Nginx Proxy Manager або Nginx із Certbot. У цьому разі порт панелі краще прив’язати до локальної адреси — замініть рядок у docker-compose.yml:

      - "127.0.0.1:51821:51821/tcp"

Варіант Б: без домену. Дозвольте роботу через HTTP, додавши в опис сервісу змінну:

    environment:
      - INSECURE=true

Цей варіант підходить лише для першого знайомства: пароль передається у відкритому вигляді. Не залишайте панель у такому режимі доступною з інтернету — підключайтеся до неї через SSH-тунель:

ssh -L 51821:127.0.0.1:51821 root@203.0.113.10

Крок 3. Запуск

docker compose up -d

Відкрийте порт VPN у файрволі:

sudo ufw allow 51820/udp

Крок 4. Перший вхід

Відкрийте панель у браузері. Майстер налаштування запропонує:

  1. створити обліковий запис адміністратора;
  2. вказати Host — зовнішню IP-адресу або домен сервера, до якого підключатимуться клієнти;
  3. підтвердити порт 51820.

Адреса з поля Host потрапляє в конфігурацію кожного клієнта. Якщо вказати її неправильно, клієнти не зможуть підключитися.

Крок 5. Додавання клієнта

  1. Натисніть New і введіть ім’я клієнта, наприклад phone.
  2. Для телефона натисніть на значок QR-коду й відскануйте його застосунком WireGuard: + → Сканувати QR-код.
  3. Для комп’ютера завантажте файл конфігурації та імпортуйте його в застосунок WireGuard: Імпорт тунелів із файлу.

Застосунки WireGuard є для Windows, macOS, Linux, Android та iOS. Після ввімкнення тунелю перевірте свою IP-адресу — вона має збігатися з адресою сервера.

У панелі видно, які клієнти підключені та скільки трафіку вони передали. Клієнта можна тимчасово вимкнути перемикачем або видалити — його конфігурація одразу перестане працювати.

Корисні налаштування

Параметри змінюються в панелі адміністратора:

  • DNS — сервер, який отримують клієнти. Якщо на тому самому сервері працює AdGuard Home, вкажіть його адресу, і реклама блокуватиметься на всіх підключених пристроях.
  • Allowed IPs — які адреси клієнт надсилає в тунель. Значення 0.0.0.0/0, ::/0 спрямовує через VPN увесь трафік; для доступу лише до внутрішньої мережі вкажіть її підмережу.
  • Persistent Keepalive — значення 25 допомагає клієнтам за NAT не втрачати з’єднання.
  • Термін дії — клієнту можна задати дату, після якої доступ вимкнеться автоматично.

Розбір параметрів клієнтської конфігурації є в статті про налаштування клієнта WireGuard.

Безпека

  • Увімкніть двофакторну автентифікацію в профілі адміністратора.
  • Не публікуйте порт панелі в інтернет без HTTPS.
  • Створюйте окремого клієнта для кожного пристрою: втрачений пристрій вимикається без переналаштування решти.
  • Захистіть сам сервер: вхід за SSH-ключами і Fail2Ban.

Оновлення

cd ~/wg-easy
docker compose pull
docker compose up -d

Конфігурація та ключі клієнтів зберігаються в томі etc_wireguard і під час оновлення не втрачаються.

Якщо клієнт не підключається

  • Немає рукостискання. Перевірте, що UDP-порт 51820 відкрито у файрволі сервера й що в полі Host вказано правильну адресу.
  • Підключення є, інтернету немає. Переконайтеся, що контейнер запущено з параметрами з офіційного файлу Compose: без sysctls і cap_add пересилання пакетів не працює.
  • Не відкриваються сайти за іменем. Перевірте адресу DNS у налаштуваннях.
  • Журнал контейнера: docker logs wg-easy.

Відеоінструкція

Відео знято для ранішої версії: спосіб встановлення та інтерфейс змінилися, принцип роботи залишився той самий.

YouTube video
#wireguard#wg-easy#vpn#docker#vps

Ця стаття іншими мовами:EnglishРусский