Персональний VPN-сервер WireGuard зі зручним веб-інтерфейсом | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
Ex. VAT Ex. VAT 0%

Як налаштувати власний VPN-сервер WireGuard з wg-easy

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

Info

wg-easy v15 відрізняється від старих версій. Пароль адміністратора більше не передається у змінній PASSWORD: контейнер із PASSWORD або PASSWORD_HASH не запуститься. Логін і пароль тепер задаються в браузері під час першого запуску.

Вимоги

Достатньо VPS із публічною IP-адресою та доступом root або sudo. wg-easy невибагливий: для особистого VPN вистачить 1 vCPU та 1 ГБ оперативної пам'яті. Команди в цій інструкції перевірено на Ubuntu 24.04 LTS. Оскільки wg-easy працює в Docker, вони так само підходять для Ubuntu 22.04, Debian 12, AlmaLinux 9 і Rocky Linux 9.

Tip

Якщо не хочете нічого встановлювати вручну, замовте VPS із уже розгорнутим wg-easy у маркетплейсі застосунків INTROSERV і одразу переходьте до першого запуску.

Встановіть Docker

Підключіться до сервера через SSH і встановіть Docker Engine із плагіном Compose за допомогою офіційного скрипту:

curl -fsSL https://get.docker.com | sudo sh

Перевірте, що Docker і Compose встановлено:

sudo docker --version sudo docker compose version

Завантажте файл docker-compose.yml

wg-easy встановлюється за допомогою офіційного файлу docker-compose.yml з репозиторію проєкту. Створіть для нього папку і завантажте файл:

sudo mkdir -p /etc/docker/containers/wg-easy sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

Головні рядки файлу — це образ і порти:

image: ghcr.io/wg-easy/wg-easy:15 ports: - "51820:51820/udp" - "51821:51821/tcp"

Порт 51820/udp використовує сам WireGuard, а порт 51821/tcp — вебпанель. Тег 15 означає, що оновлення не виходять за межі версії 15. Конфігурація і клієнти зберігаються в томі Docker, тому залишаються після перестворення контейнера.

Запустіть wg-easy

Перейдіть до папки з файлом і запустіть контейнер:

cd /etc/docker/containers/wg-easy sudo docker compose up -d

Перевірте, що контейнер працює:

sudo docker compose ps

У стовпці STATUS має бути Up, а в стовпці PORTS — порти 51820/udp і 51821/tcp.

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

Клієнти підключаються до сервера через UDP-порт 51820. Якщо на сервері ввімкнено UFW, дозвольте цей порт:

sudo ufw allow 51820/udp

На AlmaLinux і Rocky Linux із firewalld виконайте:

sudo firewall-cmd --permanent --add-port=51820/udp sudo firewall-cmd --reload

Відкрийте вебпанель

wg-easy v15 не дозволяє входити в панель через звичайний HTTP. Найпростіший безпечний спосіб відкрити панель — SSH-тунель. На своєму комп'ютері виконайте:

ssh -L 51821:localhost:51821 USER@SERVER_IP

Не закривайте цю SSH-сесію і відкрийте в браузері http://localhost:51821.

Warning

Можна також дозволити доступ через звичайний HTTP: у docker-compose.yml розкоментуйте блок environment, задайте INSECURE=true і знову виконайте sudo docker compose up -d. У цьому разі пароль від панелі передається без шифрування, тому використовуйте цей варіант лише для перевірки. Для постійного доступу за доменним ім'ям розмістіть панель за зворотним проксі з HTTPS.

Пройдіть перший запуск

Під час першого запуску wg-easy відкриває майстер налаштування. Після вітального екрана створіть обліковий запис адміністратора: введіть ім'я користувача і пароль, потім підтвердьте пароль.

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

На наступному екрані вкажіть Host і Port, за якими підключатимуться клієнти. У полі Host введіть публічну IP-адресу або доменне ім'я сервера, а не localhost, навіть якщо ви відкрили панель через SSH-тунель. У полі Port залиште 51820. Кнопка Suggest підставляє адресу, яку wg-easy визначає автоматично.

Warning

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

Коли майстер завершиться, увійдіть зі створеними ім'ям користувача і паролем.

Створіть клієнта

На головній сторінці панелі натисніть New Client, введіть назву пристрою, наприклад laptop або phone, і підтвердьте. Клієнт з'явиться у списку. Поруч із ним є кнопки для показу QR-коду і завантаження файлу конфігурації.

Створюйте окремого клієнта для кожного пристрою. Тоді можна вимкнути або видалити доступ для одного пристрою, не зачіпаючи інші.

Підключіть пристрій

Встановіть на пристрій офіційний застосунок WireGuard. Він є для Windows, macOS, Android і iOS на офіційній сторінці завантаження WireGuard.

На телефоні відкрийте застосунок WireGuard, виберіть додавання тунелю за QR-кодом і відскануйте код із панелі.

На комп'ютері завантажте файл конфігурації клієнта в панелі та імпортуйте його в застосунок WireGuard через Import tunnel(s) from file. Потім натисніть Activate.

У Linux встановіть wireguard-tools і openresolv. Без openresolv команда wg-quick завершується помилкою на рядку DNS у файлі конфігурації. В Ubuntu і Debian:

sudo apt install wireguard-tools openresolv sudo wg-quick up ./CLIENT_NAME.conf

Щоб відключитися в Linux, виконайте sudo wg-quick down ./CLIENT_NAME.conf.

Перевірте підключення

Коли тунель активний, перевірте, яку IP-адресу бачить інтернет:

curl -4 ifconfig.me

Команда має повернути IP-адресу вашого сервера. Можна також відкрити в браузері будь-який сайт перевірки IP. У панелі wg-easy в підключеного клієнта видно нещодавню активність і трафік.

Керуйте клієнтами

Усіма клієнтами керують на головній сторінці панелі. Будь-якого клієнта можна тимчасово вимкнути перемикачем поруч із ним: пристрій залишається у списку, але не може підключитися, доки ви знову його не ввімкнете. Щоб повністю прибрати доступ, видаліть клієнта. Його файл конфігурації і QR-код одразу перестають працювати. Якщо пристрій втрачено або файл конфігурації могли скопіювати, видаліть цього клієнта і створіть нового.

Якщо щось не працює

Якщо панель не відкривається, перевірте, що контейнер працює, командою sudo docker compose ps, і подивіться журнал:

sudo docker logs wg-easy

Якщо панель відкривається, але увійти не вдається і з'являється повідомлення про небезпечне з'єднання, отже, ви відкрили її через звичайний HTTP. Використовуйте SSH-тунель із розділу вище.

Якщо клієнт не підключається, перевірте, що UDP-порт 51820 відкритий у файрволі сервера і у файрволі панелі провайдера, якщо він є. Також відкрийте файл конфігурації клієнта і перевірте рядок Endpoint: у ньому має бути публічна адреса сервера. Якщо там неправильна адреса, отже, у майстрі налаштування неправильно вказано Host.

Якщо тунель активний, але інтернету на пристрої немає, перевірте журнал сервера командою sudo docker logs wg-easy і переконайтеся, що контейнер запущено з офіційного docker-compose.yml без змін у розділі sysctls.

Якщо в Linux wg-quick завершується помилкою про resolvconf, встановіть openresolv, як описано в розділі про підключення пристрою.

Оновіть wg-easy

Щоб встановити новішу збірку версії 15, завантажте новий образ і перестворіть контейнер:

cd /etc/docker/containers/wg-easy sudo docker compose pull sudo docker compose up -d

Клієнти і налаштування зберігаються, тому що вони містяться в томі Docker.

Зупиніть і видаліть wg-easy

Щоб зупинити VPN-сервер, виконайте в папці з docker-compose.yml:

sudo docker compose down

Конфігурація залишається в томі, і sudo docker compose up -d знову запускає сервер із тими самими клієнтами.

Щоб видалити wg-easy повністю, разом з усіма клієнтами та ключами, додайте параметр -v:

sudo docker compose down -v

Warning

Після sudo docker compose down -v усі конфігурації клієнтів перестають працювати. Щоб знову користуватися VPN, доведеться заново пройти перший запуск і створити клієнтів.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA