先日JitsiというWeb会議システムをインストールしてみたのは、インストールが簡単そうで使いやすそうだったから。元々はOpenmeetingsを使っていたが、Flashが使われていたり、画面共有のためにJava8が必要でライセンス的に色々と心配になったために乗り換えを考えていたのだ。
ただ、OpenmeetingsもHTML5とかWebRTCに対応するとか書かれていたので期待していて、これはこれで環境構築を考えてみたかった。
Ubuntu18.04にインストールしてみようと思う。
手順書は Tutorials for installing OpenMeetings and Tools にあるものを使わせていただいた。
$ sudo apt update; sudo apt -y dist-upgrade
OpenJDKインストール
$ sudo apt install openjdk-8-jdk openjdk-8-jdk-headless
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
LibreOfficeのインストール
$ sudo apt install libreoffice
ImageMagickのインストール
$ sudo apt install imagemagick libjpeg62 zlib1g-dev
ここでファイル編集。
/etc/ImageMagick-6/policy.xml
・
・
・
<!-- disable ghostscript format types -->
<!-- <policy domain="coder" rights="none" pattern="PS" /> --> ← コメントアウト
<policy domain="coder" rights="none" pattern="EPI" />
<policy domain="coder" rights="none" pattern="PDF" />
<!-- <policy domain="coder" rights="none" pattern="XPS" /> --> ← コメントアウト
・
続いて…
Soxインストール
$ sudo apt install sox
FFmpegインストール(手順書はコンパイルしている、手抜き。ちゃんと動かないかも)
$ sudo apt install ffmpeg
MariaDBインストール(多分、MySQLでも可)
$ sudo apt install mariadb-server
$ sudo mysqladmin -u root password rootのパスワード
$ sudo mysql -u root -p
Enter password: rootのパスワードを入力してEnter
MariaDB [(none)]> create database openmeetings default character set 'utf8';
MariaDB [(none)]> grant all privileges on openmeetings.* to 'openmeetings'@'localhost' identified by 'パスワード' with grant option;
MariaDB [(none)]> quit
Bye
※データベースはopenmeetings、ユーザーもopenmeetingsで作成。
Kurento Media Serverインストール(WebRTCサーバー)
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
$ sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF
> # Kurento Media Server - Release packages
> deb [arch=amd64] http://ubuntu.openvidu.io/6.10.0 bionic kms6
> ここで[Ctrl]+[D]
> -bash: warning: here-document at line 26 delimited by end-of-file (wanted `EOF')
$ sudo apt update
$ sudo apt install kurento-media-server
$ sudo systemctl start kurento-media-server
Openmeetingsを動かすユーザー(omuser)を追加する
$ sudo useradd --system --user-group omuser
ここまでインストールしたら、モジュールをダウンロードして溶かす。
インストール先はいつもの /usr/share/openmeetings とする。
で、作ったomuserの持ち物にする。
$ sudo chown -R omuser:omuser /usr/share/openmeetings
MySQLコネクターを利用するので、以下からダウンロードする。
MySQL / Download Connector/J
debパッケージになっているみたいだけど、Jarファイルがあればいいと思うので、Platform Independent を選択し、zipファイルをダウンロードする。
この日のバージョンは mysql-connector-java-8.0.16.jar (違っていても構わない)、/usr/share/openmeetings/webapps/openmeetings/WEB-INF/lib/ にコピーする。
起動用のスクリプト。手順書にあったものを少しだけ書き換えた。
/etc/init.d/openmetings
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: Openmeetings
# Required-Start: mysql apache2 kurento-media-server
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Apache Openmeetings Service
# Description: Openmeetings provides video conferencing, instant messaging,
# white board, collaborative document editing and other groupware
# tools using API functions of the Red5 Streaming Server for
# Remoting and Streaming.
### END INIT INFO
# set the environment
# JAVA_OPTS=""
# CATALINA_OPTS=""
CATALINA_HOME=/usr/share/openmeetings
RUN_USER=omuser
# set TIME OUT values
# TIMELIMIT=10
# SLEEPTIME=40
# Function to wait until all Tomcat processes are killed
waitForTomcatToDie()
{
PROCESSES=`ps auxwww | grep $HOME | grep 'java' | grep 'tomcat' | grep -v 'grep'`
while [ ! -z "$PROCESSES" ] && [ $SECONDS -lt $TIMELIMIT ] && [ $TIMELIMIT -ne 0 ]; do
echo -n "."
sleep $SLEEPTIME
PROCESSES=`ps auxwww | grep $USER | grep 'java' | grep 'tomcat' | grep -v 'grep'`
done
echo ""
if [ ! -z "$PROCESSES" ]; then
PROCESS_ID=`echo $PROCESSES | awk '{ print $2 }'`
echo "Killing process: $PROCESS_ID"
kill -9 $PROCESS_ID
fi
}
# See how we were called.
case "$1" in
start)
$CATALINA_HOME/bin/startup.sh -u $RUN_USER -Dcatalina.base$CATALINA_BASE
;;
# debug)
# DEBUG_PORT=10001
## export JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address{DEBUG_PORT},server=y,suspend=n"
# $CATALINA_HOME/bin/startup.sh -Dcatalina.base{CATALINA_BASE}
# ;;
stop)
# $CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/shutdown.sh
waitForTomcatToDie
echo "...Tomcat stopped."
;;
restart)
$0 stop
echo "...Restarting..."
sleep 8
$0 start
;;
status)
status $PROG -p $PIDFILE
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
RETVAL=1
esac
exit $RETVAL
起動用のスクリプトを有効化する。
$ sudo chown -R omuser:omuser /usr/share/openmeetings
$ sudo systemctl daemon-reload
$ sudo systemctl enable openmeetings
openmeetings.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable openmeetings
※怒られた^^; 本当のやり方はこれじゃないんだろうなぁ…
$ sudo /lib/systemd/systemd-sysv-install enable openmeetings
$ sudo systemctl start openmeetings
多分、これで起動しているだろうから、Openmeetingsにアクセスする。
http://[openmeetingsserver].hogeserver.hogeddns.jp:5080
※IPアドレスでもかまわない。
インストール画面にリダイレクトされる。
- 最初の画面
ホワイトボードへのPDFのインポートを有効化する為に、GhostScriptをインストールするように書かれている。
次へ… - データベース構成
MySQLを選択し、ユーサーとしてopenmeetings、パスワードを入力し、接続試験ボタンをクリックする。接続試験に成功すれば先に進める。
次へ… - ユーザー・データー
最初のユーザーと、ユーザーが所属するグループを決める。
タイムゾーンは Asia/Tokyo とする。
次へ… - 構成
自己登録はクローズドな環境であれば許可して良いと思うが、インターネットに向けて公開するなら拒否した方がいいと思う。
管理者のメールアドレス等の設定をする。
次へ… - 文書変換
これは何も指定しなくてもパスが通っていそう。
次へ… - 暗号タイプ・red5SIP 構成
何も指定しなくてもとりあえずはいいと思う。
次へ… - インストールボタンをクリックする。
インストールが終了すると、念のために再起動しろと言われる。
Openmeetingsを再起動。
$ sudo systemctl restart openmeetings
改めてアクセスして、ログインしてみる。
http://[openmeetingsserver].hogeserver.hogeddns.jp:5080
日本語…って指定しているつもりだけど、日本語にはならなかった。
Administration → Configuration の 15番のDefault lang ID に 15 を設定し、これから作られるユーザーのデフォルト言語を日本語にできそう。
自分ユーザーは、プロフィールで日本語を選べば日本語で利用できる。
例によってApacheを使ってSSLをかぶせてみる。
まずは、Apacheをインストールして必要なモジュールを有効化する。
$ sudo apt install apache2
$ sudo a2enmod proxy proxy_http proxy_wstunnel rewrite headers ssl
5443へのProxyの設定を書いてみる。
/etc/apache2/sites-available/openmeetings.conf
<VirtualHost *:443>
ServerName temp.hogeserver.hogeddns.jp
ServerAdmin webmaster@hogeserver.hogeddns.jp
ProxyPreserveHost on
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) wss://127.0.0.1:5443/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) https://127.0.0.1:5443/$1 [P,L]
SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPassReverse / https://127.0.0.1:5443/
ProxyPassReverse /openmeetings/wicket/ wss://127.0.0.1:5443/openmeetings/wicket/
ErrorLog ${APACHE_LOG_DIR}/openmeetings-error.log
CustomLog ${APACHE_LOG_DIR}/openmeetings-access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/private/temp.crt
SSLCertificateKeyFile /etc/ssl/private/temp.key
</VirtualHost>
HTTPはもう使わないだろうということで、80番のサービスをやめて Openmeetings の Proxy 設定を有効化させる。この時、モジュールも有効化しているので Apache は再起動する。
$ sudo a2dissite 000-default.conf
$ sudo a2ensite openmeetings.conf
$ sudo systemctl restart apache2
以前、この転送は例によってCSRF対策で引っかかるので、ソースを改変してアクセス可能にしていたが、443への転送は問題なく処理できた。俺の過去記事…とほほ、あのときにSSLProxyCheckPeerCNとかを知っていたらソースコンパイルとかいらなかったのかなぁ。
この間 Jitsi を試してこれでいいや!と思ったりもしたが、Openmeetingsはホワイトボード機能がいいよねー。画面共有は Jitsi と同じような選択画面になっていた。高機能な分、セットアップが大変だけど、セットアップが終わっちゃえば便利でしょう。
ただ、いつものパターンとしてファーストバージョンはバグが多い。今回、設定の問題なのかバグなのかはわからなかったけど、ビデオ・音声のテストができなかったり、画面共有時にFPSを選択できるのは良かったんだけど、一度決めたFPSを変更できなくなるのはおかしな感じ。他の機能は試せてないし、セッション管理に問題がないかどうかといった実用上のポイントは使ってみないとなんとも。
もう少し待って、安定版が出てからバージョンアップするのもいいかも。