EUR
european

EUR

usa

USD

Russian Ru
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 App marketplace и сразу переходите к первому запуску.

Установите 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