# Требования к сетевым настройкам сервера

Информация в этом разделе предназначена для системных администраторов, которые настраивают сетевое и серверное оборудование Вашей компании.

**Webim Server** требует настройки следующих параметров и доступов:

| Параметр                               | Значение                                                  | Особенности                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|----------------------------------------|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Порт HTTPS                             | 443                                                       | Настройте доступ по 443 TCP-порту извне. Если сайт организации работает по HTTPS, то и запросы приложений пойдут к Серверу Webim по этому порту (рекомендован по сравнению с HTTP/80). Webim API/SDK также работают по HTTPS/443.                                                                                                                                                                                                                                                                                                                                                                |
| Порт HTTP                              | 80                                                        | Настройте доступ по 80 TCP-порту извне. Если ваш сайт работает по HTTP, то запросы к Серверу Webim пойдут по HTTP/80 (не рекомендуется).                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Порт Chat Backend                      | 8260 (по умолчанию)                                       | Данный TCP-порт должен быть свободен и открыт внутри (на localhost) на сервере, доступ извне к нему не требуется. Можно выбрать любой другой порт, но тогда необходимо перенастроить Chat Backend.                                                                                                                                                                                                                                                                                                                                                                                               |
| Порт Admin Backend                     | 6001 (по умолчанию)                                       | TCP-порт административного бэкенда (Admin Backend). Порт должен быть свободен и открыт на localhost на сервере Webim, прямой доступ извне, как правило, не требуется. При изменении порта необходимо скорректировать конфигурацию Admin Backend и проксирующего веб-сервера/балансировщика.                                                                                                                                                                                                                                                                                                      |
| Порт data-storager                       | 8000 (по умолчанию)                                       | HTTP-порт сервиса data-storager (хранение и выдача истории диалогов/отчётности). Значение по умолчанию задаётся переменной окружения `STATS_WEB_PORT`. Обычно порт открыт только на localhost или во внутренней сети; прямой доступ из интернета не требуется. При изменении порта необходимо обновить конфигурацию data-storager и проксирующего веб-сервера/балансировщика.                                                                                                                                                                                                                        |
| Порт Speller                             | 8000/tcp (по умолчанию, переменная окружения `API_WEB_PORT`) | HTTP-порт микросервиса проверки орфографии (Speller). Порт должен быть свободен на узле/контейнере Speller и открыт для балансировщика/прокси во внутренней сети; прямой доступ из интернета, как правило, не требуется. На этом же порту доступен endpoint `/metrics` для Prometheus. При изменении порта необходимо обновить значение переменной `API_WEB_PORT` и конфигурацию проксирующего веб-сервера/балансировщика. Если Speller и data-storager запускаются на одном хосте без сетевой изоляции, необходимо назначить им разные порты. |
| Порт php2db                            | 18111 (по умолчанию)                                      | TCP-порт служебного бэкенда `php2db`. Порт должен быть свободен и открыт на localhost на сервере Webim, доступ извне к нему не требуется. При изменении порта необходимо обновить параметры запуска `php2db` и настройки компонентов, которые обращаются к этому сервису.                                                                                                                                                                                                                                                                                                                        |
| Порт СУБД                              | 3306 (по умолчанию для MySQL)                             | Можно настроить на любой другой.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| SSL/TLS сертификат                     |                                                           | Если вы решили использовать HTTPS, то вам понадобится SSL/TLS сертификат к своему домену. Помимо прочих, возможен следующий вариант размещения сертификата: сам по себе он может лежать на вашем балансировщике, после которого трафик будет перенаправляться на другое доменное имя по HTTP или HTTPS. Важно: самоподписные сертификаты SSL/TLS не поддерживаются. Можно самостоятельно попробовать внести изменения в систему (библиотеки, системные пакеты и настройки) серверов, чтобы сертификаты воспринимались как доверенные, но корректная работа Webim в этом случае не гарантируется. |
| Запись в DNS                           | например, `webim.yourdomain.com` или `myaccount.webim.ru` | Для работы Webim требуется выделенное доменное имя (поддомен), доступное в сети использования чата. Домен должен быть в полном распоряжении Webim (не использоваться другими сервисами). Подробнее — в разделе «Требования к доменному имени» ниже.                                                                                                                                                                                                                                                                                                                                              |
| SMTP(S): server IP, порт, логин-пароль |                                                           | Для отправки сообщений по электронной почте нужны реквизиты сервера, доступного по Secure SMTP, — например, Mailgun. Значение не должно быть пустой строкой.                                                                                                                                                                                                                                                                                                                                                                                                                                     |

## Требования к доменному имени

Для работы Webim Server требуется **ровно одно** доменное имя сервера (FQDN), например `webim.yourdomain.com` или `myaccount.webim.ru`. Доменное имя сервера обязательно должно быть третьего уровня (поддомен).

Работа Webim Server **без доменного имени** (например, по IP-адресу или на адресе без DNS) **не поддерживается**: в конфигурации должен быть указан FQDN, который корректно разрешается в DNS и доступен в сети использования чата.

Домен используется для всех обращений к Webim (загрузка статики виджета, запросы веб- и мобильных клиентов, WebSocket-соединения, API). Поэтому домен должен соответствовать следующим требованиям:

  * Домен должен быть доступен в той сети, где будет использоваться чат:

    * если чат используется в публичном интернете — домен должен быть опубликован в публичном DNS и указывать на доступный извне адрес/балансировщик;

    * если чат используется только во внутренней сети — доменное имя должно корректно разрешаться (внутреннем DNS) и быть доступным из этой сети.

  * Домен должен быть выделен под Webim и не использоваться другими сервисами (в том числе «под путём» вида `https://example.com/webim`):

    * Webim не предполагает работу на одном домене с другими приложениями;

    * одного URL-префикса `/webim/*` недостаточно: чату требуются все URL-адреса, описанные в статье [Необходимые доступы на сервер со стороны посетителя](https://webim.ru/kb/devops/accesses/accesses-to-server.html).

  * Webim может одновременно работать **только по одному домену (FQDN)**. Использование нескольких доменов (например, отдельных доменов для панели, виджета и API) **не поддерживается**. Все ссылки генерируются с доменом, указанным в конфигурации (например, в `/etc/webim/main.ini.d/hosted-main.ini`: `base_domain`). **IP-адрес вместо домена не поддерживается.**

  * Домен должен быть доступен:

    * со стороны посетителей (браузеры/мобильные SDK) и рабочих мест операторов/администраторов;

    * с самого сервера Webim и внутренней инфраструктуры (например, если используются обращения по доменному имени через прокси/балансировщик). Рекомендуется обеспечить корректное разрешение имени и маршрутизацию.

  * При использовании HTTPS домен должен иметь действующий SSL/TLS сертификат от доверенного УЦ (см. строку «SSL/TLS сертификат» выше).

---

По требованию заказчику может быть интегрирована система мониторинга, автоматического резервирования (backup/restore), балансировки нагрузки (рекомендуются).

### Входящие подключения к серверу Webim (INBOUND)

В таблице перечислены порты, на которых компоненты **Webim Server** принимают входящие TCP-соединения.

| Назначение                   | Порт/протокол (по умолчанию)                 | Доступность                                                      | Примечание                                                                                                                                                   |
|------------------------------|----------------------------------------------|------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Веб-интерфейсы и API (HTTPS) | **443/tcp**                                  | Из сети, где используется чат (публичная или корпоративная сеть) | Рекомендуемый вариант доступа. Webim API/SDK также работают по HTTPS/443.                                                                                    |
| Веб-интерфейсы и API (HTTP)  | **80/tcp**                                   | Из сети, где используется чат                                    | Используется только если вы не включаете HTTPS (не рекомендуется) или для редиректа на HTTPS.                                                                |
| Chat Backend                 | **8260/tcp**                                 | Обычно только `localhost`/внутренняя сеть                        | Порт должен быть свободен. При изменении порта требуется перенастройка Chat Backend.                                                                         |
| Admin Backend                | **6001/tcp**                                 | Обычно только `localhost`/внутренняя сеть                        | Порт должен быть свободен. При изменении порта требуется перенастройка Admin Backend и проксирующего веб-сервера/балансировщика.                             |
| `php2db`                     | **18111/tcp**                                | Обычно только `localhost`/внутренняя сеть                        | Порт должен быть свободен. При изменении порта требуется обновить параметры запуска `php2db` и настройки компонентов, которые обращаются к этому сервису.    |
| `data-storager` (HTTP)         | `STATS_WEB_PORT` (по умолчанию **8000/tcp**) | Обычно только `localhost`/внутренняя сеть                        | Порт должен быть свободен для узла/контейнера `data-storager`.                                                                                                 |
| Speller (HTTP)               | `API_WEB_PORT` (по умолчанию **8000/tcp**)   | Обычно только `localhost`/внутренняя сеть                        | HTTP Speller; на том же порту `/metrics` для Prometheus. Порт свободен на узле Speller и доступен прокси/балансировщику во внутренней сети. Если `data-storager` и Speller на одном хосте без изоляции — разные порты. |

Если часть компонентов запускается на отдельных узлах, откройте доступ к их портам только из доверенной сети (например, из подсети серверов Webim) и ограничьте доступ из внешней сети.

### Исходящие подключения с сервера Webim (OUTBOUND)

Если хранилища или внешние сервисы развёрнуты на отдельных узлах, разрешите исходящие TCP-соединения **с сервера Webim** на соответствующие порты.

Указаны значения по умолчанию. Если порт изменён в конфигурации сервиса, используйте фактическое значение.

| Назначение                     | Порт/протокол (по умолчанию) | Когда требуется                                                                                                           |
|--------------------------------|------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| Реляционная СУБД MySQL/MariaDB | **3306/tcp**                 | При использовании MySQL/MariaDB на отдельном сервере.                                                                     |
| Реляционная СУБД PostgreSQL    | **5432/tcp**                 | При использовании PostgreSQL на отдельном сервере.                                                                        |
| ClickHouse (HTTP)              | **8123/tcp**                 | Если используется **Статистика** на **ClickHouse** и ClickHouse вынесен на отдельный сервер.                              |
| ClickHouse (native)            | **9000/tcp**                 | Если используемый драйвер/интеграция ClickHouse требует нативный протокол.                                                |
| Redis                          | **6379/tcp**                 | Если используется Redis (например, для масштабирования Admin Backend) и он вынесен на отдельный сервер. |
| Elasticsearch / OpenSearch     | **9200/tcp**                 | Если для поиска в **Истории диалогов** используется **Elasticsearch** или **OpenSearch** и кластер вынесен на отдельный сервер (порт по умолчанию совпадает). |
| Apache Kafka                   | Порт брокера                 | Если используется сервис [data-storager](https://webim.ru/kb/devops/services/data-storager.html) или интеграция **Active Directory**. |
| SMTP(S)-сервер                 | Порт SMTP-сервера            | Если включена отправка e-mail уведомлений. Откройте исходящие соединения на порт, указанный в настройках SMTP.            |

Подробные требования к хранилищам (включая версии и дополнительные параметры) приведены в статье [Требования к хранилищу](https://webim.ru/kb/devops/sys-reqs-for-server/sys-reqs-server-db.html).

!!! Note "Prometheus"
    **Webim Server** не устанавливает исходящих соединений к Prometheus: Prometheus сам опрашивает endpoint `/metrics`.

    Если Prometheus развёрнут на отдельном узле, разрешите **входящие** соединения **с Prometheus** на порты компонентов, с которых собираются метрики:

      * **Admin Backend**: `/metrics` на порту **6001/tcp** (по умолчанию).
      * **Chat Backend**: метрики по умолчанию выключены; при включении укажите параметр запуска `--prometheus_port={port}` и откройте входящие соединения на выбранный порт.
      * **Speller**: `/metrics` на порту, заданном `API_WEB_PORT` (по умолчанию **8000/tcp**).
      * **data-storager**: `/metrics` веб-приложения на `STATS_WEB_PORT` (по умолчанию **8000/tcp**) и метрики Faust-воркеров на `PROMETHEUS_PORT` (по умолчанию **9090/tcp**).

    Подробности — в статье [Мониторинг Webim Server через Prometheus](https://webim.ru/kb/devops/monitoring/prometheus.html).

## SSL/TLS сертификат

Если используется HTTPS, необходим SSL/TLS сертификат для домена, по которому пользователи и приложения обращаются к серверу Webim.
Самоподписные сертификаты SSL/TLS не поддерживаются.

## Дополнительно

По требованию заказчика может быть интегрирована система мониторинга, автоматического резервирования (backup/restore), балансировки нагрузки (рекомендуются).

---

Источник: https://webim.ru/kb/devops/sys-reqs-for-server/sys-reqs-server-nw.html
