Перейти к основному содержимому
Версия: ИИ спец релиз

Установка с помощью Docker Compose

Установка с помощью Docker Compose подходит для развертывания TRON.ASOC на одном сервере. Для развертывания в кластере Kubernetes см. раздел Установка с помощью Helm Chart.

Перед началом работы​

Для установки TRON.ASOC с помощью Docker Compose потребуются:

  • учетные данные для доступа к реестру pcr.tronasoc.ru — логин и пароль запросите в службе поддержки: support@tronasoc.ru;
  • архив asoc-v1.7-docker-compose.zip с конфигурационными файлами — актуальную версию запросите в службе поддержки;
  • доменное имя для веб-интерфейса TRON.ASOC — зарезервируйте его в инфраструктуре заранее.

Быстрая установка с помощью install.sh​

Самый быстрый способ установить TRON.ASOC — распаковать архив с конфигурационными файлами и запустить скрипт install.sh:

unzip asoc-v1.7-docker-compose.zip
cd asoc-v1.7-docker-compose
./install.sh

Скрипт создает файл .env (или дополняет существующий, проверив обязательные переменные), генерирует недостающие секретные значения и запускает установку.

К сведению

Чтобы настроить дополнительные параметры (HTTPS, выбор S3-совместимого хранилища, ИИ-сервисы), задайте нужные переменные вручную перед запуском скрипта, как описано в разделе Порядок действий ниже, либо отредактируйте файл .env после первого запуска скрипта и перезапустите установку.

Порядок действий​

Ручная установка TRON.ASOC с помощью Docker Compose включает следующие этапы:

  1. Настройка окружения.
  2. Запуск.
  3. Проверка работоспособности.

Настройка окружения​

Чтобы настроить окружение, выполните следующие шаги:

  1. Распакуйте архив с конфигурационными файлами:

    unzip asoc-v1.7-docker-compose.zip
    cd asoc-v1.7-docker-compose
  2. Создайте файл .env и задайте обязательные переменные:

    ASOC_DOMAIN=asoc.example.com
    ASOC_SCHEME=http
    COMPOSE_PROFILES=minio
    К сведению

    Значение переменной ASOC_DOMAIN — доменное имя, по которому будет доступен веб-интерфейс TRON.ASOC. Если в инфраструктуре нет настроенного DNS-сервера, добавьте в локальный файл hosts следующую запись:

    echo "127.0.0.1 asoc.example.com" | sudo tee -a /etc/hosts
    Внимание

    Для пилотных проектов с доступом из сети создайте на DNS-сервере A-запись, указывающую на IP-адрес сервера с Docker Compose.

  3. Выберите схему доступа к веб-интерфейсу значением переменной ASOC_SCHEME:

    • http (по умолчанию) — nginx слушает порт 80, сертификаты не требуются;
    • https — nginx слушает порт 443 с перенаправлением с порта 80. Сертификаты fullchain.pem и privkey.pem нужно поместить в каталог ./certs либо указать другой каталог переменной ASOC_TLS_CERTS_DIR.
    К сведению

    При использовании https рекомендуется также задать переменную HTTP_COOKIE_SECURE=true.

  4. Выберите S3-совместимое хранилище для хранения отчетов и результатов сканирования и укажите его в переменной COMPOSE_PROFILES:

    • MinIO (по умолчанию):

      COMPOSE_PROFILES=minio
    • SeaweedFS:

      COMPOSE_PROFILES=seaweedfs
      ASOC_MINIO_HOST=seaweedfs
    Внимание

    Если не указать значение переменной COMPOSE_PROFILES, то ни MinIO, ни SeaweedFS не будут запущены и отчеты не будут сохраняться.

  5. При выборе MinIO создайте директорию для хранения его данных:

    sudo mkdir -p /mnt/minio-data
    sudo chown -R 2222:2222 /mnt/minio-data
    sudo chmod -R 755 /mnt/minio-data
    К сведению

    Для SeaweedFS отдельная директория не требуется — его данные хранятся в томе Docker seaweedfs-data.

  6. При необходимости включите ИИ-сервисы, добавив соответствующий профиль в переменную COMPOSE_PROFILES:

    • ИИ-ассистент (ai-service и rag):

      COMPOSE_PROFILES=minio,assistant

      Дополнительно задайте в файле .env ключ авторизации GigaChat (AI_SERVICE_GIGACHAT_AUTH_KEY).

      Fernet-ключ (AI_SERVICE_SETTINGS_ENCRYPTION_KEY) и MCP-токен (ASOC_MCP_TOKEN) при установке через install.sh генерируются автоматически; при ручной настройке укажите их самостоятельно.

    • Copilot (сервис fp):

      COMPOSE_PROFILES=minio,fp
      ASOC_COPILOT_ENABLED=true
      LLM_API_KEY=<ключ LLM-провайдера>

      Подробнее об установке и настройке сервиса см. раздел Установка и запуск сервиса AI FP.

    К сведению

    Профили можно комбинировать: например, значение COMPOSE_PROFILES=minio,assistant,fp включит оба ИИ-сервиса вместе с хранилищем MinIO.

    К сведению

    По умолчанию используются следующие теги образов: front, core, reporter — v1.7.1; ai-service, rag — v1.7.1; fp (copilot-fp-service) — v1.7.1 (профиль fp, по умолчанию отключен); nginx (reverse-proxy) — v1.6. Версии образов можно переопределить переменными ASOC_IMG_*.

  7. Проверьте конфигурацию, запустив скрипт show.sh:

    ./show.sh

    Результат шага: скрипт выводит текущие значения переменных окружения. Убедитесь, что значения ASOC_DOMAIN, ASOC_SCHEME и COMPOSE_PROFILES заданы корректно.

Запуск​

Чтобы запустить TRON.ASOC, выполните следующие шаги:

  1. Авторизуйтесь в реестре контейнеров:

    docker login pcr.tronasoc.ru
  2. Запустите контейнеры:

    docker compose up -d

    Результат шага: запуск всех сервисов обычно занимает от 15 секунд до 1,5 минут. На старте сервис core выполняет миграции базы данных, поэтому статус health: starting в этот период — ожидаемое поведение.

  3. Проверьте статус контейнеров:

    docker compose ps

    Результат шага: контейнеры имеют статус Running (или аналогичный, например Up About a minute).

Проверка работоспособности​

Чтобы проверить работоспособность TRON.ASOC, выполните следующие шаги:

  1. Откройте в браузере адрес http://<домен> (или https://<домен>, если задана переменная ASOC_SCHEME=https), где <домен> — значение переменной ASOC_DOMAIN (например, http://asoc.example.com).

  2. Дождитесь загрузки страницы авторизации и войдите с учетными данными admin / admin.

    К сведению

    При первом входе необходимо принять условия лицензионного соглашения (EULA).

Убедитесь, что страница авторизации TRON.ASOC открылась и вход в систему выполнен успешно.

Внимание

Сразу после первого входа смените пароль администратора — учетные данные admin / admin предназначены только для первого запуска.