✔ OpenMeetings: Установка и настройка системы видеоконференций версии 5.0.0-M3 на CentOS 7.

Содержание:

1. Описание программы OpenMeetings.

1.1. Возможности.
1.2. Безопасность и кастомизация.

2. Подготовка сервера к установке OpenMeetings.

2.1. Настройка прав пользователей.
2.2. Настройка SELinux или его удаление.

2.2.1. Настройка SELinux.
2.2.2. Удаление SELinux.

2.3. Установка iptables.

2.3.1. Отключение firewalld.
2.3.2. Установка iptables.

3. Установка OpenJava 1.8.
4. Установка репозиториев EPEL и NUX.

4.1. Подключим репозиторий EPEL.
4.2. Подключим репозиторий NUX.

5. Установка LibreOffice.
6. Установка Ghostscript, необходимых пакетов и библиотек.
7. Установка ImageMagick и Sox.
8. Компилятор FFmpeg.
9. Установка и настройка MariaDB.

10. OpenMeetings.

10.1. Установка OpenMeetings.
10.2. Подготовка скрипт для запуска Tomcat-OpenMeetings
10.3. Если у вас нет графической оболочки.
10.4. Запуск скрипта для запуска Tomcat-OpenMeetings.
10.5. Настройка OpenMeetings в web-интерфейсе.

11. Установка Kurento-Media-Server.
12. Конфигурирование OpenMeetings.
13. Доменное имя для OpenMeetings и SSL сертификаты.

13.1. Прикрепление доменного имени.
13.2. Создание SSL сертификатов к домену.

13.2.1. Получение сертификатов.
13.2.2. Проверка выдачи сертификатов.
13.2.3. Перевыпуск сертификатов.
13.2.4. Конфигурирование Tomcat-OpenMeetings на использование SSL certificates.

14. Установка и подключение Coturn (Turn сервер).

14.1. Установка Coturn.
14.2. Настройка Turn сервера.
14.3. Комбинирование OpenMeetings с Kurento-Media-Server.

15. Открытие портов.
16. Скрипт автозапуска OpenMeetings.
17. Если камера не передает изображение.
18. Оригиналы источников информации.


1. Описание программы OpenMeetings.

OpenMeetings — открытая программная система видеоконференцсвязи, предназначенная для проведения видеоконференций, вебинаров, презентаций, дистанционного обучения. Возможно также проведение трансляций.

1.1. Возможности.

OpenMeetings имеет функционал, аналогичный коммерческим ВКС-системам, а именно:

  • передача звука и видео;
  • общая доска, общий экран (screen sharing);
  • запись web-мероприятий;
  • возможность создавать неограниченное количество публичных и приватных виртуальных комнат;
  • приватный и общий чат;
  • внутренний почтовый клиент для email-переписки и рассылок;
  • календарь для планирования совещаний;
  • опросы и голосования;
  • обмен документами распространённых офисных форматов (PDF, MS Office, OpenOffice);
  • каталог файлов и видеозаписей;
  • мобильный клиент под Android.

Для различных мероприятий предназначены виртуальные комнаты трех типов:

  • обычные комнаты для проведения конференций;
  • комнаты с ограниченным использованием видеоокон;
  • комнаты для проведения интервью.

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

1.2. Безопасность и кастомизация.

Для тех, кто хочет полностью контролировать информационные потоки и быть уверенным в конфиденциальности одним из основных преимуществ OpenMeetings является безопасность, что определяется следующими возможностями системы:

  • передача данных по протоколам https и rtmps с использованием механизмов шифрования SSL или TLS;
  • хранение паролей на сервере в зашифрованном виде (MD5);
  • установка сервера на собственном оборудовании;
  • открытый исходный код продукта;
  • возможность авторизации при помощи LDAP/Oaouth;
  • различные уровни доступа пользователей к системе;
  • возможность доступа участников с помощью одноразовых маркеров доступа.

Возможность настройки интерфейса OpenMeetings под бренд компании пользователя (кастомизация) — ещё одно полезное свойство. Пользователи либо сами, либо обратившись к сообществу разработчиков, могут заменить стандартные цвета, логотипы, контекст приложения и другие параметры согласно своим пожеланиям.

OpenMeetings — свободное программное обеспечение, поэтому возможно внесение любых изменений в исходный код.

2. Подготовка сервера к установке OpenMeetings.

2.1. Настройка прав пользователей.

Заходим на сервер, переключаемся в режим суперпользователя root:

# su

Вводим пароль он него.

Установим Midnight Commander — текстовый редактор и файловый менеджер в одном лице:

# yum -y install mc net-tools

Добавим в систему пользователей класса sudoers, которые смогут пользоваться командой sudo:

# mcedit /etc/sudoers

Скопируйте и вставьте строку похожего содержания по общему смыслу синтаксиса конфигурационного файла.

Вместо ‘user‘ вставьте своё имя пользователя, которому делегируете права sudo.

user ALL=(ALL:ALL) ALL

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

2.2. Настройка SELinux или его удаление.

2.2.1. Настройка SELinux.

Для тех, кто использует SELinux, произведем его настройку:

# mcedit /etc/selinux/config

Найдем и модифицируем строку:

SELINUX=enforcing

на

SELINUX=permissive

Сохраним файл конфигурации.

Перезагрузим сервер:

# shutdown -r

2.2.2. Удаление SELinux.

Удалим SELinux, эксплуатация вами его не предусматривается.

# yum -y remove selinux*

Перезагрузим сервер:

# shutdown -r

2.3. Установка iptables.

Для корректной работы web-сервера нужно настроить правила брандмауэра. В руководстве используется программа iptables. Лично я привык к iptables и всегда работаю с ним от проекта к проекту. Скорее всего, что настройки в других брандмауэра продуктах будут аналогичными.

Подробнее как установить и настроить iptables читайте в этой статье на сайте: «CentOS 7: Настройка iptables с помощью скрипта iptables.sh».

2.3.1. Отключение firewalld.

Если вы умеете пользоваться firewalld, и знаете как его настраивать, то iptables вам можно не ставить.  Это по функционалу полностью одинаковые программы. Настраивайте все в firewalld, если вам она удобнее.

Первым делом отключим firewalld, который присутствует в CentOS 7 по-умолчанию сразу после установки:

# systemctl stop firewalld

Теперь удалим его из автозагрузки, чтобы он не включился снова после рестарта:

# systemctl disable firewalld

Удалим с сервера CentOS 7 брандмауэра firewalld:

# yum -y remove firewalld

После этого на сервере настройки сетевого экрана становятся полностью открытыми. Посмотреть правила iptables можно командой:

# iptables -L -v -n

2.3.2. Установка iptables.

На самом деле фаервол у нас на сервере уже стоит и работает, просто нет никаких правил, все открыто. Установить нам нужно будет дополнительные утилиты управления, без которых конфигурировать iptables невозможно.

# yum -y install iptables-services

Теперь можно добавить iptables в автозагрузку и запустить:

# systemctl start iptables.service

# systemctl enable iptables.service

Настройку iptables мы сделаем с вами в самом конце статьи, когда будут установлены все нужные компоненты и будет полный список рабочих портов для OpenMeetings.

3. Установка OpenJava 1.8.

Для работы системы видеоконференций нам понадобится Java 1.8:

# sudo yum install -y java-11-openjdk-devel

Инсталлятор нам поставил всю линейку продуктов, выберем и пометим для системы видеоконференций конкретную именно для нашего потребления: 

# sudo update-alternatives --config java

Выбираем нужную нам для OpenMeetings 5.0.0-M3 — это OpenJava 11:

Удостоверимся, что выбранная нами версия OpenJava 11 находится в активном состоянии на нашем сервере:

# java -version

4. Установка репозиториев EPEL и NUX.

Выполним стандартную процедуру обновления пакетов:

# yum -y update

# yum -y upgrade

Установим менеджер закачек для CentOS 7:

# sudo yum -y install wget

4.1. Подключим репозиторий EPEL.

Как подключить репозиторий EPEL по актуальным ссылкам, можно прочитать в статье «CentOS 7: Репозитории: EPEL».

4.2. Подключим репозиторий NUX.

Как подключить репозиторий NUX по актуальным ссылкам, можно прочитать в статье «CentOS 7: Репозитории: NUX».

Проверим корректность подключения данных репозиториев к серверу CentOS 7.

# yum repolist

Если по каким-либо причинам вы не увидели их списке, то ищите в интернете ссылки на актуальные решения по подключению данных репозиториев к системе CentOS 7.

5. Установка LibreOffice.

Открытые собрания будут нуждаться в LibreOffice для преобразования загруженных офисных файлов на общественную доску конференций.

Установим его:

# sudo yum -y install libreoffice libreoffice-headless

Это будет эпичная и долгая установка!

6. Установка Ghostscript, необходимых пакетов и библиотек.

Установим пакеты и библиотеки, которые понадобятся позже:

# sudo yum install -y libjpeg libjpeg-devel freetype freetype-devel unzip gcc gcc-c++ ncurses ncurses-devel make zlib zlib-devel libtool bison bison-devel openssl-devel bzip2 bzip2-devel file-roller git autoconf automake pkgconfig tomcat-native nmap vlc

Это будет еще одна эпичная и  не менее долгая установка!

Вернемся обратно в режим суперпользователя root:

# su

Введем пароль авторизации.

Скриптом должны развернуть Ghostscript 9.27:

# cd /opt

# wget https://cwiki.apache.org/confluence/download/attachments/27838216/ghostscript.sh

# chmod +x ghostscript.sh

И запустить скрипт:

# ./ghostscript.sh

… когда скрипт закончит свою работу, то объявит об этом: GhostScript compilation is Finished!

Удалим распакованный архив:

# rm -Rf /opt/ghostscript-9.27

7. Установка ImageMagick и Sox.

ImageMagick, работает с файлами  jpg, png, gif и так далее.

Установим библиотеки этой программы:

# yum install -y ImageMagick giflib giflib-devel giflib-utils

Sox, работает со звуком.

Поставим и его, установка будет долгой:

# wget http://ftp.icm.edu.pl/packages/sox/14.4.2/sox-14.4.2.tar.gz

# tar xzvf sox-14.4.2.tar.gz

# cd /opt/sox-14.4.2

# ./configure

# make -s && make install

# cd /opt

8. Компилятор FFmpeg.

FFmpeg работает с видео. Установим пакеты, библиотеки и кодеки для воспроизведения записей:

# yum install -y glibc alsa-lib-devel faac faac-devel faad2 faad2-devel gsm gsm-devel imlib2 imlib2-devel lame-devel vorbis-tools theora-tools libvpx-devel vlc autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel curl

По какому принцу работает компиляция ffmpeg описывается и что с ней делать на этом url-адресе разработчика:

https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

Разработчики программы видеоконференций сделали скрипт для компиляции и установки ffmpeg на CentOS 7. Он протестирован и находится в порядке.

Результат любой записи, которую вы делаем на открытых заседаниях, будет в формате mp4.

Скачаем скрипт:

# cd /opt

# wget https://cwiki.apache.org/confluence/download/attachments/27838216/ffmpeg_centos7.sh

Сделаем его исполняемым:

# chmod +x ffmpeg_centos7.sh

… и запустим его.

Компиляция займет около 30 минут:

# ./ffmpeg_centos7.sh

Когда компиляция закончится, перейдем к следующему шагу, а пока идите пить чай! Без шуток!

Все скомпилированные файлы будут установлены в: /usr/local/bin.

Когда она будет закончена, появится текст: FFmpeg Compilation is Finished!

9. Установка и настройка MariaDB.

Выходим из режима суперпользователя:

# exit

С помощью sudo устанавливаем MariaDB. Как установить MariaDB по актуальным ссылкам, можно прочитать в статье «MariaDB: Установка и настройка системы баз данных».

Создадим базу данных для OpenMeetings:

# sudo mysql -u root -p

Система запросит пароль от root пользователя баз данных MariaDB, а не от системы CentOS 7.

> CREATE DATABASE open503 DEFAULT CHARACTER SET 'utf8';

> GRANT ALL PRIVILEGES ON open503.* TO 'hola'@'localhost' IDENTIFIED BY '1a2B3c4D' WITH GRANT OPTION;

  • open503 — имя базы данных;
  • hola — имя пользователя базы данных;
  • 1a2B3c4D — пароль пользователя базы данных. 

> quit

10. OpenMeetings.

10.1. Установка OpenMeetings.

Пришло время установить саму систему OpenMeetings!

Мы установим  OpenMeetings в /opt/open503. Вся следующая информация подразумевает использование именно этого каталога для OpenMeetings.

Создадим папку: 

# sudo mkdir -p /opt/open503

# cd /opt

Скачаем файлы системы видеоконференций:

# sudo wget http://archive.apache.org/dist/openmeetings/5.0.0-M3/bin/apache-openmeetings-5.0.0-M3.tar.gz

# sudo tar xzvf apache-openmeetings-5.0.0-M3.tar.gz

Скопируем разархивированные файлы из каталога /apache-openmeetings-5.0.0-M3 в каталог /open503:

# sudo cp /opt/apache-openmeetings-5.0.0-M3/* /opt/open503 -R -n -v

Удалим ненужный больше каталог /apache-openmeetings-5.0.0-M3.

# sudo rm -Rf /opt/apache-openmeetings-5.0.0-M3

Скачаем и установим коннектор между OpenMeetings и MariaDB:

# cd /opt

# sudo wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar

И скопируем его туда, где и ему и место:

# sudo cp /opt/mysql-connector-java-8.0.18.jar /opt/open503/webapps/openmeetings/WEB-INF/lib

10.2. Подготовка скрипт для запуска Tomcat-OpenMeetings

Скачаем скрипт для запуска Tomcat-OpenMeetings:

# cd /opt

# sudo wget https://cwiki.apache.org/confluence/download/attachments/27838216/tomcat3

И скопируем его туда, где и ему и место:

# sudo cp tomcat3 /etc/init.d

Сделаем скрипт исполняемым:

# sudo chmod +x /etc/init.d/tomcat3

Если вы сделали каталог установки по умолчанию отличный от /opt/open503, пожалуйста, модифицируйте скрипт перед запуском, по аналогии:

… строку

CATALINA_HOME==/opt/open503

… на

CATALINA_HOME==/your-path-installation

Сделаем следующие скрипты исполняемыми:

# sudo chmod +x /opt/open503/bin/catalina.sh

# sudo chmod +x /opt/open503/bin/ciphers.sh

# sudo chmod +x /opt/open503/bin/configtest.sh

# sudo chmod +x /opt/open503/bin/daemon.sh

# sudo chmod +x /opt/open503/bin/digest.sh

# sudo chmod +x /opt/open503/bin/makebase.sh

# sudo chmod +x /opt/open503/bin/setclasspath.sh

# sudo chmod +x /opt/open503/bin/shutdown.sh

# sudo chmod +x /opt/open503/bin/startup.sh

# sudo chmod +x /opt/open503/bin/tool-wrapper.sh

# sudo chmod +x /opt/open503/bin/version.sh

10.3. Если у вас нет графической оболочки.

Если у вас нет графической оболочки и вы ставили CentOS 7 в минимальной комплектации, то вы не сможете продолжить устанавливать систему из под ‘localhost‘. 

http://localhost:5080/openmeetings/

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

Смотрим свой IP-адрес:

# ifconfig

Открываем файл с сетевыми настройками OpenMeetings:

Пройдем в /opt/open503/conf/server.xml и модифицируем некоторые параметры работы  OpenMeetings.

# mcedit /opt/open503/conf/server.xml

Ищем строки localhost :

<Engine name="Catalina" defaultHost="localhost">

<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="true">

И заменяем localhost на ваш-IP-адрес:

<Engine name="Catalina" defaultHost="ваш-IP-адрес">

<Host name="ваш-IP-адрес" appBase="webapps" unpackWARs="false" autoDeploy="true">

Сохраняем файл конфигурации и выходим из тестового редактора.

Порты пока не трогаем и не переназначаем. В зависимости от версии OpenMeetings, на момент написания инструкции, количество исправлений в файле конфигурации может варьироваться. Внимательно все просмотрите и исправьте до перезапуска сервера OpenMeetings.

Теперь ваш адрес входа, после запуска системы для, будет, без ‘localhost‘:

http://ваш-IP-адрес:5080/openmeetings/

10.4. Запуск скрипта для запуска Tomcat-OpenMeetings.

Перезапустим службу MariaDB:

# sudo systemctl restart mariadb.service

… и запустим скрипт tomcat-OpenMeetings:

# sudo /etc/init.d/tomcat3 start

Подождем 40-60 для срабатывания скрипта и выполнения всех необходимых процедур.

10.5. Настройка OpenMeetings в web-интерфейсе.

Внимание! Если вы поменяли ‘localhost‘ на свой IP-адрес, то у вас другой вход:

http://ваш-IP-адрес:5080/openmeetings/

После этого в браузере пробуем зайти в систему видеоконференций локально:

http://localhost:5080/openmeetings/

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

http://192.168.0.5:5080/openmeetings/

Данная ссылка со стороннего компьютера пока работать не будет. Для активации сервера видеоконференций нужно провести его настройку в web-интерфейсе.

Нажимаем на экране клавишу «>» и попадаем в окно с приглашением ввести данные от нашей базы данных, которую мы создавали выше по тексту инструкции.

Вместо «H2«, выбираем формат «MySQL» — это формат нашей любимой и родной MariaDB.

Заполняем анкету на базу данных по смыслу полей в окне:

  • Тип БД: MySQL
  • Имя сервера БД: localhost
  • Порт БД: 3306
  • Имя базы данных: open503
  • Имя пользователя базы данных: hola
  • пароль пользователя базы данных: 1a2B3c4D

Нажимаем на экране клавишу «Проверка» и получаем утвердительную зеленую полоску в шапке окна подключения к базе данных.

Нажимаем на экране клавишу «>» и попадаем в окно с регистрацией администратора системы видеоконференций:

Нажимаем на экране клавишу «>» и попадаем в окно с настройкой сервера оповещения пользователей. 

У меня почтовый ящик на yandex.ru, я заполнил анкету этого окна по технической документации своего yandex.ru ящика.

Нажимаем на экране клавишу «>» и попадаем в окно с настройкой системе обработки мультимедиа информации сервером. 

Здесь будут представлены соответствующие пути для изображения, видео, аудио и преобразования загруженных файлов:

  • ImageMagick Path == /usr/bin
  • FFMPEG Path == /usr/local/bin
  • SOX Path == /usr/local/bin
  • OpenOffice/LibreOffice Path for jodconverter == /usr/lib64/libreoffice

По мере того как вы идете вводя пути, вы можете проверить, правильны ли они, нажав на кнопку с надписью «Проверка«.

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

Я нажал на все кнопки и собрал вам коллекцию зеленых шапок.

Нажимаем на экране клавишу «>» и попадаем в окно с параметрами шифрования данных.

Если вы не понимаете, что означает информация в данном окне и зачем она нужно, то мы всё оставим как есть «по умолчанию» просто нажмем «>» и перейдем к следующему окну настроек.

Это финальный экран!

Нажимаем на экране клавишу «Закончить» и система начинает самораспаковываться. Подождите несколько секунд, пока таблицы не будут заполнены в базе данных.

Внимание! НИЧЕГО НЕ ЖМИТЕ на радостях, как закончится! Дочитайте текст ниже! Иначе все испортите!!!

По окончанию инсталляции выйдет окно вида:

Первым делом нужно перезапустить сервер Tomcat и быть подключенным к интернету:

# sudo /etc/init.d/tomcat3 restart

Подождем 40-60 для срабатывания скрипта и выполнения всех необходимых процедур.

Вот теперь вы можете нажать на кнопку «Вход в приложение«, и она приведет вас к страничке авторизации OpenMeetings.

Но не всё так просто, прежде чем начать организовывать конференции, мы должны установить Docker, Kurento-Media-Server, Turn Server чтобы вы могли иметь доступ к камере, микрофону, к записи и совместному использованию рабочего стола в комнате конференции.

11. Установка Kurento-Media-Server.

Перезагрузим CentOS 7 сервер:

# shutdown -r

После перезагрузки сервера CentOS 7, установим Kurento-Media-Server. Он нужен для работы видеокамер, микрофонов и видеозаписей, а так же для трансляции рабочих столов.

Установим обновления из ранее подключенных репозиториев:

# yum -y update

Установим службу Docker. Как установить службу Docker написано в этой статье: «CentOS 7: Установка и использование Docker».

Перезапустим службу Docker:

# sudo systemctl restart docker

И установим Kurento-Media-Server

# sudo docker run -d --name kms -p 8888:8888 --mount type=bind,source=/opt/open503/webapps/openmeetings/data,target=/opt/open503/webapps/openmeetings/data kurento/kurento-media-server

Запустим Kurento-Media-Server, имя которого в Docker системе у нас ‘kms‘:

# sudo docker start kms

Перезапустим службу MariaDB:

# sudo systemctl restart mariadb.service

… и запустим скрипт Tomcat-OpenMeetings:

# sudo /etc/init.d/tomcat3 start

Подождем 40-60 для срабатывания скрипта и выполнения всех необходимых процедур.

Теперь вы можете получить доступ к видеоконференциям со всеми функциями, находящимися в вашем распоряжении.

Нажмите на ссылку вниз и введите имя пользователя и его пароль для входа в систему:

https://localhost:5443/openmeetings

Для возможности подключения к серверу из Интернета или по LAN откройте и пробросьте порты 5443, 8888. Пока не спешите. В конце инструкции будет итоговое резюме по списку портов.

12. Конфигурирование OpenMeetings.

Вводим пароль и логин администратора и мы в системе!

Как только вы получите доступ к OpenMeetings, сделаем некоторые обязательные настройки, пожалуйста, пройдите по пути АдминистрированиеКонфигурация, находим пункт path.ffmpeg и удаляем записанное в него значение «/usr/bin» или «/usr/local/bin«, что там будет в зависимости от версии OpenMeetings на момент написания инструкции. Сохраняем настройки.

Выбираем «1» каталог ffmpeg кодека, нажимаем, он открывает настройки в систему кодирования видео «2«, УДАЛЯЕМ значение, останется ПУСТОЕ ПОЛЕ, сохраняем результат «3«.

Теперь выйдем из системы:


Заново войдем в нее и сделаем снова некоторые обязательные настройки, пожалуйста, пройдите по пути АдминистрированиеКонфигурация, находим пункт path.ffmpeg и записываем в него ОБРАТНО значение из предыдущего шага  «/usr/local/bin«.

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

Примечание! Да, странные маневры, но если это не сделать, то потом на доску в классе не будут добавляться конвертированные видеофайлы. Такая ошибка и такое решение было найдено в ходе эксплуатации данной системы некоторое время. Отпадывает конвертация после установки установки Turn Server. Если снова отпадет, то повторите этот шаг со стиранием и восстановлением поля. Обычно это чинит возможность вставлять и конвертировать видео.

Готово! Теперь мы может передавать видеоизображение! Ну собственно наш OpenMeetings сервер настроен и готов к работе.

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

Ваш адрес OpenMeetings сервера будет имет вид:

https://IP-адрес:5443/openmeetings/

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

13. Доменное имя для OpenMeetings и SSL сертификаты.

Вроде бы все готово для запуска (особенно если следовать официальной инструкции), но там вот такого вида ссылка https://localhost:5443/openmeetings/install. Если обратить внимание на https и порт 5443, мы понимаем что ничего у нас не выйдет. Конечно можно запустить скрипт ./bin/startup.sh и сервер запуститься. На него можно будет даже зайти и настроить по ссылке http://localhost:5080/openmeetings/install, но вот только нормальной работы не будет. Сейчас все браузеры, а Яндекс-браузер так особенно, борются за безопасность пользователя и работу с камерой и микрофоном разрешают только по https. Через FireFox удастся зайти и разрешить работу с камерой, но это опять таки привязывает нас к одному браузеру. Поэтому переходим к установке и настройке SSL. Можно сделать сертификат за денежку, а можно и самостоятельно, работать от этого хуже OpenMeetings не станет.

13.1. Прикрепление доменного имени.

https://IP-адрес:5443/openmeetings/

Если вас это устраивает, то оставляйте всё так есть и работайте внутри своей корпоративной сети. OpenMeetings спокойно висит на 5443 порту и даже не мешает работать другим службам, которые используют традиционный 443 порт и могут находиться на этом же сервере CentOS 7.

Для того, чтобы иметь возможность работать через доменное имя — арендуем доменное имя вида example.ru. Получим у провайдера белый IP-адрес.

Перезагрузим сервер CentOS 7, чтобы все службы OpenMeetings были деактивированы с гарантией!

# shutdown -r

Пройдем в /opt/open503/conf/server.xml и модифицируем некоторые параметры работы  OpenMeetings.

# mcedit /opt/open503/conf/server.xml

Ищем строки localhost или ваш-IP-адрес, если уже успели модифицировать по тексту инструкции выше:

<Engine name="Catalina" defaultHost="localhost">

<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="true">

И заменяем localhost (ваш-IP-адрес) на example.ru:

<Engine name="Catalina" defaultHost="example.ru">

<Host name="example.ru" appBase="webapps" unpackWARs="false" autoDeploy="true">

Ищем все строки с 5080 и 5443 с помощью автопоиска:

<Connector port="5080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="5443" />

<Connector port="5443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" keystoreFile="conf/keystore" keystorePass="openmeetings" clientAuth="false" sslProtocol="TLS"/> <Connector port="5443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" > <Connector port="8009" protocol="AJP/1.3" redirectPort="5443" />

И заменяем строки с 5080 и 5443 соответственно на 80 и 443:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" keystoreFile="conf/keystore" keystorePass="openmeetings" clientAuth="false" sslProtocol="TLS"/> <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" > <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

Другие порты не трогаем и не переназначаем. В зависимости от версии OpenMeetings, на момент написания инструкции, количество исправлений в файле конфигурации может варьироваться. Внимательно все просмотрите и исправьте все по смыслу до перезапуска сервера OpenMeetings.

Далее меняем настройки web-интерфейсе программы по адресу https://IP-адрес:5443/openmeetings/АдминистрированиеКонфигурация:

  1. Выбираем пункт «26 - application.base.url«.
  2. Меняем поле «Значение» на https://example.ru/openmeetings/.
  3. Нажимаем значок «Дискета» и сохраним изменения. 

Всё готово к перезапуску сервера OpenMeetings. Можно перезапустить только отдельные службы Docker и Tomcat-OpenMeetings, но для чистоты эксперимента, мы перезапустим весь сервер CentOS 7 целиком.

# shutdown -r

После перезагрузки сервера CentOS 7, необходимо запускать вручную следующие компоненты:

  1. Kurento-Media-Server, имя которого в Docker системе у нас ‘kms‘:
    # sudo docker start kms
  2. Скрипт Tomcat-OpenMeetings:
    # sudo /etc/init.d/tomcat3 start

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

Запустится OpenMeetings по новому для него адресу:

https://exemple.ru

Вероятно в Яндекс-браузере и други браузерах, кроме FireFox вы его никак не откроете. Они принудительно блокируют сертификат, который поставляется в OpenMeetings по умолчанию при установке. Ставьте FireFox и только тогда вы откроите OpenMeetings .

Если открывать сразу по данному адресу, то браузер обнаружит, сертификат, встроенный по умолчанию в сервер OpenMeetings, самоподписной и является подозрительным для запуска сайта:

Добавим его в «Доверительные«, нажмём «Дополнительно…» —> «Принять риск и продолжить«…

После этого сайт откроется в привычном традиционно с виде:

13.2. Создание SSL сертификатов к домену.

13.2.1. Получение сертификатов.

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

Остановим работу OpenMeetings путем перезагрузки сервера CentOS 7

# shutdown -r

Установим Git:

# yum -y install git

Скачаем Git с официального сайта для копирования Let´s Encrypt в папку /opt:

# sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Пройдем в каталог:

# cd /opt/letsencrypt

Сделаем скрипт получения сертификатов исполняемым:

# chmod +x letsencrypt-auto

… и запустим его.

Внимание! Важно, чтобы на момент создания сертификата ваш CentOS 7 сервер не имел порта 80, используемого с каким-либо web-сервером или каким-либо другим устройством. Если таковой факт использования 80 порта имеется, то остановите его и продолжите этот шаг. Когда сертификаты будут завершены, вы можете продолжить привычное использование порта 80 на данном сервере CentOS 7.

Let´s Encrypt произведет сверки “SSL Certificate Authority (CA)” с вашим доменом.

Мы запустим его с параметром --standalone, так что вы сможете добавить сертификат каждому домену, например: -d newexemple.ru.

Пример исполнения команды, поставьте sudo, иначе на сработает: 

# sudo -H ./letsencrypt-auto certonly --standalone -d exemple.ru -d www.exemple.ru

Внимание! Перед запуском команды остановите работу OpenMeetings, иначе получите ошибку о том, что 80 порт чем-то занят: «Problem binding to port 80: Could not bind to IPv4 or IPv6». И выдача сертификата будет остановлена!

Наш вариант для нашего случая, запускать нужно с sudo, без него, хоть и под root, может не сработать:

# sudo -H ./letsencrypt-auto certonly --standalone -d exаmple.ru

После ввода этой команды система немного «подвиснет» секунд на 30, покажется, что реально зависла:

Но через некоторое время отомрет начнет доустанавливать необходимые для ее работы компоненты:

В процессе выдачи сертификата необходимо будет ответить на вопросы небольшой технической анкеты:

  1. Ввести ваш e-mail для рассылки новостей Let´s Encrypt: your_email@mail.ru.
  2. Согласиться с лицензионным соглашением: "A" или Enter.
  3. Согласиться или отказаться о рассылки новостей Let´s Encrypt: «Y/N» или Enter.

И самое важное:

4. Написать доменное имя, на которое вы бы хотели получить SSL сертификаты: example.ru.

Получаем поздравление о том, что сертификаты для нашего домена успешно выписаны Let´s Encrypt и ожидают их установки по следующим каталогам, пути которых указаны в ответе работы скрипта.

13.2.2. Проверка выдачи сертификатов.

Убедимся, что всё прошло как надо, запросим список файлов в каталоге:

# sudo ls /etc/letsencrypt/live

Ответом будет строка с отображением каталогов с вашим доменным именем.

example.ru    README

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

Проверим что интересного в них:

# cd /opt/letsencrypt

# sudo ./certbot-auto certificates

Ответ вида:

Found the following certs:
Certificate Name: your_domain
Domains: your_domain www.your_domain
Expiry Date: 2020-03-24 20:49:02+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/your_domain/fullchain.pem
Private Key Path: /etc/letsencrypt/live/your_domain/privkey.pem

13.2.3. Перевыпуск сертификатов.

Сертификаты Let’s Encrypt действительны только 89 дней, потом их приходится перевыпускать.

Можно делать это самостоятельно и вручную, главное, чтобы был выход в интернет на момент перевыпуска сертификата.

# cd /opt/letsencrypt

# sudo ./letsencrypt-auto renew

Примечание: обратите внимание на пункт ./letsencrypt-auto.

Если делать раньше, то вы получите отказ в перевыпуске, так как они считаются действительными, пока не пройдет хотя бы 1 месяц — это 30 дней.

Можно всё автоматизировать, добавив нижнюю строку в cron, чтобы каждое воскресенье проверять, если сертификат необходимо обновить и сделать это в случае необходимости:

Проверим, работает ли у нас вообще cron в фоновом режиме?

# ps -ef | grep cron

Открываем файл заданий cron:

# mcedit /etc/crontab

Добавляем строки по смыслу общего синтаксиса в файле:

# OpenMeetings Server
# Run Let's Encrypt auto-renew CentOS 7
30 2 1 * * root /opt/letsencrypt/letsencrypt-auto renew

Сохраняем файл задач cron.

13.2.4. Конфигурирование Tomcat-OpenMeetings на использование SSL certificates.

Внимание! Данное решение подходит только для OpenMeetings 5, не для 4 версии!

Данный шаг в этой части инструкции прийдется повторять каждые 80 дней, после авто-обновления сертификатов Let´s Encrypt, которые будут действительны всего 89 дней.

В данной инструкции мы с вами условно считаем, что вы установили сервер OpenMeetings  в каталог /opt/open503. Если вы установили сервер OpenMeetings в другой каталог, то выполняйте все действия по смыслу с вашим реальным расположением каталогов.

Ранее мы получили сертификаты Let´s Encrypt для нашего доменного имени. Для их использования нужно перевести их в формат PKCS12 принятый в  OpenMeetings.

Установим конвертор:

# sudo yum -y install openssl

Запускаем специальную длинную команду, без переводов строк:

# sudo openssl pkcs12 -export -out /tmp/example.com_fullchain_and_key.p12 -in /etc/letsencrypt/live/example.com/fullchain.pem -inkey /etc/letsencrypt/live/example.com/privkey.pem -name tomcat

Замените example.com на свое доменное имя по смыслу, тем именем, сертификаты на которое  вы заказывали в Let´s Encrypt.

Будет затребована генерация пароль. Не используйте спецсимволы! Он путается! Используйте пароль samplePassword или введите дважды что-либо на свое усмотрение и запомните его.

Внимание! Этот пароль, вам понадобится для настройки файлов конфигурации ниже по тексту инструкции. Сохраните его в текстовый Блокнот!

И конвертируем PKCS12 формат в формат JKS, который использует java keytool.

Снова длинный безразрывный поток команд:

# sudo keytool -importkeystore -deststorepass samplePassword -destkeypass samplePassword -destkeystore /tmp/example.com.jks -srckeystore /tmp/example.com_fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass samplePassword -alias tomcat

Замените example.com на свое доменное имя по смыслу тем именем, сертификаты на которое  вы заказывали в Let´s Encrypt.

Замените пример пароля samplePassword по смыслу на тот пароль, который вы указали на предыдущем шаге в этом разделе общей инструкции.

Скопируйте сгенерированный example.com.jks файл в установленную OpenMeetings директорию:

# sudo cp /tmp/example.com.jks /opt/open503/conf

Соответственно заменяем example.com на ваше доменное имя.

Теперь настроим OpenMeetings на работу с этим ключем.

Открываем server.xml файл:

# mcedit /opt/open503/conf/server.xml

Ищем блок со строкой:

keystoreFile="conf/keystore" keystorePass="openmeetings"

Заменяем по смыслу на своё и пароль, который мы сохранили в Блокнот:

keystoreFile="conf/example.com.jks" keystorePass="samplePassword"

Сохраняем файл конфигурации.

14. Установка и подключение Coturn (Turn сервер).

14.1. Установка Coturn.

Установим его:

# yum -y install coturn

И включим в активное состояние одну строчку файле конфигурации:

# mcedit /etc/default/coturn

Вот так добавим одну строку:

TURNSERVER_ENABLED=1

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

14.2. Настройка Turn сервера.

Сгенерируем пароль, который потребуется нам для работы Turn сервера с OpenMeetings:

# sudo openssl rand -hex 32

Ответом в консоли будет что-то похожее на это:

751c45cae60a2839711a94c8d6bf0089e78b2149ca602fdXXXXXXXXXXXXXXXXX

Скопируем этот пароль в Блокнот и запомним его, он нам скоро пригодится ниже по тексту.

Открываем и редактируем файл конфигурации:

# mcedit /etc/coturn/turnserver.conf

В этом файле нужно будет раскомментировать и модифицировать следующие строки:

use-auth-secret

Сразу добавляем наш ключ:

static-auth-secret=751c45cae60a2839711a94c8d6bf0089e78b2149ca602fdXXXXXXXXXXXXX

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

user=kurento:a_new_password

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

Сайт компани:

realm=example.com

…было company.org сделаем example.com.

Хранение логов:

log-file=/var/log/coturn/turnserver.log.

Я оставил по умолчанию.

Сохраняем файл конфигурации и выходим из текстового редактора.

Включаем службу Turn сервера и добавляем её в автозапуск:

# systemctl start coturn.service

# systemctl enable coturn.service

Проверить старт и работу службы можно этой командой:

# systemctl status coturn.service

14.3. Комбинирование OpenMeetings с Kurento-Media-Server.

Отредактируем файл конфигурации:

# mcedit /etc/default/kurento-media-server

Можете использовать своего пользователя, но у нас в примере будет этот:

DAEMON_USER="kurento"

Сохраняем файл конфигурации и выходим из текстового редактора.

Теперь модифицируем файл конфигурации applicationContext.xml:

# sudo mcedit /opt/open503/webapps/openmeetings/WEB-INF/classes/applicationContext.xml

Ищем строки похожие на эти и модифицируем по смыслу:

<bean id="kurentoHandler"
class="org.apache.openmeetings.core.remote.KurentoHandler"
init-method="init" destroy-method="destroy"
p:kurentoWsUrl="ws://127.0.0.1:8888/kurento"
p:checkTimeout="10000" p:watchThreadCount="10"
p:turnUrl="public IP of your server:3478"
p:turnUser="kurento:a_new_password"
p:turnSecret="751c45cae60a2839711a94c8d6bf0089e78b2149ca602fdXXXXXXXXXXXXX"
p:turnMode="rest"
p:turnTtl="60"
p:objCheckTimeout="200"
p:flowoutTimeout="5" />

Сохраняем файл конфигурации и выходим из текстового редактора.

Если у вас на CentOS 7 еще не было пользователя kurento или того, кого вы указали вместо него, то самое время его создать!

# adduser kurento

Выдадим ему пароль a_new_password, как в файле конфигурации :

# passwd kurento

Мы создали пользователя с возможностью использовать консоль CentOS 7. Данную способность у пользователя нужно забрать в зависимости от вашей ситуации и кто работает на сервере, так как если мы передадим учетку посторонним людям на администрирование сервера, то у нас будет серьезная бреш в безопасности сервера CentOS 7.

Если вам потребуется отключить такую возможность у учетной записи, то вот вам решение!

Зайдем в системный файл, где хранятся все записи о пользователях:

# mcedit /etc/passwd

Найдем строку про нашего kurento:

kurento:x:1001:1001::/home/kurento:/bin/bash

Заменяем ее на эту строку по смыслу синтаксиса:

kurento:x:1001:1001::/home/kurento:/sbin/nologin

Таким образом, если kurento соберется воспользоваться консолью, то сервер CentOS 7 ему это сделать не даст!

Позволим пользователю kurento хозяйничать в каталоге с OpenMeetings:

# sudo chown -R kurento /opt/open503

И все, теперь всё что нам нужно сделать — это изменить сценарий запуска Tomcat-OpenMeetings так, чтобы это был пользователь kurento кто его запускает.

Чтобы это сделать, модифицируем скрипт, который мы устанавливали во время настройки OpenMeeting 5.0.0-M3 по этой инструкции выше:

# sudo mcedit /etc/init.d/tomcat3

И изменим строку:

$CATALINA_HOME/bin/startup.sh -u nobody -Dcatalina.base$CATALINA_BASE

По смыслу:

$CATALINA_HOME/bin/startup.sh -u kurento -Dcatalina.base$CATALINA_BASE

Сохраняем файл конфигурации и выходим из текстового редактора.

15. Открытие портов.

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

  • 80 TCP IN
  • 443 TCP IN
  • 3478 TCP-UDP IN
  • 8888 TCP IN
  • 49152:65535 UDP IN-OUT

Внимание! Бывает, что iptables неправильно встраивает цепочки, лучше это все внести руками в файл конфигурации iptables!

Вот набор команд для iptables:

# sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# sudo iptables -A INPUT -p tcp -m tcp --dport 3478 -j ACCEPT
# sudo iptables -A INPUT -p udp -m udp --dport 3478 -j ACCEPT
# sudo iptables -A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
# sudo iptables -A INPUT -p udp --match multiport --dports 49152:65535 -j ACCEPT
# sudo iptables -A OUTPUT -p udp --match multiport --dports 49152:65535 -j ACCEPT

После этого нужно сохранить настройки iptables:

# sudo service iptables save

и перезапустить iptables:

# sudo service iptables restart

Теперь перезагрузите сервер OpenMeetings и запустите все требуемые для работы фоновые службы.

На этом мы заканчиваем!

Открываем файл конфигурации iptables текстовым редактором:

# mcedit /etc/sysconfig/iptables

Видим, что iptables принял наши команды.

Чтобы iptables это учел в работе, нужно его перезапустить:

# systemctl restart iptables

Если после этой команды вышла ошибка:

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

16. Скрипт автозапуска OpenMeetings.

После перезагрузки сервера CentOS 7, необходимо запускать вручную следующие компоненты:

Kurento-Media-Server, имя которого в Docker системе у нас ‘kms‘:

# sudo docker start kms

Скрипт Tomcat-OpenMeetings:

# sudo /etc/init.d/tomcat3 start

Служба Docker, MariaDB, Turn сервер у нас стартуют автоматически в виде отдельных служб.

Можно вручную, но можно и создать скрипты автозапуска, которые стартуют нам OpenMeetings сразу после загрузки сервера CentOS 7.

Создадим файл startopenmeetings.sh — скрипт запуска сервера OpenMeetings и поместим его в каталог с файлами системы видеоконференций /opt/open503.

Создадим:

# mcedit /opt/open503/startopenmeetings.sh

Поместим в него строки:

#!/bin/bash
echo "Внимание! Вы активировали запуск сервера видеоконференций OpenMeetings."
echo "Внимание! Вы активировали запуск Kurento-Media-Server."
sudo docker start kms
echo "Внимание! Вы активировали запуск Tomcat-OpenMeetings."
sudo /etc/init.d/tomcat3 start
echo "Акация сервера видеоконференций OpenMeetings закончена. Сервер запущен!"

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

Чтобы в будущем сервер мог пользоваться данным файлом из cron программы в определенное время от имени пользователя, который у вас, но в примере делаю под root, добавим права на данный файл для этого пользователя:

# chown -R root:root /opt/open503/startopenmeetings.sh

# chmod -R 700 /opt/open503/startopenmeetings.sh

Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости. Для этого используется команда chmod +x и имя файла скрипта:

# chmod +x /opt/open503/startopenmeetings.sh

Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ – /usr/local/bin.

# ln -s /opt/open503/startopenmeetings.sh /usr/local/bin/startopenmeetings.sh

Для запуска сервера Minecraft просто введите, из под пользователя, который у вас, но в примере делаю под root, в командной строке:

# startopenmeetings.sh

Очень удобно!

Для реализации автоматического запуска сервера видеоконференций OpenMeetings требуется внести задачу исполнения скрипта startopenmeetings.sh в каталоге /opt/open503/ на исполнение в программу cron на сервере CentOS 7

Проверим, работает ли у нас вообще cron в фоновом режиме?

# ps -ef | grep cron

Ответ должен быть такой:

Открываем файл заданий cron:

# mcedit /etc/crontab

Добавляем строки по смыслу общего синтаксиса в файле, пользователя, если нужно, пишите своего:

# OpenMeetings Server
# Run startopenmeetings.sh after reboot CentOS 7
@reboot root /usr/bin/bash /opt/open503/startopenmeetings.sh > /dev/null 2>&1

Где указаны следующие параметры:

  • @reboot — задание выполняется после загрузки системы CentOS 7;
  • root — пользователь от имени которого будет произведен запуск;
  • /usr/bin/bash — с помощью чего обрабатывать файл;
  • /opt/open503/startopenmeetings.sh — путь до необходимого файла;
  • > /dev/null 2>&1 — смысл вкратце — “весь вывод указанной команды спихнуть в черную дыру!”, это один из способов сделать программу по-настоящему безмолвной.

Проверим стартует ли скрипт startopenmeetings.sh после перезагрузки сервера CentOS 7.

# reboot

После перезагрузки сервера CenOS 7 подождите еще секунд 30, чтобы стартовали Kurento-Media-Server и Tomcat-OpenMeetings и можете пользоваться системой видеоконференций OpenMeetings.

17. Если камера не передает изображение.

17.1. Если камера не передает изображение и вы не видите никого кроме себя, необходимо в брандмауэре добавить в исключения домен и порт. Если стоит Касперский, то он нормально отрабатывает и все пропускает, а вот Avast и встроенный в Windows— тяжко работают, придется повозиться с настройками.

17.2. Если видеоизображение не работает за пределами локальной сети или просто не работает вообще-вообще, то убираем пользователя kurento, или вообще всех пользователей из цепочки, и всю передачу информации между модулями делаем по root пользователю. Удаленный к системе root пользователю отключаем. Знаю, что дырка в безопасности и пароль root пользователя хранится в открытом виде в файлах конфигурации, но если система за NAT и доступ только у нас, то для теста гарантированной работы видеоизображения сойдет! Потом можете вернуть любого пользователя обратно и продолжить форсировать пункт 17.1. Во время настройки системы я сталкивался, с тем, что бывает проброс видеоизображения бывает не работает. Работа всех систем от имени root пользователя решала все проблемы сразу.

18. Оригиналы источников информации.

  1. openmeetings.apache.org «APACHE OpenMeetings».
  2. ru.wikipedia.org «OpenMeetings».
  3. cwiki.apache.org «Tutorials for installing OpenMeetings and Tools».
  4. vultr.com «How to Install OpenMeetings on Ubuntu 16.04».
  5. habr.com «Установка openmeetings 5.0.0-M1. WEB-конференции без Flash».
  6. community.spiceworks.com «Ubuntu 14.x — How to open ports properly?».

Читайте также: