Требования¶
Прежде чем разворачивать 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-экране).
VPNHUB_MASTER_KEY (в .env, Secret или окружении контейнера).
Не задавайте VPNHUB_MASTER_KEY — при первом входе на пустой БД откроется setup-экран, где вы
введёте ключ вручную. Он сохранится в БД инстанса — так панель расшифровывает секреты после
перезапуска; повторно вводить ключ нужно только при восстановлении на чистой базе.
Что нужно запомнить про мастер-ключ
- Потеря ключа необратима: без него нельзя расшифровать SSH-доступы к серверам и
восстановить
.vhb-бэкапы. Храните его в менеджере паролей отдельно от сервера. - На адресе с
https(VPNHUB_BASE_URL=https://…) панель откажется стартовать с дефолтным/пустым ключом — это защита от шифрования известным ключом из репозитория. VPNHUB_MASTER_KEY— единственный источник ключа шифрования (отдельного секрет-ключа нет).
С каким уровнем подготовки что выбрать¶
- Не работал с Docker → Скрипт установки: одна команда, всё поднимется само.
- Знаю Docker, один сервер → Docker Compose.
- Уже есть PostgreSQL → Внешняя база данных.
- Есть кластер → Kubernetes.
Дальше: выберите способ — Docker Compose → · Скрипты → · Kubernetes →