VpnHood!

Запуск VpnHood! SERVER в Docker

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

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

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

Установка сервера под управлением

В VpnHood! MANAGER откройте раздел Servers, нажмите Add, задайте имя сервера и нажмите Create. Среди способов установки выберите Install on Linux manually by running a command. В появившейся команде замените VpnHoodServer-linux.sh на VpnHoodServer.docker.sh и выполните её на сервере. Контейнер установится с нужными параметрами подключения к MANAGER и задаст тот же вопрос, что и при автономной установке ниже.

Для уже созданного контейнера выберите Install Manually by configuring appsettings. Сохраните параметры из MANAGER в файл /opt/VpnHoodServer/storage/appsettings.json на хосте и перезапустите контейнер командой sudo docker restart VpnHoodServer.

Затем создайте ключи доступа для своих устройств в MANAGER в разделе Access Tokens.

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

Выполните эту команду. Она загрузит Compose-файл, запустит контейнер с сервером и задаст один вопрос.

sudo su -c "bash <( wget -qO- https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh)"

При появлении запроса Install Docker (y/n)? введите y для установки Docker или n, если он уже установлен.

Для автоматической установки в скриптах без подтверждения. Опустите параметр -install-docker, если Docker уже настроен.

sudo su -c "bash <( wget -qO- https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh) -install-docker -q"

Сервер сохраняет настройки, ключи и журналы в каталоге /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.

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

Если вы управляете контейнерами вручную, используйте конфигурацию, аналогичную скрипту установки: запускайте контейнер в сети хоста (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 и пересоздайте контейнер.

Что дальше