Инструкция по установке сервера Spreed WebRTC на Ubuntu с использованием Docker

Spreed — это бесплатный сервер с открытым исходным кодом (AGPL), предназначенный для проведения аудио — и видеоконференций с использованием технологии WebRTC, разработанный с прицелом на обеспечение приватности. WebRTC — это свободная технология, которая позволяет браузерам напрямую взаимодействовать друг с другом через peer-to-peer соединения. Сервер Spreed WebRTC применяет сквозное шифрование, чтобы гарантировать защиту данных и безопасность пользователей.

Spreed WebRTC предоставляет возможность выполнять следующие функции.

  • Надежный чат для аудио, видео и текстовых сообщений.
  • Веб-конференции
  • Личный видеозвонок

В прошлом руководстве мы рассматривали процесс установки сервера Spreed WebRTC на Ubuntu 16.04 через официальное PPA. В этом руководстве мы покажем, как установить сервер Spreed WebRTC на Ubuntu с помощью Docker-образа.

Зачем использовать Docker? PPA Spreed поддерживается только на Ubuntu 16.04, поэтому если у вас Ubuntu 20.04, 18.04 или другая операционная система, PPA не подойдет. Преимущество Docker в том, что не имеет значения, работаете ли вы на Debian, Ubuntu, CentOS, Redhat, SUSE или другой системе — главное, чтобы ваша ОС поддерживала Docker. Тогда вы сможете установить Spreed WebRTC без проблем.

Первый шаг: установите Docker на Ubuntu.

Чтобы установить самую актуальную версию Docker, можно воспользоваться APT репозиторием Docker. Однако для удобства в этом руководстве Docker будет установлен из стандартного программного репозитория Ubuntu.

sudo apt update sudo apt install docker. io

После установки демон Docker должен запуститься автоматически. Чтобы проверить его состояние, используйте следующую команду:

systemctl status docker

Чтобsystemctl status docker

.» width=»851″ height=»264″ />

Если указанная команда не завершает выполнение сразу, попробуйте нажать клавишу Q для выхода.

Если он не функционирует, активируйте демон с помощью следующей команды:

sudo systemctl start docker

И активируйте автозапуск при загрузке системы.

sudo systemctl enable docker

Инсталляция сервера Spreed WebRTC на Ubuntu через Docker-образ.

После установки Docker введите следующую команду, чтобы создать папку для Spreed WebRTC и загрузить файл server.conf в эту папку. Этот файл позволяет установить пользовательские настройки для сервера Spreed WebRTC при запуске Docker-образа.

sudo mkdir /etc/spreed/ cd /etc/spreed/ sudo wget https://raw. githubusercontent.com/strukturag/spreed-webrtc/master/server.conf.in - O server.conf

После этого откройте файл в текстовом редакторе командной строки, например, в Nano.

Читайте также:  Обновление Ред ОС с версии 7.3 до 8 - инструкция

sudo nano /etc/spreed/server.conf

Укажите следующую строку.

listen = 127.0.0.1:8080

Spreed должен быть настроен на прослушивание порта 8080 на адресе 0.0.0.0 в контейнере Docker, чтобы принимать запросы с хост-машины.

listen = 0.0.0.0:8080

Сохраните изменения и закройте документ.

Перед тем как запустить контейнер Spreed WebRTC, необходимо обеспечить достаточный уровень энтропии для генерации серверных секретов. Для этого мы можем воспользоваться утилитой rng-tools.

sudo apt install rng-tools

По завершении установки выполните

sudo rngd - r /dev/urandom

После этого выполните следующую команду для запуска образа spreed/webrtc, используя ваш файл server.conf.

sudo docker run - d --name my-spreed-webrtc - p 127.0.0.1:8080:8080 - v /etc/spreed:/etc/spreed - i - t spreed/webrtc - c /etc/spreed/server.conf

  • Режим отсоединения дает возможность контейнеру функционировать в фоновом режиме.
  • Присвойте вашему контейнеру Docker любое имя на ваше усмотрение.
  • -p : Разрешите доступ к порту контейнера на хост-машине. Первый указанный порт соответствует порту на хосте, а второй — порту контейнера. Spreed также принимает соединения на порту 8443 в контейнере Docker для запросов HTTPS, но мы будем использовать Apache или Nginx для завершения TLS-соединения, поэтому нет необходимости открывать порт 8443 на хосте.
  • Создайте связь. Docker соединяет /etc/spreed/ на хосте с /etc/spreed/ внутри контейнера Docker.
  • t : Активируйте псевдоустройство TTY.
  • Переопределите файл /etc/spreed/server.conf внутри контейнера Docker.

Сейчас сервер Spreed WebRTC работает на адресе 127.0.0.1:8080, и это можно проверить с помощью:

sudo ss - lnpt | grep docker

Разверните WebRTC с использованием Docker на Ubuntu.

Конфигурация Обратного Прокси

Для доступа к веб-интерфейсу Spreed через доменное имя необходимо настроить обратный прокси с использованием Apache или Nginx. Это также даст возможность активировать HTTPS, обеспечивая шифрование соединения.

Apache

Установите сервер Apache на операционную систему Ubuntu.

sudo apt install apache2

После этого необходимо создать файл виртуального хоста для Spreed.

sudo nano /etc/apache2/sites-available/spreed-webrtc.conf

Сохраните следующий текст в файл. Поменяйте spreed. example.com на желаемое имя хоста и убедитесь, что DNS A-запись для этого имени хоста настроена.

ServerName spreed. example.com Пропуск через прокси: http://127.0.0.1:8080/ и обратный прокси: http://127.0.0.1:8080/. Проксирование через ws://127.0.0.1:8080/ProxyVia Включено, ProxyPreserveHost Включено

Сохраните изменения в файле и закройте его. После этого необходимо активировать модуль proxy_http.

sudo a2enmod proxy_http

Теперь активируйте этот виртуальный хост.

sudo a2ensite spreed-webrtc.conf

Проверьте настройки и перезапустите Apache.

sudo apachectl configtest sudo systemctl reload apache2

Теперь вы сможете открыть Spreed WebRTC в веб-браузере по адресу http://spreed.example.com.

Читайте также:  Выключение Linux из командной строки

Spreed сервер для WebRTC

Nginx

Для начала выполните установку Nginx на Ubuntu.

sudo apt install nginx

Создайте файл конфигурации для серверного блока Spreed WebRTC.

sudo nano /etc/nginx/conf.d/spreed-webrtc.conf

Запишите следующий текст в файл. Укажите вместо spreed. example.com ваш выбранный хостнейм и убедитесь, что для него настроена DNS A запись.

server { listen 80; listen [::]:80; server_name spreed. example.com; error_log /var/log/nginx/spreed. error; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering on; proxy_ignore_client_abort off; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_next_upstream error timeout invalid_header http_502 http_503 http_504; } location ~ /.well-known/acme-challenge { root /usr/share/nginx/spreed/; allow all; }}

Закройте и сохраните файл. После этого выполните проверку настроек Nginx и перезапустите его.

sudo nginx - t; sudo systemctl reload nginx

Теперь вы сможете зайти на Spreed WebRTC через веб-браузер, используя ссылку http://spreed.example.com.

Spreed сервер для WebRTC

Сгенерируйте и установите TLS-сертификат.

Теперь давайте установим бесплатный TLS-сертификат от Let’s Encrypt. Для этого выполните следующие команды для установки клиента Let’s Encrypt (certbot) из официального PPA certbot.

sudo apt install certbot

Если вы работаете с веб-сервером Apache, вам потребуется установить плагин Certbot, предназначенный для Apache.

sudo apt install python3-certbot-apache

Далее выполните команду, чтобы получить бесплатный сертификат TLS/SSL.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email Пожалуйста, предоставьте текст, который вы хотите перефразировать. - d spreed. example.com

При использовании веб-сервера Nginx необходимо установить плагин Certbot, предназначенный для этой платформы.

sudo apt install python3-certbot-nginx

Затем примените плагин Nginx для получения и установки сертификата, введя следующую команду.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email Пожалуйста, предоставьте текст, который вы хотите перефразировать. - d spreed. example.com

Вы увидите текст, подтверждающий, что вам удалось получить TLS-сертификат.

Настройка сервера TURN/STUN.

WebRTC не сможет функционировать, если пользователи находятся за разными NAT-устройствами, и в таком случае он будет заблокирован. Чтобы обойти NAT, необходимо настроить сервер TURN/STUN, который будет действовать как ретранслятор между веб-браузерами. TURN расшифровывается как T raversal U sing R elays вокруг N AT. Coturn представляет собой бесплатный и открытый сервер TURN и STUN, предназначенный для VoIP и WebRTC.

Coturn можно установить из репозитория Ubuntu, используя следующую команду:

sudo apt install coturn

После завершения установки программа запустится автоматически. Вы можете проверить ее статус, используя:

Читайте также:  Устраните ошибку невозможно получить блокировку /var/lib/dpkg/lock в Ubuntu раз и навсегда

systemctl status coturn

Если он не запускается автоматически, попробуйте активировать его вручную с помощью:

sudo systemctl start coturn

Также добавьте автоматический запуск при старте системы.

sudo systemctl enable coturn

Настройте Coturn для работы с Spreed WebRTC.

Измените главный файл настроек.

sudo nano /etc/turnserver.conf

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

  • Замените your-domain.com на адрес вашего домена для NextCloud или Spreed WebRTC.
  • Подставьте публичный IP-адрес сервера вместо 12.34.56.78.
  • Создайте длинный и надежный пароль для аутентификации. (Для генерации случайной строки можно воспользоваться командой openssl rand — base64 20.)

# Работать только как TURN сервер, все STUN запросы будут игнорироваться. no-stun # Укажите порт для прослушивания. Измените на 80 или 443, чтобы обойти некоторые строгие NAT. listening-port=8443 tls-listening-port=5349 # Укажите IP для прослушивания, если не установлено, Coturn будет слушать на всех системных IP. listening-ip=12.34.56.78 relay-ip=12.34.56.78Эти строки содержат поддержку механизма идентификации lt-cred-mech для WebRTC realm.your-domain.comМетод проверки подлинности: use-auth-secret static-auth-secret=your-auth-secret total-quota=100 # Общий объем байт в секунду, который TURN сервер может выделить # для сессий, совместно (входные и выходные сетевые потоки обрабатываются отдельно). bps-capacity=0 # Эта строка обеспечивает дополнительную безопасность. stale-nonce log-file=/var/log/turnserver/turn.log no-loopback-peers no-multicast-peers

Сохраните файл и закройте его. После этого перезапустите сервер coturn, используя команду:

sudo systemctl restart coturn

Coturn функционирует в качестве turnserver для пользователей. Запустите следующую команду, и вы должны заметить, что он принимает запросы на порту 8443.

sudo ss - lnpt | grep turnserver

Теперь давайте внесем изменения в файл настройки Spreed WebRTC.

sudo nano /etc/spreed/server.conf

Включите следующие две строки в раздел [app]. Соответствующим образом измените текст на красный.

turnURIs = turn:coturn-server-ip8443?transport=udp turnSecret =your-auth-secrect

Сохраните изменения в файле и закройте его. После этого перезапустите контейнер Spreed WebRTC с помощью

sudo docker restart my-spreed-webrtc

Необходимо разрешить TCP и UDP порты 8843 в файерволе для корректной работы Coturn. Если вы используете UFW в качестве файервола, выполните следующие команды.

sudo ufw allow 8443/tcp sudo ufw allow 8443/udp

После запуска Coturn и перезапуска Spreed WebRTC, пользователи, находящиеся за NAT, смогут беспрепятственно использовать аудио — и видеозвонки.

Следующий этап.

Надеюсь, это руководство помогло вам настроить сервер Spreed WebRTC на Ubuntu с использованием Docker-образа. Вы также можете интегрировать Spreed. Me с NextCloud.

  • Как установить и настроить Spreed Me WebRTC для работы с NextCloud

Если этот пост был вам полезен, подписывайтесь на нашу бесплатную рассылку.