> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/primery-nastroiki-wss-soedinenii.md).

# primery nastroiki wss soedinenii

## Шаг 1. Публикуем HTTPS порт на внешнем IP

*Примечание: Если модуль находится за NAT, то настройки надо делать на соответствующем проксирующем устройстве.*

Настройки для FreePBX с внешним адресом:

По умолчанию (если включен модуль Firewall) FreePBX блокирует все неизвестные ему порты. Добавим нужные в настройках файрвола:

*пример ссылки на соответствующий пункт меню*<https://freepbx.example.com/admin/config.php?display=firewall>

## Шаг 2. В DNS прописываем запись для внешнего адреса, на котором опубликован модуль

Как правило, делается через личный кабинет провайдера, который обслуживает домен клиента.

## Шаг 3. Выпускаем SSL сертификат

Если у клиента уже есть сертификат, то копируем файлы (сам сертификат, ключ) на сервер с модулем. Если сертификата нет, то выпускаем (Тут очень много вариантов решения).

Вариант выпуска бесплатного сертификата через FreePBX:\
<https://freepbx.example.com/admin/config.php?display=certman>

## Шаг 4. Прописываем путь до сертификата в модуле

**Сохраняем настройки.**

## Шаг 5. Указываем адрес веб-сокетов куда следует

Ссылка вида [wss://freepbx.example.com:8078/…](wss://freepbx.example.com:8078/%E2%80%A6)

{% hint style="info" %}
При перевыпуске сертификата необходимо перезапустить службу, чтобы модуль подгрузил обновленные файлы сертификата.
{% endhint %}

В данном **примере** показано, как настроить WSS-соединение с использованием **Nginx** или **Apache**

## Настройка для Nginx

1. Открыть конфигурационный файл Nginx:

```bash
nano /etc/nginx/nginx.conf
```

2. Добавить конфигурацию для WSS:

```bash
server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /etc/nginx/ssl/server.crt;   
    # Или путь к вашему SSL-сертификату от Let's Encrypt
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location /ws/ {
        proxy_pass wss://freepbx.example.com:8078;   
        # Адрес вашего WebSocket сервера
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        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 X-Forwarded-Proto $scheme;
        proxy_read_timeout 86400;
        proxy_set_header Origin "";
    }
}
```

3. Проверить конфигурацию и перезапустить Nginx:

```bash
nginx -t
systemctl restart nginx
```

## Настройка для Apache

1. Открыть конфигурационный файл Apache:

```bash
nano /etc/httpd/conf.d/ssl.conf
```

2. Добавить или изменить блок конфигурации для WSS:

```bash
<VirtualHost *:443>
    ServerName your_domain.com

    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/server.crt   
    # Или путь к вашему SSL-сертификату от Let's Encrypt
    SSLCertificateKeyFile /etc/httpd/ssl/server.key

    <Location /ws/>
        ProxyPass "wss://freepbx.example.com:8078/"   
        # Адрес вашего WebSocket сервера
        ProxyPassReverse "wss://freepbx.example.com:8078/"
        ProxyPreserveHost On
        RequestHeader set Connection "upgrade"
        RequestHeader set Upgrade "websocket"
    </Location>
</VirtualHost>
```

3. Перезапустить Apache:

```bash
systemctl restart httpd
```
