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

WireGuard — швидкий і простий VPN-протокол, але керувати ним із консолі незручно: для кожного клієнта потрібно створювати ключі й редагувати конфігурацію. Проєкт wg-easy додає до WireGuard вебпанель, де клієнт створюється однією кнопкою, а підключення налаштовується скануванням QR-коду.
Що знадобиться
- VPS з Ubuntu або Debian — достатньо мінімального тарифу;
- Docker і Docker Compose — див. інструкцію зі встановлення;
- відкритий UDP-порт 51820.
Крок 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. Перший вхід
Відкрийте панель у браузері. Майстер налаштування запропонує:
- створити обліковий запис адміністратора;
- вказати Host — зовнішню IP-адресу або домен сервера, до якого підключатимуться клієнти;
- підтвердити порт 51820.
Адреса з поля Host потрапляє в конфігурацію кожного клієнта. Якщо вказати її неправильно, клієнти не зможуть підключитися.
Крок 5. Додавання клієнта
- Натисніть New і введіть ім’я клієнта, наприклад
phone. - Для телефона натисніть на значок QR-коду й відскануйте його застосунком WireGuard: + → Сканувати QR-код.
- Для комп’ютера завантажте файл конфігурації та імпортуйте його в застосунок 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.
Відеоінструкція
Відео знято для ранішої версії: спосіб встановлення та інтерфейс змінилися, принцип роботи залишився той самий.



