Help:13-alpha deploy: Difference between revisions

From Svacer Wiki
(Добавлена инструкция для удаления демонстрационной версии)
m (review and minor fixes)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Демонстрационная сборка ==
== Демонстрационная сборка ==


Установка демонстрационной версии Svacer с поддержкой [[Help:13-alpha introduction|описанных функций]] доступна только в докере с использованием docker compose
Установка демонстрационной версии Svacer с поддержкой [[Help:13-alpha introduction|описанных функций]] доступна только в докере с использованием docker compose.


== docker compose ==
== docker compose ==
Line 20: Line 20:
| <code>llm</code> || Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений
| <code>llm</code> || Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений
|-
|-
| <code>mcp</code> || Запуск Svacer с MCP-сервером  
| <code>mcp</code> || Запуск Svacer с [[Help:13-alpha MCP|MCP-сервером]]
|-
|-
| <code>"*"</code> || Запуск Svacer со всеми доступными профилями
| <code>"*"</code> || Запуск Svacer со всеми доступными профилями
Line 40: Line 40:


== <code>--profile ai</code> ==
== <code>--profile ai</code> ==
Данный профиль не требует дополнительной конфигурации для запуска
Данный профиль не требует дополнительной конфигурации для запуска.


== <code>--profile llm</code> ==
== <code>--profile llm</code> ==
Line 46: Line 46:


При запуске Svacer с профилем <code>llm</code> необходимо:
При запуске Svacer с профилем <code>llm</code> необходимо:
* установить в переменную окружения <code>LLM_URL</code> значение url, по которому контейнер <code>svacer-validation-server</code> сможет подключиться к сервису моделей, совместимому с OpenAI API;
* установить в переменную окружения <code>LLM_URL</code> значение URL, по которому контейнер <code>svacer-validation-server</code> сможет подключиться к сервису моделей, совместимому с OpenAI API;
* установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в сервис моделей;
* установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в сервисе моделей;
* при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>;
* при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>;
* при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию <code>llm</code>;
* при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию <code>llm</code>;
* при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей разделённых запятыми;
* при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей, разделённых запятыми;
* если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы;
* если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы;
* если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной <code>MODEL_VALIDATION_MAXATTEMPTS</code> в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут.
* если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной <code>MODEL_VALIDATION_MAXATTEMPTS</code> в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут.
Line 56: Line 56:
Значения данных переменных могут быть сохранены в <code>.env</code> файл и переданы при запуске с помощью аргумента <code>docker compose --env-file ./.env ... up -d</code>
Значения данных переменных могут быть сохранены в <code>.env</code> файл и переданы при запуске с помощью аргумента <code>docker compose --env-file ./.env ... up -d</code>


Описание переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
Описание переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
<pre>
<pre>
# URL of the OpenAI API-compatible LLM model service
# URL of the OpenAI API-compatible LLM model service
Line 95: Line 95:


При запуске Svacer с профилем <code>llm</code> необходимо:
При запуске Svacer с профилем <code>llm</code> необходимо:
* установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>;
* установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта, на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>;
* установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
* установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
* при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо:
* при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо:
Line 104: Line 104:
После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code>
После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code>


Описание других переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
Описание других переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
<pre>
<pre>
# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32
# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32
Line 136: Line 136:
== Удаление демонстрационной версии ==  
== Удаление демонстрационной версии ==  


В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом <code>svacer-13</code>. Чтобы из удалить, выполните последовательно следующие шаги:
В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом <code>svacer-13</code>. Чтобы их удалить, выполните последовательно следующие шаги:
# Остановите и удалите все docker-контейнеры Svacer;
# Остановите и удалите все docker-контейнеры Svacer;
# Удалите тома с данными Svacer;
# Удалите тома с данными Svacer;
Line 151: Line 151:
=== Удаление томов с данными БД, объектного и файлового хранилищ ===
=== Удаление томов с данными БД, объектного и файлового хранилищ ===


После выполнения следующей команды все данные накопленные за время работы демонстрационной версии Svacer будут удалены. При повторном запуске будет развёрнута чистая версия системы.
После выполнения следующей команды все данные, накопленные за время работы демонстрационной версии Svacer, будут удалены. При повторном запуске будет развёрнута чистая версия системы.


<pre>
<pre>
docker volume rm svacer-13-ai-postgres svacer-13-object-store svacer-13-postgres svacer-13-snapshot-sources
docker volume rm svacer-13-ai-postgres svacer-13-object-store svacer-13-postgres svacer-13-snapshot-sources
</pre>
Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer
<pre>
docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v
</pre>
</pre>


=== Удаление docker-образов ===
=== Удаление docker-образов ===


После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com.
После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com/u/ispras.


<pre>
<pre>
docker image rm ispras/svacer:13-alpha ispras/svacerai:13-alpha ispras/svacer-mcp:13-alpha ispras/validation-server:13-alpha
docker image rm ispras/svacer:13-alpha ispras/svacerai:13-alpha ispras/svacer-mcp:13-alpha ispras/validation-server:13-alpha
</pre>
Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer и томов с данными
<pre>
docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v --rmi all
</pre>
</pre>

Latest revision as of 12:32, 19 June 2026

Демонстрационная сборка

Установка демонстрационной версии Svacer с поддержкой описанных функций доступна только в докере с использованием docker compose.

docker compose

Для установки демонстрационной версии подготовлен специальный файл docker-compose-with-ai-llm-mcp.yml

curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai-llm-mcp.yml

При запуске Svacer с использованием данного compose-файла доступны профили:

Профиль Описание
Без профиля Запуск Svacer без поддержки ИИ-ассистента и MCP
ai Запуск Svacer с поддержкой ИИ-ассистента со встроенной моделью
llm Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений
mcp Запуск Svacer с MCP-сервером
"*" Запуск Svacer со всеми доступными профилями

Для запуска с использованием одного или нескольких профилей используется команда

docker compose -f docker-compose-with-ai-llm-mcp.yml ... --profile llm --profile mcp ... up -d

При этом необходимо учитывать, что

  • при запуске Svacer без профилей или только с профилем mcp функциональность разметки предупреждений с помощью ИИ будет возвращать ошибку;
  • запуск с профилями llm и mcp требует настройки переменных окружения (см. ниже).

Для удобства настройки переменных окружения может использоваться env-файл llm-mcp.env, который после установки необходимых значений может быть передан команде запуска

docker compose -f docker-compose-with-ai-llm-mcp.yml --env-file ./llm-mcp.env ... --profile llm --profile mcp ... up -d

--profile ai

Данный профиль не требует дополнительной конфигурации для запуска.

--profile llm

Запуск Svacer с данным профилем даёт возможность подключить к ИИ-ассистенту внешний сервис моделей, поддерживающий OpenAI API. После успешного подключения ИИ-ассистент сможет использовать LLM для разметки и комментирования предупреждений. В списке разметки с помощью ИИ появятся модели доступные пользователю, чей ключ был передан при запуске.

При запуске Svacer с профилем llm необходимо:

  • установить в переменную окружения LLM_URL значение URL, по которому контейнер svacer-validation-server сможет подключиться к сервису моделей, совместимому с OpenAI API;
  • установить в переменную окружения LLM_TOKEN значение ключа авторизации в сервисе моделей;
  • при необходимости установить значения переменных REG_TOKEN или REG_LOGIN и REG_PASSWORD содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль admin:admin;
  • при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной REG_NAME. По умолчанию llm;
  • при необходимости ограничения списка доступных моделей, в переменную MODEL_WHITELIST нужно передать список названий моделей, разделённых запятыми;
  • если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной MAX_PARALLEL_REQUESTS в значение больше единицы;
  • если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной MODEL_VALIDATION_MAXATTEMPTS в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут.

Значения данных переменных могут быть сохранены в .env файл и переданы при запуске с помощью аргумента docker compose --env-file ./.env ... up -d

Описание переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:

# URL of the OpenAI API-compatible LLM model service
LLM_URL=

# LLM model service authorization token
LLM_TOKEN=

# Svacer admin authorization token for the operation of AI-assistant components 
# Or with REG_LOGIN and REG_PASSWORD, if token is not set
# REG_TOKEN=

# Svacer admin login and password for the operation of AI-assistant components
# REG_LOGIN=admin
# REG_PASSWORD=admin

# ID of the service in the AI-assistant
# REG_ID=llm

# The name of the service displayed in the AI-assistant
# REG_NAME=llm

# Service description
# REG_DESCRIPTION="LLM model service"

# Comma-separated list of available models. If not specified, all models available to the LLM model service user will be available.
# MODEL_WHITELIST=

# Maximum number of simultaneous requests to the LLM model service
# MAX_PARALLEL_REQUESTS=1

# Maximum number of 5s attempts to get single warning result from LLM
# MODEL_VALIDATION_MAXATTEMPTS=12

--profile mcp

При запуске с данным профилем стартует контейнер с MCP-сервером, подключённый к текущему экземпляру Svacer.

При запуске Svacer с профилем llm необходимо:

  • установить в переменную окружения MCP_PORT номер сетевого порта, на котором будет доступен MCP-сервер. По умолчанию будет назначен порт 8002;
  • установить в переменную окружения SVACER_MPC_TOKEN строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
  • при необходимости доступа к MCP-серверу по адресу отличному от localhost (127.0.0.1) или при использовании DNS необходимо:
    • указать необходимый адрес/dns-имя в переменной MCP_ALLOWED_HOSTS в виде 172.17.0.1:*/some.domain:*;
    • указать необходимый адрес/dns-имя в переменной MCP_ALLOWED_ORIGINS в виде http://172.17.0.1:*/http://some.domain:*;
  • при необходимости можно настроить логин и пароль пользователя, от имени которого MCP-сервер будет выполнять запросы к Svacer. По умолчанию admin:admin.

После запуска mcp-сервер будет доступен по адресу http://localhost:{MCP_PORT}/mcp

Описание других переменных, доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:

# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32
SVACER_MCP_TOKEN=

# Svacer admin login and password
# SVACER_LOGIN=admin
# SVACER_PASSWORD=admin

# External port that will be mapped by docker to the internal port 8000
# MCP_PORT=8002

# DNS rebinding protection for FastMCP
# MCP_ENABLE_DNS_REBINDING_PROTECTION=false
# MCP_ALLOWED_HOSTS=svacer-mcp:*
# MCP_ALLOWED_ORIGINS=http://svacer-mcp:*

# HTTP timeout for requests to Svacer, seconds
# SVACER_TIMEOUT=30

# Public URL of this MCP server (used for WWW-Authenticate, RFC 9728).
# Defaults to http://localhost:<SVACER_HTTP_PORT>. Set when running behind a reverse proxy.
# SVACER_MCP_RESOURCE_URL=https://mcp.example.com

# Subset of tools to register (comma-separated). Unset = all 8 tools.
# Available: get_projects, get_snapshots, get_warnings, get_markers,
#            get_project_stats, get_project_groups, get_advanced_file_preview, get_diff
# SVACER_TOOLS=get_projects,get_snapshots,get_markers

Удаление демонстрационной версии

В процессе запуска демонстрационной версии в docker будут созданы контейнеры, тома, сеть с префиксом svacer-13. Чтобы их удалить, выполните последовательно следующие шаги:

  1. Остановите и удалите все docker-контейнеры Svacer;
  2. Удалите тома с данными Svacer;
  3. Удалите docker-образы демонстрационной версии Svacer;

Остановка и удаление docker-контейнеров Svacer

docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down

После остановки и удаления docker-контейнеров с компонентами Svacer, данные продолжат храниться в docker-томах. Поэтому при повторном запуске демонстрационной версии они будут доступны.

Удаление томов с данными БД, объектного и файлового хранилищ

После выполнения следующей команды все данные, накопленные за время работы демонстрационной версии Svacer, будут удалены. При повторном запуске будет развёрнута чистая версия системы.

docker volume rm svacer-13-ai-postgres svacer-13-object-store svacer-13-postgres svacer-13-snapshot-sources

Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer

docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v

Удаление docker-образов

После удаления docker-образов компонентов демонстрационной версии Svacer, при повторном запуске они снова будут загружены из репозитория https://hub.docker.com/u/ispras.

docker image rm ispras/svacer:13-alpha ispras/svacerai:13-alpha ispras/svacer-mcp:13-alpha ispras/validation-server:13-alpha

Удаление томов также можно выполнить одновременно с остановкой и удалением docker-контейнеров Svacer и томов с данными

docker compose -f docker-compose-with-ai-llm-mcp.yml --profile "*" down -v --rmi all