Установка DVT с помощью единого командного скрипта
Обратите внимание, переменная окружения DVT_FERNET_KEY обязательна: без неё контейнеры не запустятся. Проверьте, что она задана в вашем окружении перед обновлением.
DVT разворачивается в среде Docker под управлением ОС Linux.
Для доступа к дистрибутивам и серверу лицензирования должен быть обеспечен доступ с сервера (виртуальной машины), где будет разворачиваться DVT по следующим адресам «Денвик»:
lic.denvic.ru:443
lic2.denvic.ru:443
distribution.denvic.tech:443
А также публичные ресурсы:
В видео продемонстрирован пример развертывания DVT в Yandex Cloud:
Установка Docker Engine на Linux
Актуально для Debian/Ubuntu-серверов. Для других дистрибутивов лучше использовать отдельную официальную инструкцию Docker Engine под конкретную ОС.
Что будет установлено:
docker-ce— Docker Engine;docker-ce-cli— CLI-клиентdocker;containerd.io— container runtime;docker-buildx-plugin— сборка образов через Buildx;docker-compose-plugin— современный Docker Compose v2, который запускается какdocker compose.
Проверка дистрибутива
. /etc/os-release printf 'ID=%s\nVERSION_CODENAME=%s\nUBUNTU_CODENAME=%s\n' "$ID" "${VERSION_CODENAME:-}" "${UBUNTU_CODENAME:-}"
Этот гайд покрывает Debian и Ubuntu. Если у вас производный дистрибутив вроде Kali, Linux Mint или LMDE, проверьте, какому Debian/Ubuntu-релизу он соответствует, и используйте его кодовое имя.
Удаление конфликтующих пакетов
Если Docker уже ставили из репозиториев дистрибутива, эти пакеты могут конфликтовать с официальными пакетами Docker.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove -y "$pkg" 2>/dev/null || true done
Этот шаг не удаляет существующие образы, контейнеры, volumes и networks из /var/lib/docker.
Установка зависимости для APT-репозитория
sudo apt update sudo apt install -y ca-certificates curl
Добавление официального GPG-ключа Docker
. /etc/os-release case "$ID" in debian) DOCKER_REPO_URL="https://download.docker.com/linux/debian" DOCKER_CODENAME="$VERSION_CODENAME" ;; ubuntu) DOCKER_REPO_URL="https://download.docker.com/linux/ubuntu" DOCKER_CODENAME="${UBUNTU_CODENAME:-$VERSION_CODENAME}" ;; *) echo "Этот гайд покрывает только Debian и Ubuntu. Для '$ID' откройте официальную инструкцию Docker под ваш дистрибутив." exit 1 ;; esac sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL "$DOCKER_REPO_URL/gpg" -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
Добавление официального APT-репозитория Docker
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF Types: deb URIs: $DOCKER_REPO_URL Suites: $DOCKER_CODENAME Components: stable Architectures: $(dpkg --print-architecture) Signed-By: /etc/apt/keyrings/docker.asc EOF sudo apt update
Установка Docker Engine и плагинов
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl status docker --no-pager
Если сервис не запущен:
sudo systemctl start docker
На Debian и Ubuntu Docker обычно автоматически стартует при загрузке системы. Если нужно включить автозапуск явно:
sudo systemctl enable docker.service sudo systemctl enable containerd.service
Проверка установки
sudo docker run --rm hello-world docker compose version docker buildx version
Если hello-world отработал без ошибки, Docker установлен корректно. После этого можно переходить к установке DVT.
Опционально: запуск Docker без sudo
По умолчанию доступ к Docker-сокету есть только у root, поэтому команды запускаются через sudo. Если нужно запускать docker от обычного пользователя, добавьте пользователя в группу docker:
sudo groupadd docker 2>/dev/null || true sudo usermod -aG docker "$USER" newgrp docker
Проверьте:
docker run --rm hello-world
Группа docker фактически даёт пользователю root-level доступ к хосту. На продакшен-серверах добавляйте в неё только доверенных пользователей.
Обновление Docker
Docker будет обновляться через обычный apt, так как установлен из официального APT-репозитория:
sudo apt update sudo apt upgrade -y
Источники
Docker Docs — Install Docker Engine on Debian: https://docs.docker.com/engine/install/debian/
Docker Docs — Install Docker Engine on Ubuntu: https://docs.docker.com/engine/install/ubuntu/
Docker Docs — Linux post-installation steps: https://docs.docker.com/engine/install/linux-postinstall/
Далее можно переходить к установке DVT.
Установка DVT
Установка по умолчанию
Запустите установочный скрипт:
bash <(sudo curl -fsSL https://raw.distribution.denvic.tech/dvt/install.sh)
Скрипт запустится и перейдёт в интерактивный режим настройки.
После запуска отображается приветствие:
🚀 Добро пожаловать в установщик DVT
Далее последовательно будут заданы параметры окружения.
🔑 Лицензионный ключ
Скрипт запросит лицензионный ключ и выполнит его проверку на сервере лицензий:
🔑 Введите лицензионный ключ DVT. > XXXXX-XXXXX-XXXXX
При успешной проверке выводится подтверждение.
🗄 Каталог данных
Необходимо указать каталог, где будут храниться данные PostgreSQL, Redpanda и файлов окружения:
🗄 Каталог для данных DVT По умолчанию: /var/lib/dvt > /mnt/dvt
Каталог создаётся автоматически.
🌐 Публичный URL
Устанавливается адрес, по которому вы будете открывать интерфейс DVT:
🌐 Публичный URL DVT Например: http://localhost или https://dvt.company.local > http://localhost
Скрипт автоматически определяет необходимость использования Secure cookies.
⚙️ Выбор версии образов
Укажите Docker‑tag:
Введите версию DVT (docker tag) или оставьте latest: > latest
🗄 Параметры PostgreSQL
Скрипт разворачивает встроенный PostgreSQL и предлагает задать параметры:
Имя пользователя PostgreSQL: [dvt-user] Имя базы PostgreSQL: [DVT] Пароль PostgreSQL (пусто = сгенерировать случайный): > ******
При пустом вводе будет создан безопасный случайный пароль.
🔑 Аккаунт администратора
Создаётся первый пользователь админ‑панели:
Имя пользователя администратора: [dvt-admin] Пароль администратора (пусто = сгенерировать случайный): > ******
🔐 Токены внутренних сервисов
Генерируются ключи для Store Service, gRPC Forward Service и Fernet. Каждый можно ввести вручную или оставить генерацию скрипту.
⚙️ Формирование .env
Установщик автоматически создаёт файл окружения .env в каталоге установки. В нём хранятся параметры доступа к БД, токены сервисов, публичный URL и настройки контейнеров.
При наличии существующего .env создаётся резервная копия.
📋 Итоговая конфигурация
Перед запуском сервисов отображается краткое резюме параметров:
Сводка конфигурации: Лицензионный ключ: XXXXX... Каталог данных: /var/lib/dvt Публичный URL: http://localhost Версия образов: latest Продолжить установку? [Y/n]
🚀 Запуск сервисов
Скрипт скачивает файл docker-compose.yaml, авторизуется в Container Registry и запускает DVT:
🚀 Запускаем DVT через 'sudo docker compose -f /var/lib/dvt/docker-compose.yaml up -d'
После старта появится сообщение:
✓ DVT запущен. Откройте в браузере: http://localhost
Установка не в интерактивном режиме
Также есть возможность запустить установщик не в интерактивном режиме.
Флаги установщика DVT:
Пример:
sudo bash install.sh -n --license XXXXX --version 1.15.0 --public-url https://dvt.example.ru
Полезные рекомендации
Установщик полностью интерактивный — достаточно отвечать на вопросы по порядку.
Для продвинутых сценариев возможна автоматизация через параметры окружения и предварительно подготовленный
.env.Все данные и конфигурации располагаются в каталоге, который вы указали на этапе установки.
После завершения установки система готова к работе, а все контейнеры можно посмотреть командой:
sudo docker ps
Настройка HTTPS для DVT через Angie
Ниже приведён пример настройки HTTPS и обратного проксирования запросов к DVT с помощью веб-сервера Angie.Конфигурация является лишь примером. При необходимости ее можно адаптировать под инфраструктуру вашей организации.
Предварительные требования
Перед настройкой необходимо подготовить:
Доменное имя для DVT;
SSL-сертификат и соответствующий ему приватный ключ;
Установленный и запущенный Angie;
Сетевой доступ от сервера Angie до сервера, на котором развернут DVT;
Доступность входящих подключений на порты
80и443.
В примере используются следующие переменные:
Домен DVT: dvt.your_org.ru Адрес сервера DVT: 192.168.111.111:80 SSL-сертификат: /etc/ssl/private/your_org.ru.crt Приватный ключ: /etc/ssl/private/your_org.ru.key
При использовании примера замените эти значения на параметры вашей инфраструктуры.
Глобальная настройка Websocket
DVT использует Websocket-соединения, поэтому для корректного формирования заголовка Connection добавьте глобальную директиву map.
Создайте файл:
nano /etc/angie/http.d/00-map-websocket.conf
Добавьте в него:
map $http_upgrade $connection_upgrade { default upgrade; '' close; }
Эта настройка указывается только один раз и может использоваться несколькими виртуальными хостами.
Для проксирования WebSocket требуется передавать заголовки Upgrade и Connection, а также использовать HTTP/1.1 при соединении с upstream-сервером.
Настройка виртуального хоста DVT
Создайте отдельный конфигурационный файл, например:
nano /etc/angie/http.d/dvt.conf
Добавьте следующую конфигурацию:
server { listen 80; server_name dvt.your_org.ru; return 301 https://$host$request_uri; } server { listen 443 ssl; http2 on; server_name dvt.your_org.ru; # SSL-сертификаты ssl_certificate /etc/ssl/private/your_org.ru.crt; ssl_certificate_key /etc/ssl/private/your_org.ru.key; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4'; ssl_prefer_server_ciphers on; # Логирование access_log /var/log/angie/dvt.your_org.ru-access.log; error_log /var/log/angie/dvt.your_org.ru-error.log; # WebSocket-соединения location /ws { proxy_pass http://192.168.111.111:80; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # Таймауты для долгоживущих соединений proxy_read_timeout 86400s; proxy_send_timeout 86400s; # Стандартные прокси-заголовки proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } # Основной HTTP-трафик DVT location / { proxy_pass http://192.168.111.111:80/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; client_max_body_size 10m; client_body_buffer_size 128k; proxy_read_timeout 300s; proxy_send_timeout 300s; } }
Первый блок server перенаправляет HTTP запросы с 80 порта на HTTPS.
Второй блок:
принимает HTTPS запросы на 443 порту;
подключает SSL сертификат;
включает HTTP/2;
проксирует основной трафик на сервер DVT;
отдельно обрабатывает соединения Websocket по пути
/ws;передаёт upstream-серверу исходный домен, IP-адрес клиента и информацию о протоколе HTTPS.
Настройка listen 443 ssl, а также директивы ssl_certificate и ssl_certificate_key соответствуют стандартной схеме настройки HTTPS в Angie. HTTP/2 в Angie включается отдельной директивой http2 on.
Какие параметры необходимо заменить
Перед применением конфигурации замените:
Доменное имя
server_name dvt.your_org.ru;на доменное имя вашего экземпляра DVT.Адрес DVT
proxy_pass http://158.160.216.111:80;На IP-адрес и порт сервера, где развернут DVT.Адрес необходимо заменить в обоих блоках
location.Пути к SSL-сертификатам:
ssl_certificate /etc/ssl/private/your_org.ru.crt; ssl_certificate_key /etc/ssl/private/your_org.ru.key;
Укажите реальные пути к сертификату и приватному ключу вашего домена.
Пути к журналам
При необходимости измените:
access_log /var/log/angie/dvt.your_org.ru-access.log; error_log /var/log/angie/dvt.your_org.ru-error.log;
У пользователя, от имени которого работает Angie, должны быть права на запись в соответствующий каталог.
Применение конфигурации
После сохранения файлов:
Проверьте конфигурацию Angie на наличие синтаксических ошибок.
Если проверка прошла успешно, перезагрузите конфигурацию Angie.
Откройте DVT по настроенному HTTPS адресу.
Проверьте работу интерфейса и WebSocket-соединений.
При возникновении ошибок проверьте журналы:
/var/log/angie/dvt.your_org.ru-access.log /var/log/angie/dvt.your_org.ru-error.log
Также убедитесь, что сервер Angie имеет сетевой доступ к указанному в proxy_pass адресу DVT.
Проверка результата
После завершения настройки должны выполняться следующие условия:
обращение по
http://dvt.your_org.ruперенаправляется на HTTPS;интерфейс DVT открывается по
https://dvt.your_org.ru;браузер не сообщает об ошибках SSL-сертификата;
загрузка файлов работает корректно;
Websocket соединение по пути
/wsуспешно устанавливается;в интерфейсе DVT отсутствуют ошибки соединения с сервером.