Скачайте архив, необходимый для запуска шлюза DION Chat Gateway в контейнере:
https://static.dion.vc/hybrid/addons/dion-grpc-gateway.zip
Для работы TLS потребуется пара сертификатов:
server.crt;server.key.Можно использовать корпоративные внутренние сертификаты или сертификаты, выданные командой DION.
Архив содержит:
grpc-nginx-client-amd64-baeb71f.tar.gz — docker-образ nginx;docker-compose.yml — файл с параметрами запуска контейнера;.env — файл с настройками подключения к DION Crypto Engine и путями к сертификатам;certs — каталог для размещения сертификата и приватного ключа.Создайте каталог для размещения содержимого архива на целевой виртуальной машине:
sudo mkdir -p /app/dion/dion-chat-gw
Перейдите в созданный каталог:
cd /app/dion/dion-chat-gw
Поместите содержимое архива в каталог /app/dion/dion-chat-gw.
Убедитесь, что в каталоге присутствуют необходимые файлы:
ls -l /app/dion/dion-chat-gw
Ожидаемый состав каталога:
certs
grpc-nginx-client-amd64-baeb71f.tar.gz
docker-compose.yml
.env
Скопируйте TLS-сертификат и приватный ключ в каталог certs.
Пример:
sudo cp server.crt /app/dion/dion-chat-gw/certs/server.crt
sudo cp server.key /app/dion/dion-chat-gw/certs/server.key
Проверьте, что файлы находятся в каталоге:
sudo ls -la /app/dion/dion-chat-gw/certs
Установите Docker и Docker Compose, если они ещё не установлены.
Рекомендуем использовать официальную инструкцию Docker:
https://docs.docker.com/engine/install/ubuntu/
Загрузите Docker-образ из архива в локальный реестр:
sudo docker load -i /app/dion/dion-chat-gw/dion-chat-gw.tar.gz
Убедитесь, что образ появился в локальном реестре:
sudo docker images
В списке должен появиться образ, указанный в файле .env, например:
local/grpc-nginx-client baeb71f
Откройте файл .env для редактирования:
sudo nano /app/dion/dion-chat-gw/.env
Заполните параметры в файле .env.
Пример файла:
GRPC_GATEWAY_IMAGE=local/grpc-nginx-client:baeb71f
# Укажите адреса бэкенд-серверов в формате IP:PORT.
# Это серверы DION Crypto Engine, на которые шлюз будет проксировать входящие запросы.
# Обязательно заполните BACKEND_1.
# Остальные — опционально, для балансировки нагрузки между несколькими серверами.
BACKEND_1=10.0.0.1:9168
BACKEND_2=
BACKEND_3=
BACKEND_4=
BACKEND_5=
# Пути к TLS-сертификату и приватному ключу.
# Можно указать полный путь или относительный путь от каталога с docker-compose.yml.
TLS_CERT_HOST_PATH=./certs/server.crt
TLS_KEY_HOST_PATH=./certs/server.key
Где:
GRPC_GATEWAY_IMAGE — имя и тег Docker-образа шлюза. Обычно значение уже заполнено в архиве и менять его не требуется.BACKEND_1 — адрес первого экземпляра DION Crypto Engine. Параметр обязателен.BACKEND_2 — BACKEND_5 — дополнительные экземпляры DION Crypto Engine. Используются при наличии нескольких серверов для балансировки нагрузки.TLS_CERT_HOST_PATH — путь к TLS-сертификату на сервере.TLS_KEY_HOST_PATH — путь к приватному ключу на сервере.Если сертификаты были размещены в каталоге /app/dion/dion-chat-gw/certs, можно оставить относительные пути:
TLS_CERT_HOST_PATH=./certs/server.crt
TLS_KEY_HOST_PATH=./certs/server.key
Сохраните изменения в Nano:
Ctrl + O, затем Enter, затем Ctrl + X.
Перейдите в каталог с файлом docker-compose.yml:
cd /app/dion/dion-chat-gw
Запустите контейнер.
Для Docker Compose v2:
sudo docker compose up -d
Для Docker Compose v1:
sudo docker-compose up -d
Убедитесь, что контейнер запущен:
sudo docker ps
Контейнер должен находиться в статусе Up.
Проверьте логи контейнера.
Для Docker Compose v2:
sudo docker compose logs -f
Для Docker Compose v1:
sudo docker-compose logs -f
Если контейнер запустился корректно, в логах не должно быть ошибок, связанных с:
DION Crypto Engine;После запуска контейнера рекомендуется проверить:
Контейнер находится в статусе Up:
sudo docker ps
Файлы сертификата и ключа доступны контейнеру по путям, указанным в .env:
sudo ls -la /app/dion/dion-chat-gw/certs
В файле .env указан корректный адрес хотя бы одного экземпляра DION Crypto Engine:
sudo cat /app/dion/dion-chat-gw/.env
На сервере доступен порт, на котором работает шлюз.
Пример проверки локально:
sudo ss -tulpn
Проверьте логи:
sudo docker compose logs
или для Docker Compose v1:
sudo docker-compose logs
Частые причины:
docker load;.env указано имя образа, которого нет в локальном реестре;BACKEND_1.Проверьте, какие образы доступны локально:
sudo docker images
Значение в GRPC_GATEWAY_IMAGE должно совпадать с именем и тегом загруженного образа.
Проверьте, что файлы существуют:
sudo ls -la /app/dion/dion-chat-gw/certs
Также проверьте значения в .env:
TLS_CERT_HOST_PATH=./certs/server.crt
TLS_KEY_HOST_PATH=./certs/server.key
Имена файлов в .env должны совпадать с фактическими именами файлов в каталоге certs.
Если контейнер не запускается или в логах сохраняются ошибки, передайте вашей аккаунт-команде файл
.envбез приватного ключа, вывод командыsudo docker ps -aи логи контейнера.