Коротко: арендуем небольшой VDS с публичным IPv4, ставим AmneziaWG и веб-панель одной PowerShell-командой, создаём отдельный профиль для каждого устройства и импортируем
.confв WireSock Secure Connect на Windows.
В статье покажу воспроизводимый способ поднять личный VPN-сервер на Ubuntu/Debian VDS. Серверную часть развернёт мой открытый скрипт amneziawg-vds-setup, а на Windows будем подключаться через WireSock Secure Connect.
Это материал про собственный сервер для личного или разрешённого корпоративного использования. Перед настройкой проверьте требования законодательства, правила провайдера и внутренние политики вашей организации.
Что получится
После выполнения шагов у нас будет такая схема:
Windows + WireSock Secure Connect │ профиль .conf │ зашифрованный UDP-туннель ▼VDS: AmneziaWG + awg-easy │ Интернет
На VDS работают AmneziaWG и русифицированная веб-панель awg-easy. В панели можно выпускать и отзывать клиентские профили. На компьютере WireSock импортирует полученный файл .conf, подключает туннель и при необходимости позволяет настроить split tunneling.
Важно разделять роли:
-
VDS — это сервер с публичным IP-адресом;
-
скрипт устанавливает и проверяет серверную часть;
-
файл
.conf— секретный клиентский профиль с приватным ключом; -
WireSock Secure Connect — Windows-клиент. Он не создаёт VPN-сервер самостоятельно.
Что понадобится
Минимальный практичный набор для одного-нескольких пользователей:
|
Ресурс |
Рекомендация |
|---|---|
|
Виртуализация |
KVM или аналог с полноценным ядром Linux |
|
Процессор и память |
от 1 vCPU и 1 ГБ RAM |
|
Диск |
от 10 ГБ |
|
Сеть |
выделенный публичный IPv4, без CGNAT |
|
ОС |
чистый Ubuntu или Debian |
|
Доступ |
|
|
На Windows |
PowerShell 7 и OpenSSH Client |
Для VPN важнее качество маршрута и доступность UDP, чем большой объём RAM. Географию VDS выбирайте ближе к вашим пользователям и сервисам, с которыми вы легально работаете.
Шаг 1. Арендуем VDS
Подойдёт любой провайдер, который выдаёт публичный IPv4, разрешает входящий UDP и даёт root-доступ к Ubuntu/Debian. При заказе обратите внимание на четыре пункта:
-
Выберите Ubuntu или Debian. Не берите панельный образ: скрипт ожидает чистую систему.
-
Убедитесь, что в карточке сервера есть публичный IPv4 и доступ по SSH.
-
Проверьте, что в личном кабинете или во внешнем firewall можно открыть UDP-порт VPN.
-
Сохраните IP-адрес сервера и первоначальные реквизиты root-доступа в менеджер паролей.
В качестве одного из вариантов можно использовать HostVDS. Это партнёрская ссылка: при заказе по ней я могу получить вознаграждение, а для вас условия заказа не меняются. Выбор провайдера остаётся за вами.
После создания VDS полезно сразу проверить вход по SSH из Windows:
ssh root@203.0.113.10
Замените 203.0.113.10 на IP своего сервера. При первом подключении подтвердите отпечаток ключа сервера только после сверки его с данными из личного кабинета провайдера. Если вход не проходит, сначала исправьте это: причинами обычно бывают ещё не завершившееся создание VDS, неверный пароль, закрытый 22/TCP или запрет root-входа в выбранном образе.
Какие порты понадобятся
Необязательно открывать всё подряд. Достаточно следующего набора:
|
Порт |
Протокол |
Для чего |
|---|---|---|
|
22 |
TCP |
администрирование SSH |
|
1234 |
UDP |
VPN по умолчанию |
|
51821 |
TCP |
веб-панель без TLS |
|
80 и 443 |
TCP |
только при включении TLS через домен |
Порт VPN и порт панели можно изменить при запуске скрипта. Если у провайдера есть облачный firewall, откройте порты и там: настройка UFW внутри VDS не отменяет правила внешнего firewall.
Шаг 2. Подготовим Windows
Скрипт написан для PowerShell 7. Проверим его наличие:
pwsh --versionssh -V
Если первая команда не найдена, установите PowerShell 7 с официального сайта Microsoft. OpenSSH Client обычно уже установлен в Windows 10/11; при его отсутствии добавьте компонент «Клиент OpenSSH» в Параметры → Система → Дополнительные компоненты.
Скачайте исходный код скрипта в удобную папку:
git clone https://github.com/chelslava/amneziawg-vds-setup.gitcd .\amneziawg-vds-setup
Либо скачайте ZIP со страницы репозитория и распакуйте его. Клонирование удобнее: для обновления достаточно выполнить git pull.
Перед запуском полезно открыть README.md и проверить, что запускается именно ожидаемый файл Install-AmneziaWG.ps1. Не передавайте SSH-пароль в аргументах командной строки и не сохраняйте его в .ps1, заметках или конфигурации проекта.
Шаг 3. Устанавливаем AmneziaWG и панель
Самый простой запуск
В PowerShell 7 из каталога репозитория выполните:
pwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1
Скрипт последовательно спросит IP-адрес или DNS-имя VDS и покажет защищённое стандартное окно ввода SSH-учётных данных. По умолчанию предполагается пользователь root.
Для первого развёртывания это всё. Скрипт:
-
проверит SSH-доступ и сохранит ключ хоста в known_hosts;
-
установит Docker и нужные пакеты на Ubuntu/Debian;
-
включит IP forwarding на хосте;
-
запустит контейнер
ghcr.io/yokitoki/awg-easy:latestвhost-сети; -
создаст случайный bcrypt-пароль для панели;
-
дождётся статуса
healthy, проверит HTTP 200, UDP-порт VPN иawg show; -
в конце выведет адрес панели и одноразово покажет её пароль.
Данные сервера и выпущенные клиентские профили остаются на VDS в /opt/awg-easy. Не удаляйте этот каталог: иначе клиенты перестанут быть управляемыми через панель.
Запуск с явными параметрами
Ниже пример с IP-адресом, портом VPN по умолчанию и включением UFW-правил, если UFW уже активен:
pwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1 ` -HostName 203.0.113.10 ` -SshUser root ` -VpnPort 1234 ` -WebPort 51821 ` -ConfigureUfw
-ConfigureUfw не включает UFW сам и не меняет неактивный firewall: в этом случае скрипт выведет предупреждение. Поэтому порты всё равно нужно контролировать в панели VDS-провайдера.
Если root-доступ уже переведён на SSH-ключ, пароль вообще не понадобится:
pwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1 ` -HostName vpn.example.net ` -SshUser root ` -IdentityFile "$env:USERPROFILE\.ssh\id_ed25519"
Путь к ключу укажите свой. Скрипт использует ключ только для SSH-сессии и не копирует его на VDS.
Вариант с HTTPS для панели
Открытая в HTTP панель на http://IP:51821 подходит только для первоначальной настройки в доверенной сети. Для постоянного доступа лучше подключить домен и TLS.
До запуска создайте DNS-запись типа A, например vpn.example.net, указывающую на IPv4 VDS. Затем дождитесь, пока имя резолвится в этот адрес, и выполните:
pwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1 ` -HostName vpn.example.net ` -TlsDomain vpn.example.net ` -ConfigureUfw ` -RestrictPanelToTls
В этом режиме скрипт запускает Caddy в отдельном контейнере и проксирует панель на HTTPS. Для выпуска сертификата должны быть доступны 80/TCP и 443/TCP снаружи. Ключ -RestrictPanelToTls закрывает прямой WebPort через UFW, но только если UFW активен; для полной защиты добавьте аналогичное правило во внешнем firewall провайдера.
Шаг 4. Первый вход в панель и выпуск профиля
После успешной установки терминал выведет примерно такую информацию:
Готово. Панель: http://203.0.113.10:51821Пароль панели: <случайный пароль>VPN: UDP 1234
Откройте адрес панели в браузере, войдите с выведенным паролем и сразу сохраните его в менеджер паролей. Не вставляйте его в скриншоты, тикеты или публичные чаты. При включённом TLS адрес будет https://vpn.example.net.
Дальше в панели:
-
Нажмите
+и создайте клиента, напримерwindows-laptop. -
Скачайте его конфигурацию
.conf. QR-код удобен для мобильных приложений, а для WireSock на Windows нужен именно файл. -
Повторяйте это для каждого устройства:
phone,work-laptop,tabletи так далее. -
Если устройство потеряно или больше не используется, удалите/отзовите соответствующего клиента в панели и создайте новый профиль, а не передавайте старый файл другому человеку.
Файл .conf содержит приватный ключ. Относитесь к нему как к паролю: не кладите в Git, облачную папку с общим доступом, почту или мессенджер без защищённой передачи.
Шаг 5. Подключаемся из WireSock Secure Connect
Скачайте WireSock Secure Connect только с официального сайта и установите актуальную версию для своей архитектуры Windows. После установки:
-
Запустите WireSock Secure Connect.
-
На первом экране нажмите
Browseи выберите созданный файл.conf; также файл можно перетащить в окно приложения. -
Убедитесь, что профиль появился в списке, выберите его и нажмите Connect.
-
Проверьте, что статус сменился на подключённый, а внешний IP на сайте проверки IP совпал с IP вашего VDS.
WireSock импортирует обычные WireGuard-конфигурации и Amnezia-совместимые профили. Импорт должен выполняться без ручного редактирования файла — именно так сохраняются ключи, адреса, порт и параметры, которые панель выдала в паре с сервером.
Настройки, которые стоит проверить
Для первой проверки оставьте настройки профиля по умолчанию и сначала добейтесь стабильного соединения. Затем при необходимости откройте Preferences → Profiles → Edit:
-
Tunneled networks / addresses: значение
0.0.0.0/0, ::/0направляет весь IPv4/IPv6-трафик через VPN. Если оно изменено, получится выборочная маршрутизация. -
Bypass LAN Traffic: включайте только в доверенной домашней/офисной сети, если нужны принтер, NAS или другие локальные устройства. На публичном Wi-Fi лучше не включать.
-
Split tunneling по приложениям: добавляйте его только когда точно понимаете требуемый маршрут. В WireSock список приложений действует совместно со списком сетей: трафик должен удовлетворять обоим условиям.
Не меняйте вручную параметры на вкладке DPI protection в импортированном профиле, пока базовое соединение не проверено. Параметры AmneziaWG должны совпадать на клиенте и сервере. В частности, скрипт использует awg-easy, который выдаёт AmneziaWG Legacy-совместимые конфигурации, а не устанавливает официальный AmneziaWG 2.0. Возможности WireSock по локальной обфускации и параметры сервера — это разные уровни настройки; подмена значений «наугад» часто приводит к отсутствию handshake.
Что делать, если не подключается
Лучший порядок диагностики — идти от сервера к клиенту, не меняя несколько параметров разом.
1. Проверить состояние через скрипт
pwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1 ` -HostName 203.0.113.10 ` -Mode Status
При нестандартных портах и TLS повторите те же -VpnPort, -WebPort и -TlsDomain, с которыми сервер был установлен. Режим Status ничего не переустанавливает: он проверяет контейнер, локальный HTTP, порты и интерфейс AmneziaWG.
2. Проверить firewall
Нужны минимум UDP-порт VPN и TCP-порт панели или 443/TCP при TLS. Проверьте две точки: правила у VDS-провайдера и состояние UFW на самой машине. Типичный симптом закрытого UDP — WireSock не получает handshake, хотя панель в браузере открывается.
3. Посмотреть состояние на сервере
Подключитесь по SSH и выполните:
docker inspect -f '{{.State.Health.Status}}' amnezia-wg-easydocker exec amnezia-wg-easy awg showdocker logs --tail=100 amnezia-wg-easy
Первой командой ожидается healthy. После попытки соединения WireSock во второй команде у соответствующего peer должен появиться свежий handshake и переданные байты. Не публикуйте полный вывод логов, если он содержит адреса, имена клиентов или конфигурационные данные.
4. Проверить WireSock
Убедитесь, что импортирован именно свежий .conf нужного клиента, выбран правильный профиль, а системное время Windows установлено корректно. Посмотрите журнал приложения. Если вы уже включали split tunneling, temporary верните режим всего трафика и повторите проверку. Если параметры DPI protection менялись вручную — восстановите профиль из исходного .conf или импортируйте его повторно.
Эксплуатация после установки
Обновить контейнер
Сначала обновите локальный репозиторий, затем запустите режим обновления:
git pullpwsh -ExecutionPolicy Bypass -File .\Install-AmneziaWG.ps1 ` -HostName 203.0.113.10 ` -Mode Update
Режим Update скачивает актуальный образ и перезапускает контейнер, сохраняя каталог /opt/awg-easy/wireguard и пароль панели. При нестандартных параметрах укажите их повторно, например -VpnPort, -WebPort, -TlsDomain и -ConfigureUfw, чтобы проверка и TLS-конфигурация использовали те же значения.
Что не стоит делать без необходимости
-
Не используйте
-Mode Reconfigure -Forceкак обычное обновление: этот режим намеренно создаёт новый пароль панели. -
Не удаляйте
/opt/awg-easy/wireguardи не переносите его в публичные хранилища. -
Не оставляйте SSH root с постоянным паролем. После первого входа лучше настроить SSH-ключ, отключить парольный root-вход согласно политике администрирования и хранить резервную консоль провайдера на случай ошибки.
-
Не используйте один клиентский профиль на всех устройствах — так невозможно безопасно отозвать только одно устройство.
Минимальный чек-лист безопасности
-
Уникальный пароль панели находится в менеджере паролей.
-
SSH доступен по ключу, а не по постоянному паролю.
-
Во внешнем firewall открыты только действительно нужные порты.
-
Панель доступна по HTTPS или ограничена доверенным IP-адресом.
-
На каждом устройстве — отдельный
.conf. -
Перед обновлениями есть резервная копия данных VDS и понятный план восстановления.
Итог
В результате получился не «VPN-сервис с общей учётной записью», а контролируемый личный сервер: вы выбираете провайдера, управляете клиентами в панели и можете отозвать конкретный ключ без переустановки всей инфраструктуры. Скрипт снимает рутинные этапы Docker-настройки и первичной проверки, а WireSock Secure Connect даёт на Windows удобный импорт профиля, подключение и настройки маршрутизации.
Исходный код скрипта и актуальные параметры запуска: chelslava/amneziawg-vds-setup. Документация по импорту, редактированию профилей и split tunneling: WireSock Secure Connect.
ссылка на оригинал статьи https://habr.com/ru/articles/1060394/