VpnHood!

Установка VpnHood! SERVER через Docker

Запустите сервер в контейнере на любом компьютере с Linux и Docker. Установка выполняется одной командой — в автономном режиме или под управлением, а контейнер обеспечивает непрерывную работу и автообновление.

Перед началом работы

  • Компьютер или сервер с Linux и публичным IP-адресом (архитектура x64 или arm64 — образ поддерживает обе). Системы, на которых работает сервер, перечислены в разделе Системные требования.
  • Права root-доступа.
  • Docker с плагином Compose. Установщик может настроить его автоматически на Ubuntu, Debian и производных дистрибутивах.
  • Открытый TCP-порт 443 в брандмауэре системы и у хостинг-провайдера. Контейнер использует сеть хоста напрямую, поэтому сервер слушает порт хоста.

Установка автономного сервера

Выполните эту команду. Она предложит установить Docker (если требуется), скачает compose-файл и запустит контейнер сервера.

sudo bash -c 'u=https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh; bash <(wget -qO- $u 2>/dev/null || curl -fsSL $u)'

Для автоматической установки без интерактивных запросов см. раздел Параметры установки.

Сервер сохраняет настройки, ключи и журналы в каталоге /opt/VpnHoodServer/storage на хосте, поэтому они не пропадут при пересоздании контейнера.

Создание ключа доступа

Выполните эту команду на сервере. Ключ будет сгенерирован внутри контейнера с актуальными настройками сервера.

sudo docker exec VpnHoodServer /app/vhsupervisor gen

Например, ключ для одного телефона

sudo docker exec VpnHoodServer /app/vhsupervisor gen -name Phone -maxClient 1

Вывод и параметры такие же, как у автономного сервера, установленного без Docker: скопируйте строку под заголовком --- AccessKey ---, а параметры, ограничивающие ключ, описаны в разделе Создание первого ключа доступа.

Подключение

Установите VpnHood! CLIENT на каждое устройство, добавьте ключ и подключайтесь.

Запуск, остановка и проверка сервера

Имя контейнера — VpnHoodServer. Docker автоматически перезапускает его при перезагрузке системы, а внутри контейнера сервер перезапускается при сбоях.

sudo docker logs VpnHoodServer
sudo docker stop VpnHoodServer
sudo docker start VpnHoodServer

Этот же лог сохраняется на хосте по пути /opt/VpnHoodServer/storage/logs/server.log.

Настройка конфигурации

Сервер считывает настройки из /opt/VpnHoodServer/storage/appsettings.json. Внесите изменения в файл и перезапустите контейнер командой sudo docker restart VpnHoodServer.

Если редактирование файла недоступно, задайте всё содержимое appsettings.json в переменной окружения VH_APPSETTINGS. Сервер будет использовать её вместо файла.

В разделах Настройка IP-адресов сервера и Использование доменного имени и доверенного сертификата описаны основные параметры, которые могут вам понадобиться.

Обновления

Сервер обновляется автоматически прямо внутри контейнера. Проверка версий выполняется при запуске и каждые 12 часов, после чего происходит мягкий перезапуск.

Чтобы зафиксировать текущую версию, укажите VH_AUTO_UPDATE=0 в переменных окружения контейнера.

Иногда для работы релиза нужен обновленный базовый образ. В этом случае сервер сохранит текущую версию, а в логе появится сообщение Pull the latest image! Просто выполните команду установки еще раз: она скачает свежий образ и пересоздаст контейнер с сохранением всех настроек и ключей.

Если установка выполнялась старой версией скрипта, запустите команду установки заново. Она перенесет сервер на актуальный образ и удалит устаревший контейнер VpnHoodUpdater.

Удаление

Чтобы удалить сервер, удалите его контейнер и образ. Настройки, ключи доступа и сертификаты останутся на хосте в /opt/VpnHoodServer/storage на случай повторной установки.

sudo docker rm -f VpnHoodServer && sudo docker rmi vpnhood/vpnhoodserver

Полное удаление настроек и ключей: устройства с этими ключами больше не смогут подключиться даже после переустановки

sudo rm -rf /opt/VpnHoodServer

Ручное создание контейнера

Если вы управляете контейнерами вручную, используйте конфигурацию, аналогичную скрипту установки: запускайте контейнер в сети хоста (host network).

sudo docker run -d --name VpnHoodServer --network host --restart always --stop-timeout 30 -v /opt/VpnHoodServer/storage:/app/storage vpnhood/vpnhoodserver

Для перехода на новый образ загрузите vpnhood/vpnhoodserver и пересоздайте контейнер.

Что дальше