Действия

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

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

 
(не показано 30 промежуточных версий 3 участников)
Строка 113: Строка 113:
|servers.{service}.url
|servers.{service}.url
|"<nowiki>http://127.0.0.1:PORT/{service}</nowiki>"
|"<nowiki>http://127.0.0.1:PORT/{service}</nowiki>"
|Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187).
|Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187), ups(6182).
|-
|-
|servers.{service}.timers.connect
|servers.{service}.timers.connect
Строка 122: Строка 122:
|10
|10
|Таймаут получения данных с сервера.
|Таймаут получения данных с сервера.
|-
|connectors.max
|{}
|Параметры подключения к ботам Max
<small>{  "имя_подключения":{</small>
<small>    "token":"Ключ доступа",</small>
<small>    "robot":"id робота",</small>
<small>"variables":{</small>
<small>      "phone": "1234567890"</small>
<small>    },</small>
<small>"timers": {</small><small>      "</small><small>pollingInterval</small><small>":</small> <small>25</small><small>    },</small>
<small>    "whitelist":[],</small>
<small>    "activators":[]</small>
<small>    },</small>
<small>...............</small>
<small>}</small>
|-
|-
|connectors.vk
|connectors.vk
Строка 133: Строка 160:


<small>    "group_id":"id сообщества ВКонтакте",</small>
<small>    "group_id":"id сообщества ВКонтакте",</small>
<small>"variables":{</small>
<small>      "phone": "1234567890"</small>
<small>    },</small>
<small>"timers": {</small><small>      "</small><small>pollingInterval</small><small>":</small> <small>25</small><small>    },</small>


<small>    "whitelist":[],</small>
<small>    "whitelist":[],</small>
Строка 195: Строка 230:
|-
|-
|vad.listening.maxSilence
|vad.listening.maxSilence
|1200
|1200  
|Максимальная длительность тишины перед отправкой фрагмента
| Максимальная длительность тишины перед отправкой фрагмента
|-
|-
|vad.listening.speechWaiting
|vad.listening.speechWaiting
Строка 218: Строка 253:
|Максимальная длительность тишины перед отправкой фрагмента в режиме активного слушания
|Максимальная длительность тишины перед отправкой фрагмента в режиме активного слушания
|-
|-
|cluster.logfile
|cluster.logfile  
|logs/sync.log
|logs/sync.log
|Файл логов синхронизации есть только на главном сервере кластера
|Файл логов синхронизации есть только на главном сервере кластера
Строка 228: Строка 263:
|cluster.nodes
|cluster.nodes
|[ ]
|[ ]
|Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
| Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
|-
|-
|tmp
|tmp
Строка 236: Строка 271:




 
===='''Работа в составе кластера'''====
==== '''Работа в составе кластера''' ====
Для высоконагруженных систем сервис можно расположить на нескольких нодах (виртуальных машинах). В этом случае, чтобы не потерять документы и изменения, полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы:  
Для высоконагруженных систем сервис можно расположить на нескольких нодах (виртуальных машинах). В этом случае, чтобы не потерять документы и изменения, полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы:
*База файловая, в папке robots.
*База файловая, в папке robots.
*lsync настроен через конфиг SES для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера.
*lsync настроен через конфиг SES для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера.
Строка 249: Строка 283:




 
==='''Настройка каналов и виджетов''' ===
==='''Настройка каналов и виджетов'''===
 
 
 
===='''Настройка виджета для сайта'''====
===='''Настройка виджета для сайта'''====
1. Размещаете на сайте в теге <code>head</code> или <code>body</code> тег <code>script</code> c виджетом, указывая тип модульной системы, токен авторизации и адрес самого скрипта.


<code><script src="https://'''SERVER'''/ses/widget/js" type="module" token="'''TOKEN'''"></script></code>
# На [https://wiki.connect2ai.net/index.php/SES._UPS_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5_%D1%81_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%BE%D0%BC#%D0%92%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%C2%AB%D0%9A%D0%BE%D0%BD%D0%BD%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B%C2%BB странице коннектора] типа "web" в UPS создать коннектор.
# Разместить на сайте виджет, вставив тег <code><script></code> с нужными параметрами. При работе через SSL потребуется организовать реверс-прокси и правильно настроить nginx для websocket.
==== '''Вставка виджета в код сайта''' ====
Разместите в <code><head></code> или <code><body></code> HTML-кода следующий тег:


'''SERVER'''- адрес сервера UPS, на котором расположен исходный код виджета по пути ''/ses/widget/js,''
<code><script src="https://'''SERVER'''/ses/widget/js?'''NAME'''" type="module" token="'''TOKEN'''"></script></code>


'''TOKEN''' - сгенерированный токен, который нужно указать в настройках ниже.
* '''SERVER''' — адрес сервера UPS. Исходный код виджета всегда лежит по пути <code>/ses/widget/js</code>.
* '''TOKEN''' токен авторизации (генерируется и указывается в [https://wiki.connect2ai.net/index.php/SES._UPS_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5_%D1%81_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%BE%D0%BC#%D0%92%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%C2%AB%D0%9A%D0%BE%D0%BD%D0%BD%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B%C2%BB настройках коннектора] "web" в UPS).
* '''NAME''' — дополнительный имя (query-параметр) для уникальности ссылки, используйте при размещении нескольких виджетов с одного сервера на одной странице.


Пример пустой страницы с тремя  разными виджетами:


2. Добавляете в файл '''/opt/ses/config.json''' в разделе '''connectors.web''' настройки канала, указывая через символ "'''~'''" (тильда) адрес сайта, на котором будет расположен скрипт виджета и сгенерированный токен.<blockquote>"web": {
<small><code><!DOCTYPE html></code></small>


            "'''<nowiki>http://сайт.рф</nowiki>'''~'''TOKEN'''": {
<small><code><html lang="en"></code></small>


                "host": [
<small><code><head> ... </head></code></small>


                    "адрес_1:6191",
<small><code><body></code></small>
    <small><code><script src="https://'''server.net'''/ses/widget/js?'''assistant1'''" type="module" token="'''tokenXXX'''"></script></code></small>


                    "адрес_2:6191"
    <small><code><script src="https://'''server.net'''/ses/widget/js?'''assistant'''" type="module" token="'''tokenYYY'''"></script></code></small>


                ],
    <small><code><script src="https://'''server.net'''/ses/widget/js?'''chat'''" type="module" token="'''tokenZZZ'''"></script></code></small>


                "robot": "38df6fbd-47bf-4b8c-bcc9-d841c138b203",
<small><code></body></code></small>


                "color": "#4d3e33",
<small><code></html></code></small>


                "header": "МФЦ",
==== '''SSL и реверс-прокси''' ====
Если сайт работает через SSL (https), требуется настроить реверс-прокси для UPS и для websocket:


                "inittext": "Для начала диалога введите сообщение",
nginx (пример конфига для wss):


                "audioAnswers": true,
<small>server {</small>


                "sendFile": true,
<small>    server_name ups_сервер.ru;</small>


                "variables": {
<small>    listen 6191 ssl;</small>


                    "phone": "78005553535"
<small>    include snippets/ssl-params.conf;</small>


                }
<small>    ssl_certificate /etc/letsencrypt/live/ups_сервер.ru/fullchain.pem;</small>


            },
<small>    ssl_certificate_key /etc/letsencrypt/live/ups_сервер.ru/privkey.pem;</small>


}</blockquote>'''host *''' -  список адресов websocket-серверов для подключения виджета,
<small>    ssl_trusted_certificate /etc/letsencrypt/live/ups_сервер.ru/chain.pem;</small>


'''robot *''' ''(string)'' - ID робота (включая версию),
<small>    client_max_body_size 1000M;</small>


'''color''' ''(string)'' - акцентный цвет виджета,
<small>    proxy_read_timeout 6000;</small>


'''header''' ''(string)'' - заголовок виджета,
<small>    proxy_connect_timeout 6000;</small>


'''inittext''' ''(string)'' - приветственное сообщение,
<small>    proxy_send_timeout 6000;</small>


'''debugMode''' ''(boolean)'' - режим отладки. Включает в себя: просмотр данных сессии, автотестирование скрипта, выбор канала, установку переменных,
<small>    send_timeout 6000;</small>


'''audioAnswers''' ''(boolean)'' - возможность включать аудио-ответы (для текстовых каналов, например, ''vk'', ''telegram''),
<small>    large_client_header_buffers 8 256k;</small>


'''sendFile''' ''(boolean)'' - возможность отправки файлов,
<small>    location / {</small>


'''microphone''' ''(boolean)'' - возможность отправки аудио-сообщений,
<small>        proxy_pass <nowiki>http://локальный_адрес_ses:6191</nowiki>;</small>


'''audioCall''' ''(boolean)'' - аудио-звонок,
<small>        proxy_http_version 1.1;</small>


'''variables''' - переменные.
<small>        proxy_set_header Upgrade $http_upgrade;</small>


<small>        proxy_set_header Connection "upgrade";</small>


'''''*''' - обязательные поля.''
<small>        proxy_set_header Host $host;</small>


<small>        proxy_cache_bypass $http_upgrade;</small>


<small>    }</small>


Если на сайте SSL, то дополнительно поднимаете реверс-прокси для UPS (<nowiki>http://адрес_ups</nowiki>) и для websocket (адрес_ses:6191). Особенности реализации на nginx:
<small>}</small>
 
* Раздел proxy_set_header Host $host; обязателен.
'''Основной конфиг''' должен включать директиву <code>proxy_set_header Host $host;</code> а также заголовки CORS и обработку OPTIONS запросов. Дополнительно в нем? возможно? придется обработать путь "/lang" с переводом.
* Убедитесь в поддержке заголовков CORS и обработке OPTIONS-запросов для корректной работы фронтенда.
 
* Для websocket обязательно наличие директив proxy_set_header Upgrade и Connection "upgrade" для поддержки upgrade-запроса (см. [документацию nginx]).
Конфиг для websocket должен обеспечивать обработку upgrade запросов (<nowiki>https://nginx.org/en/docs/http/websocket.html</nowiki>) для перенаправления websocket трафика, а также прослушивание отдельного порта, например 8091.
* Адреса для виджета и конфигов должны быть с поддержкой SSL.
 
Тогда в ссылку на виджет (адрес_ups) и в конфиг канала (адрес_ses:6191) нужно будет вносить адреса, которые поддерживают SSL. Пример конфига nginx для wss: <blockquote><small>server {</small>
 
<small>   server_name ups_сервер.ru;</small>
 
<small>   listen 6191 ssl;</small>
 
<small>  include snippets/ssl-params.conf;</small>
 
<small>  ssl_certificate /etc/letsencrypt/live/ups_сервер.ru/fullchain.pem;</small>
 
<small>  ssl_certificate_key /etc/letsencrypt/live/ups_сервер.ru/privkey.pem;</small>
 
<small>  ssl_trusted_certificate /etc/letsencrypt/live/ups_сервер.ru/chain.pem;</small>
 
<small>  client_max_body_size 1000M;</small>
 
<small>  proxy_read_timeout 6000;</small>
 
<small>  proxy_connect_timeout       6000;</small>
 
<small>  proxy_send_timeout          6000;</small>
 
<small>  send_timeout                6000;</small>
 
<small>  large_client_header_buffers 8 256k;</small>
 
<small>   location / {</small>
 
<small>       proxy_pass <nowiki>http://локальныq_адрес_ses:6191</nowiki>;</small>
 
<small>       proxy_http_version 1.1;</small>


<small>       proxy_set_header Upgrade $http_upgrade;</small>
== Примечания ==
 
<small>       proxy_set_header Connection "upgrade";</small>
 
<small>       proxy_set_header Host $host;</small>
 
<small>       proxy_cache_bypass $http_upgrade; } }</small></blockquote>


* Для множественных языковых функций возможно потребуется отдельная обработка пути "/lang" внутри nginx.
* Для websocket рекомендуется выделять отдельный порт — например, 8091.


Рекомендуется вынести подробные параметры и ситуации в отдельные пункты, добавить чек-лист подготовки к запуску. Примеры конфигураций и ссылки на документацию расширяют понятность инструкции для администратора.


==='''Протоколы и порты'''===
==='''Протоколы и порты'''===
Строка 380: Строка 385:


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





Текущая версия от 13:29, 13 ноября 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, 6191/tcp, а также порту, определенном в конфиге (по умолчанию 6190/tcp) на нужном интерфейсе.


Лицензия

Сервис не функционирует без действующей лицензии. Информация о лицензии хранится в файле:

/opt/ses/license.json

Файл лицензии должен соответствовать следующему формату:

{"service": "ses", "expire": "2045-01-01", "licenses": , "key": ""}

Для получения лицензии необходимо:

1. Запустить сервис systemctl start ses и извлечь UUID, указанный в файле /opt/ses/logs/log.txt

2. Передать полученный UUID руководителю проекта для оформления лицензии.


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

Файл config.json

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

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

Параметр По умолчанию Назначение
port 6190 Порт API интерфейса используется в UPS — настройка servers.ses в конфиге UPS.
logs.path logs/ Путь к папке логов.
logs.debug false Режим расширенного логирования.
logs.backups 10 Количество старых сохраняемых логов.
logs.maxSize 5242880 Максимальный размер текущего лог-файла в байтах.
storage.audio.web /opt/ses/storage/web Путь для временного хранения фрагментов аудио веб сессий
storage.audio.hot /opt/ses/storage/hot Путь к "горячему" хранилищу аудиоданных
storage.audio.cold null Путь к "холодному" хранилищу аудиоданных, куда переливаются данные из "горячего" хранилища.
servers.{service}.url "http://127.0.0.1:PORT/{service}" Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187), ups(6182).
servers.{service}.timers.connect 2 Таймаут подключения к серверу.
servers.{service}.timers.read 10 Таймаут получения данных с сервера.
connectors.max {} Параметры подключения к ботам Max

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

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

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

"variables":{

      "phone": "1234567890"

    },

"timers": {      "pollingInterval": 25    },

    "whitelist":[],

    "activators":[]

    },

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

}

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

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

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

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

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

"variables":{

      "phone": "1234567890"

    },

"timers": {      "pollingInterval": 25    },

    "whitelist":[],

    "activators":[]

    },

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

}

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

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

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

"botName": "название бота (после символа @)",

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

    "variables":{

      "phone": "1234567890"

    },

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

    "whitelist":[],

    "activators":[]

    },

...........

}

connectors.freeswitch {} Номера внутренних телефонов внутри freeswitch с привязкой к роботам

"5000": {

        "robot": "ffeaa99a-13d2-4bff-b458-1231c884f8ee"

 }

vad.listening.maxLength 10000 Максимальная длина звукового фрагмента
vad.listening.minSpeech 120 Минимальный отрезок речи, который считать значимым
vad.listening.skipSilence 60 Не считать тишиной отрезки, короче данного значения
vad.listening.maxSilence 1200 Максимальная длительность тишины перед отправкой фрагмента
vad.listening.speechWaiting 4000 Длительность ожидания начала речи
vad.playing.maxLength 2000 Максимальная длина звукового фрагмента в режиме активного слушания
vad.playing.minSpeech 60 Минимальный отрезок речи, который считать значимым в режиме активного слушания
vad.playing.skipSilence 60 Не считать тишиной отрезки, короче данного значения в режиме активного слушания
vad.playing.maxSilence 200 Максимальная длительность тишины перед отправкой фрагмента в режиме активного слушания
cluster.logfile logs/sync.log Файл логов синхронизации есть только на главном сервере кластера
cluster.statusFile logs/sync.status Статус задачи синхронизации есть только на главном сервере кластера
cluster.nodes [ ] Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
tmp "/tmp/ses" Временная папка.


Работа в составе кластера

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

  • База файловая, в папке robots.
  • lsync настроен через конфиг SES для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера.
  • UPS при изменении данных работает только с мастером SES, а при запросе данных — со всеми серверами cluster, распределяя нагрузку.
  • В конфигурации UPS: в servers.ses.trainer указываем маcтер-сервер, в servers.ses.cluster перечисляем все сервера кластера SES, в том числе и мастер.

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

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


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

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

  1. На странице коннектора типа "web" в UPS создать коннектор.
  2. Разместить на сайте виджет, вставив тег <script> с нужными параметрами. При работе через SSL потребуется организовать реверс-прокси и правильно настроить nginx для websocket.

Вставка виджета в код сайта

Разместите в <head> или <body> HTML-кода следующий тег:

<script src="https://SERVER/ses/widget/js?NAME" type="module" token="TOKEN"></script>

  • SERVER — адрес сервера UPS. Исходный код виджета всегда лежит по пути /ses/widget/js.
  • TOKEN — токен авторизации (генерируется и указывается в настройках коннектора "web" в UPS).
  • NAME — дополнительный имя (query-параметр) для уникальности ссылки, используйте при размещении нескольких виджетов с одного сервера на одной странице.

Пример пустой страницы с тремя разными виджетами:

<!DOCTYPE html>

<html lang="en">

<head> ... </head>

<body>

   <script src="https://server.net/ses/widget/js?assistant1" type="module" token="tokenXXX"></script>
   <script src="https://server.net/ses/widget/js?assistant" type="module" token="tokenYYY"></script>
   <script src="https://server.net/ses/widget/js?chat" type="module" token="tokenZZZ"></script>
</body>
</html>

SSL и реверс-прокси

Если сайт работает через SSL (https), требуется настроить реверс-прокси для UPS и для websocket:

nginx (пример конфига для wss):

server {

    server_name ups_сервер.ru;

    listen 6191 ssl;

    include snippets/ssl-params.conf;

    ssl_certificate /etc/letsencrypt/live/ups_сервер.ru/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/ups_сервер.ru/privkey.pem;

    ssl_trusted_certificate /etc/letsencrypt/live/ups_сервер.ru/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://локальный_адрес_ses: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;

    }

}

  • Раздел proxy_set_header Host $host; обязателен.
  • Убедитесь в поддержке заголовков CORS и обработке OPTIONS-запросов для корректной работы фронтенда.
  • Для websocket обязательно наличие директив proxy_set_header Upgrade и Connection "upgrade" для поддержки upgrade-запроса (см. [документацию nginx]).
  • Адреса для виджета и конфигов должны быть с поддержкой SSL.

Примечания

  • Для множественных языковых функций возможно потребуется отдельная обработка пути "/lang" внутри nginx.
  • Для websocket рекомендуется выделять отдельный порт — например, 8091.

Рекомендуется вынести подробные параметры и ситуации в отдельные пункты, добавить чек-лист подготовки к запуску. Примеры конфигураций и ссылки на документацию расширяют понятность инструкции для администратора.

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

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

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

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

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


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

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

/opt/ses/uninstall

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