Действия

SES. Руководство администратора: различия между версиями

Материал из Флора AI

Строка 227: Строка 227:
     proxy_ssl_server_name on;
     proxy_ssl_server_name on;
   }
   }
}</small></code>
}</small></code>


Строка 252: Строка 253:
         proxy_cache_bypass $http_upgrade;
         proxy_cache_bypass $http_upgrade;
     }
     }
}</small></code>
}</small></code>


==='''Протоколы и порты'''===
==='''Протоколы и порты'''===


Сервис использует порт 6190/tcp для доступа к api интерфейсу. Порт доступа к api может быть изменен в конфигурационном файле
Сервис использует порт 6190/tcp для доступа к api интерфейсу и порт 6191/tcp для websocket сервера. Порты могут быть изменены в конфигурационном файле


==='''Журналы работы'''===
==='''Журналы работы'''===

Версия от 13:13, 22 января 2025

Общее описание

Сервис предназначен для сценарных машин.

Термины и определения

script engine service (SES) – сервис обеспечивающий работу сценарных машин

Требования к окружению

В процессе работы сервис взаимодействует со следующими сервисами:

  • UPS – настройка осуществляется через файл /opt/ups/config.json
  • SMC, SEE, SPR, TTS, SBS, QAS - настройка осуществляется через файл /opt/ses/config.json
Установка ses

Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.

Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.

  • Установка/обновление ses осуществляется скриптом chmod +x ./ses-<версия>-<релиз>.sh && ./ses-<версия>-<релиз>.sh -i с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор ./ses-<версия>-<релиз>.sh без ключей.
  • Загрузить последнюю версию продукта curl -s "https://repo.connect2ai.net/api/ses/new" --user '[user]:[pass]' 2>&1 | bash или в интерактивном режиме bash -c "$(curl -s https://repo.connect2ai.net/api/ses --user '[user]:[pass]' 2>&1)".
  • Обновить ses /opt/ses/inupdate в интерактивном режиме. Или запустить с ключём:
    • /opt/ses/inupdate -b - обновить до последней beta версии;
    • /opt/ses/inupdate -r - обновить до последней release версии;
    • /opt/ses/inupdate -n - обновить до последней версии (не важно beta или release).
  • Проверить актуальную версию продукта curl -s "https://repo.connect2ai.net/api/ses/version.
  • Посмотреть лог изменений curl -s "https://repo.connect2ai.net/api/ses/changelog" --user '[user]:[pass]'.
  • Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api. [user]:[pass] - это тот же логин и пароль, что и от Nextcloud.
  • В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
    • echo -n "[user]:[pass]" > /opt/ses/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей)
    • echo -n "http://example.com:3128 [user] [password]" > /opt/ses/.proxy (это файл конфигурации proxy необходим для обновления и загрузки моделей, при отсутсвующем прямом подключение к интернету)

При обновление следующий список файлов и папок сохранияется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.

Не забудьте запустить сервис и включить в автозапуск в системе:

sudo systemctl enable ses.service && sudo systemctl start ses.service

Удостоверьтесь, что сервис стартовал:

systemctl status ses.service

Разрешите доступ к портам 6157/tcp, 6170/tcp а также порту, определенном в конфиге (по умолчанию 6189/tcp) на нужном интерфейсе.

Настройка сервиса

Файл config.json

Настройка параметров сервиса ses производится в файле /opt/ses/config.json

Описание параметров приведено в таблице

Параметр По умолчанию Назначение
port 6190 порт api интерфейса, используется в UPS - настройка servers.ses в конфиге UPS
logs.path logs/ Путь к папке логов
logs.backups 10 Количество старых сохраняемых логов
logs.maxSize 5242880 Максимальный размер текущего лог-файла, в байтах
servers.{service}.url "http://127.0.0.1:PORT/{service}" адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187)
servers.{service}.timers.connect 2 таймаут подключения к серверу
servers.{service}.timers.read 10 таймаут получения данных с сервера
connectors.vk {} Параметры подключения к ботам VK

{  "имя_подключения":{

    "token":"Ключ доступа",

    "robot":"id робота",

    "group_id":"id сообщества ВКонтакте",

    "whitelist":[],

    "activators":[]

    },

...............

}

connectors.telegram {} Параметры подключения к telegram ботам

{  "имя_подключения":{

    "token":"Ключ доступа",

    "robot":"id робота",

    "variables":{

      "phone": "1234567890"

    },

    "timers": {      "getUpdates": 3    },

    "whitelist":[],

    "activators":[]

    },

...........

}

tmp "/tmp/ses" временная папка

Эмуляция сервисов интеграции

В каталоге /opt/ses/testapi могут располагаться эмуляторы сервисов интеграции. Эмулятор будет доступен по адресу htttp://<адрес ses>/testapi/<название_сервиса>. Для создания эмулятора поместите в папку /opt/ses/testapi/ файл <название_сервиса>.reply. Содержимое файла будет отдано без изменений, как есть по адресу "http://<адрес_ses>:<порт_ses>/ses/testapi/<название_сервиса>".


Настройка каналов и виджетов

Настройка виджета для сайта

Виджет для сайта представляет собой отдельный js скрипт, который поставляется в составе UPS. Для ses виджет это один из каналов. Порядок настройки:

  • получить доменное имя для ups, получить сертификаты, настроить реверс-прокси для обработки запросов к ups и на websocket.
  • добавить к коду сайта ссылку на скрипт виджета с токеном
  • настроить коннектор в конфигурационном файле /opt/ses/config.json
  • настроить адрес websocket сервера в конфигурационном файле /opt/ups/config.json

После получения доменного имени и сертификатов нужно правильно настроить реверс-прокси.

Пример настройки для nginx.

Доменное имя "https://ups.example.net/", nginx прослушивает порты 80(для letsencrypt), 443(ssl), 8091(ssl для websocket).

Адрес локального хоста с UPS и SES 10.2.1.110 (для примера, могут быть на разных)

Конфиг для UPS (80 и 443):

server {

       server_name ups.example.net;
       listen 80;
       listen [::]:80;
       location ^~ /.well-known/acme-challenge {
               root /var/www/html;
               default_type "text/plain";
               index nonextistent;
       }
       location / { return 301 https://$host$request_uri; }
       location /lang { return 301 https://$host$request_uri; }

} server {

  server_name  ups.example.net;
  listen 443 ssl;
  listen [::]:443 ssl;
  listen 8443 ssl;
  listen [::]:8443 ssl;
  include snippets/ssl-params.conf;
  ssl_certificate /etc/letsencrypt/live/ups.example.net/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ups.example.net/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/ups.example.net/chain.pem;
  client_max_body_size 1000M;
  proxy_read_timeout 6000;
  proxy_connect_timeout       6000;
  proxy_send_timeout          6000;
  send_timeout                6000;
  large_client_header_buffers 8 256k;
  location @proxy {
       proxy_pass              http://10.2.1.110:6162;
       proxy_ssl_server_name   on;
       #proxy_set_header        Host $proxy_host;
       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        Upgrade $http_upgrade;
       proxy_set_header        x-frame-options ALLOWALL; 
       proxy_hide_header       X-Frame-Options;
       add_header              X-Frame-Options "ALLOWALL";
       proxy_set_header        X-Forwarded-Proto $scheme;
       # Добавляем заголовки CORS
       add_header 'Access-Control-Allow-Origin' '*';
       add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
       add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept, Origin, User-Agent, X-Requested-With';
       add_header 'Access-Control-Allow-Credentials' 'true';
       # Обработка OPTIONS запросов
       if ($request_method = 'OPTIONS') {
           add_header 'Access-Control-Allow-Origin' '*';
           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
           add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept, Origin, User-Agent, X-Requested-With';
           add_header 'Access-Control-Allow-Credentials' 'true';
           add_header 'Access-Control-Max-Age' 1728000;
           add_header 'Content-Type' 'text/plain charset=UTF-8';
           add_header 'Content-Length' 0;
           return 204;
       }
       # Перезапись заголовка Location (потребовалась для /lang)
       proxy_redirect http://ups.example.net https://ups.example.net;
  }
  location /lang {
   try_files $uri @proxy;
   proxy_ssl_server_name on;
  }
  location / {
   try_files $uri @proxy;
   proxy_ssl_server_name on;
  }

}

Конфиг для websocket:

server {

   server_name ups.example.net;
   listen 6191 ssl;
  include snippets/ssl-params.conf;
  ssl_certificate /etc/letsencrypt/live/ups.example.net/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ups.example.net/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/ups.example.net/chain.pem;
  client_max_body_size 1000M;
  proxy_read_timeout 6000;
  proxy_connect_timeout       6000;
  proxy_send_timeout          6000;
  send_timeout                6000;
  large_client_header_buffers 8 256k;
   location / {
       proxy_pass http://10.2.1.110:6191;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }

}

Протоколы и порты

Сервис использует порт 6190/tcp для доступа к api интерфейсу и порт 6191/tcp для websocket сервера. Порты могут быть изменены в конфигурационном файле

Журналы работы

Для проверки состояния сервиса выполните sudo systemctl status ses.

Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию - /opt/ses/logs/). Ошибки также пишутся в системный журнал, для просмотра можно воспользоваться командой sudo journalctl -u ses

Удаление и обновление ses

Для удаления выполните команду:

/opt/ses/uninstall

Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки как указано в п 4. При этом, обновление не изменяет файл /opt/ses/config.json.