Skip to content

Требования

Прежде чем разворачивать VPN Hub, проверьте платформу, версии, порты и ресурсы. Панель — это один контейнер (API + веб-интерфейс + планировщик + миграции при старте) и PostgreSQL.

Платформа

Компонент Требование
ОС Любой Linux с Docker (прод) или Kubernetes-кластер. macOS/Windows — только для локального теста.
Архитектура linux/amd64 и linux/arm64 (Apple Silicon, ARM-VPS вроде Oracle Ampere / AWS Graviton). Образ мультиарх — тянется нативно.
Docker Docker Engine 20.10+ и плагин Compose v2 (команда docker compose, не docker-compose). Проверка: docker compose version.
Kubernetes 1.27+ (используются только стабильные API). Нужен kubectl; Kustomize встроен (kubectl apply -k).
PostgreSQL Рекомендуется 17. Расширений PostgreSQL панель не использует, поэтому подойдёт и 14+; CI проверяется на 17.

Compose v2

Если docker compose version не работает, а есть только старый docker-compose — обновите Docker до актуальной версии с плагином Compose v2. Инструкции по деплою рассчитаны на docker compose.

Ресурсы

Панель лёгкая — она управляет серверами, а не гоняет через себя VPN-трафик. Для семьи/друзей хватает минимума.

Профиль vCPU RAM Диск
Минимум (панель + встроенный Postgres) 1 1 ГБ 10 ГБ
Комфортно 2 2 ГБ 20 ГБ
Внешняя БД (только панель) 1 512 МБ 5 ГБ

Диск расходуется под данные PostgreSQL, .vhb-бэкапы и каталог провайдеров.

Порты

Порт Направление Назначение Обязателен
8000/tcp входящий HTTP-интерфейс и API панели да (если без reverse-proxy)
80, 443/tcp входящий HTTP/HTTPS через reverse-proxy (Caddy/Traefik/nginx) при публикации на домене
5432/tcp внутренний PostgreSQL (контейнер-контейнер, наружу не публикуется)
22/tcp (или ваш SSH) исходящий панель ходит по SSH на ваши VPN-серверы (установка/мониторинг/синк) да

Служебные HTTP-эндпоинты панели: /healthz (liveness), /readyz (проверка БД), /metrics (Prometheus). Наружу их публиковать не нужно.

Исходящий SSH

VPN Hub устанавливает и обслуживает VPN на ваших серверах по SSH. С хоста панели должен быть доступен SSH-порт каждого управляемого сервера. Если между ними файрвол — разрешите исходящие подключения на нужные порты.

Мастер-ключ восстановления

Это самый важный параметр безопасности. Один мастер-ключ через HKDF даёт два под-ключа: шифрование SSH-доступов к серверам (и прочих секретов) и шифрование резервных копий.

Приоритет источников: VPNHUB_MASTER_KEY (окружение) → значение в БД (задаётся на setup-экране).

openssl rand -hex 32     # сгенерировать ключ
Положите результат в VPNHUB_MASTER_KEY.env, Secret или окружении контейнера).

Не задавайте VPNHUB_MASTER_KEY — при первом входе на пустой БД откроется setup-экран, где вы введёте ключ вручную. Он сохранится в БД инстанса — так панель расшифровывает секреты после перезапуска; повторно вводить ключ нужно только при восстановлении на чистой базе.

Что нужно запомнить про мастер-ключ

  • Потеря ключа необратима: без него нельзя расшифровать SSH-доступы к серверам и восстановить .vhb-бэкапы. Храните его в менеджере паролей отдельно от сервера.
  • На адресе с https (VPNHUB_BASE_URL=https://…) панель откажется стартовать с дефолтным/пустым ключом — это защита от шифрования известным ключом из репозитория.
  • VPNHUB_MASTER_KEYединственный источник ключа шифрования (отдельного секрет-ключа нет).

С каким уровнем подготовки что выбрать


Дальше: выберите способ — Docker Compose → · Скрипты → · Kubernetes →