Установка 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 VpnHoodServersudo docker stop VpnHoodServersudo 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 и пересоздайте контейнер.