Магазин / аукцион / FPR / donate / услуги / RSS / распечатать / вход 
Мой мир
Вконтакте
Одноклассники
Google+

[17 июля 2020 | 24 июля 2020]

Spreed WebRTC бесплатный сервер для видеоконференций

В настоящее время возник бум web-конференций и различных вебинаров. В некоторых компаниях возникла потребность во внутрисетевых видеозвонках. И на первый план вышли не технологии видеозвонков через различные видеосервисы, а бесплатный проект от Google под названием WebRTC (Real-time communication). Вся прелесть этой технологии в том, что она поддерживается прямо из браузера. Все современные браузеры её поддерживают в той или иной форме. У меня она работает в браузерах: Firefox, Chrome, Opera и Safari. Теоретически должна работать в новой версии браузера Edge от Microsoft, но у меня до сих пор руки не дошли это проверить.

На этом фоне возникла мысль о том, что раз всё так просто, то должны быть бесплатные реализации как локальной, так и серверной части. Хотя данная технология имеет такую особенность, что трафик идет непосредственно между точками. Но сервер, всё-же, необходим, так как должен быть центр для инициализации звонков и координации трафика. А сам трафик идет по технологии точка-точка. Среди имеющихся реализаций мне понравились WCS (Web Call Server) и Spreed WebRTC. О втором я хочу рассказать подробнее.

Устанавливать его будем на Debian 10 (Buster). Сначала обновим систему и потом установим сопутствующие приложения.

su
apt update
apt upgrade
apt install wget git build-essential golang-go nodejs autoconf -y

Далее скачиваем и устанавливаем сервер Spreed WebRTC.

git clone https://github.com/strukturag/spreed-webrtc.git
cd spreed-webrtc
./autogen.sh
./configure --prefix=/usr

time make
make install

Странно, что установщик сам этого не делает, но нам не сложно. Создадим каталог для конфигурации, копируем шаблон конфигурации и переходим в каталог с конфигурацией. Путь источника отредактируйте в зависимости от имени вашего пользователя.

mkdir -p /etc/spreed-webrtc-server
cp /home/user/spreed-webrtc/server.conf.in /etc/spreed-webrtc-server/server.conf
cd /etc/spreed-webrtc-server

Теперь осталось сконфигурировать под наши нужды. А нужды у нас следующие:

  1. Порт для работы HTTPS: 8443
  2. Указываем место где лежит web-интерфейс
  3. Указываем место где хранится файл с сертификатами

Современные браузеры позволяют работать с WebRTC исключительно по шифрованному каналу, по этому обычный HTTP у нас не заведётся. Указываем порт для сервера TCP/8443. Многие шлюзы в корпоративных сетях его открывают, а домашние роутеры тем более его пропускают. Можно отредактировать руками, а можно и обычными командами из консоли.

sed -i 's|listen = 127.0.0.1:8080|;listen = 127.0.0.1:8080|g' "/etc/spreed-webrtc-server/server.conf"
sed -i 's|;root =.*|root = /usr/share/spreed-webrtc-server/www|g' "/etc/spreed-webrtc-server/server.conf"
sed -i 's|;certificate = server.crt|certificate = server.crt|g' "/etc/spreed-webrtc-server/server.conf"
sed -i 's|;key = server.key|key = server.crt|g' "/etc/spreed-webrtc-server/server.conf"

Обратите внимание, что сертификат ключа и приватный ключ хранятся в одном файле. Если у вас нет сертификатов, то придется генерировать самоподписаные, либо воспользоваться бесплатным. Ну или просто купить сертификат подписанный в доверенном центре сертификации. Не забывайте, что скоро Google и Apple откажутся принимать сертификаты со временем жизни больше одного года. Сгенерировать сертификат можно самостоятельно, но замените моё доменное имя на то к которому будут обращаться ваши пользователи.

openssl req -new -x509 -days 1095 -nodes \
-subj "/C=RO/ST=Test/L=Tester/O=HQT/CN=test.orcinus.ru" \
-keyout server.crt -out server.crt
chmod 400 server.crt

Незабудьте установить права на сертификат. И оповестите пользователей, что браузер ругается на самоподписаные сертификаты и

Скрипт для автоматической загрузки выглядит вот так:

cat >> /etc/init.d/webrtcserver << 'EOF'
#!/bin/sh
### BEGIN INIT INFO
# Provides: spreed-webrtc-server
# Required-Start: $remote_fs $syslog $networking
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Spreed WebRTC
# Description: WebRTC audio/video call and conferencing server and web client
# More information at https://github.com/strukturag/spreed-webrtc
# Author: TeHashX / contact@hqt.ro
# Version: 1.1
### END INIT INFO
CONF="/etc/spreed-webrtc-server/server.conf"
test -f "/usr/sbin/spreed-webrtc-server" || exit 0
spreed_running=`ps ax | grep "spreed-webrtc-server" | awk '{ print $1 }' | wc -l`
case "$1" in
start)
if [ "$spreed_running" -gt 1 ]; then
echo "Spreed Webrtc Server already running..."
exit 0
fi
echo -n "Starting Spreed Webrtc Server: "
cd /etc/spreed-webrtc-server/
/usr/sbin/spreed-webrtc-server -c=$CONF & >/dev/null 2>&1
echo "done"
sleep 5
exit 0
;;
stop)
if [ "$spreed_running" -eq 1 ]; then
echo "Spreed Webrtc Server is not running (no process found)..."
exit 0
fi
echo -n "Killing Spreed Webrtc Server: "
# Trying to kill the Spreed Webrtc Server
ps ax | grep "spreed-webrtc-server" | awk '{ print $1 }' | xargs kill >/dev/null 2>&1
sleep 1
echo "done"
;;
restart)
sh $0 stop
sh $0 start
;;
status)
if [ "$spreed_running" -gt 1 ]; then
echo "Spreed Webrtc Server running."
else
echo "It seems that Spreed Webrtc Server isn't running (no process found)."
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0
EOF

Теперь надо дать права на исполнение.

chmod +x /etc/init.d/webrtcserver

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

/etc/init.d/
./webrtcserver start

Теперь можно запускать и использовать.

• Перейти в архив


Комментарии

Включите JavaScript для комментирования.


Этот сайт использует файлы cookies, чтобы упростить вашу навигацию по сайту, предлагать только интересную информацию и упростить заполнение форм. Я предполагаю, что, если вы продолжаете использовать мой сайт, то вы согласны с использованием мной файлов cookies. Вы в любое время можете удалить и/или запретить их использование изменив настройки своего интернет-браузера.

Сообщайте мне о замеченных ошибках на: web@orcinus.ru. Все пожелания и советы будут учтены при дальнейшем проектировании сайта. Я готов сотрудничать со всеми желающими. В некоторых случаях, мнение автора может не совпадать с мнением автора! Phone: +7-902-924-70-49.

Рейтинг@Mail.ru LiveInternet Rambler's Top100 Яндекс.Метрика