OpenmeetingsインストールからProxy設定(3.0.5~3.2.1近辺)

ダウンロードして red5.sh を起動するだけで使える強力なWeb会議システム。今まで3.05とかを使っていたのだが、4.0.1が出たようなのでバージョンアップして使いたい。

まずは、まっさらさらなシステムを作ってみて、本番環境の移行を考える。




当初、もっと簡単に移行できるものと思っていたのだが、大きな課題にぶち当たった。これは、Google ChromeはSSLなしの通信(HTTP)では、マイクとカメラを使わせないように仕様変更したことによる。ChromeでOpenmeetingsを利用するためにはSSL通信(HTTPS)が必要になるのだ。
※安全性のためにサービス提供側にプレッシャーを掛けているという記事を見かけた。シェアが大きいからできることなんでしょう…。

また、Openmeetingsもバージョンアップして変わってきている。これにも対応する必要がある。

さらに、利用できるポートを80と443に絞る、つまり、RTMPとRTMPSはトンネリングさせたい。これは、利用可能ポートを制限されたネットワークで利用することを想定しているため。

これらの条件をあわせて試してみると…

  • Version 3.0.5~3.2.1近辺は、ApacheのProxy設定でSSL通信ができる。
  • Version 3.3.0以降はCSRF対応でApacheのProxy設定だけではSSL通信ができない。OpenmeetingsをSSLで動作させる必要があり、これに伴って画面共有を利用するクライアントはJavaのキーストアにCA証明書の登録が必要。

といった具合になる。

Version 3.3.0以降でもApacheに詳しい人ならApache設定だけでどうにかできるかもしれない。探してもどうにも見つからなかったので、分かる方がいたらぜひ教えてください、お願いします。

これらをチクチク書いていたら記事が長くなりすぎてしまい制限が…。4部作とする。
OpenmeetingsインストールからProxy設定(3.0.5~3.2.1近辺)
OpenmeetingsをSSLで動作させる設定(3.3.0以降)
OpenmeetingsをそれでもProxyで動作させる(危険)
Openmeetingsのアップグレード & ChromiumとFlash

※この記事では、各種のライブラリの準備には触れない。


■インストール開始

インストールは4.0.1ベースで記載するが、3.0.5から4.0.1まで設定項目はほとんど変わらない。
モジュールをダウンロードし、/usr/share/openmeetings (以降 $red5 と記載)に展開して起動、

$ sudo ./red5.sh
・
・
・
        ################################################################################
        #                              Openmeetings is up                              #
        #                      4.0.1 3795f14 2017-12-05T16:44:03Z                      #
        #                               and ready to use                               #
        ################################################################################
・
・
・

が表示されたら、http://hogeserver.hogeddns.jp:5080/openmeetings にアクセスするとセットアップが始まる。

※接続可能なポートが絞られていて、外部から5080ポートでアクセスできない場合には、事前にApacheでProxy設定しておく必要がある。

インストール先はどこでもかまわないが、他のシステムに習って/usr/share配下にしてみた。


■Openmeetings (はじめに的な画面)

Enabling import of PDFs into whiteboard

Install GhostScript on the server, you can get more information on http://pages.cs.wisc.edu/~ghost/ regarding installation. The instructions for installation can be found there, however on most linux systems you can get it via your favorite package managers (apt-get it).

と表示された。今は考えない。次へ。

■DB configuration

ここで、現行システムに入っている MySQL を選択しCheckボタンを押したところ、以下が表示された。

Unable to load proper DB driver, please download appropriate jar file, and restart the OM. Instructions: MySQL

で、MySQLのところにリンクがあって、ここをクリックすると情報が。

  • MySQLのデフォルトキャラクターセットがUTF8であることを確認しておくこと。
  • MySQLがListen状態にあること。
  • Openmeetingsが利用する空のデータベースを作成しておくこと(中身はインストール時に作られる)。
  • もし、問題が発生したらデータベースを空にしてインストールを再実行して欲しいこと。
  • JConnectorをココから落としてきて、
    $red5/webapps/openmeetings/WEB-INF/lib/
    に入れた上で、もう一度インストールを実行してみて欲しいこと。

という話。

一旦、red5.shを止めてコネクタをダウンロードし、そのコネクターを配置して、再度red5.shを実行、ブラウザからアクセスする。

そして、MySQLにデータベースとユーザーを作る。

$ mysql -u root -p
Enter password:[MySQLのrootのパスワード][Enter]

mysql> create database openmeetings default character set 'utf8';
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on openmeetings.* to 'openmeetings'@'localhost' identified by 'openmeetingsユーザーのパスワード' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> quit
Bye

という具合。

改めて以下の設定。

  • Choose DB type → MySQL
  • Specify DB host → localhost
  • Specify DB Port → 3306
  • Specify the name of the database → openmeetings
  • Specify DB user → openmeetings
  • Specify DB password → openmeetingsユーザーのパスワード

Checkボタンを押してOK!

ちなみに、データベースを初期化してまっさらにするには以下を実行。

$ mysql -u root -p
mysql> drop database openmeetings;
mysql> create database openmeetings default character set 'utf8';

データベースを削除して作り直しているだけですが…。


■Userdata

最初のユーザーを決める。

  • Username → hogeuser
  • Userpass → hogeuserのパスワード
  • EMail → hogeuserのメールアドレス
  • User Time Zone → Japan

■Group(Domains)

Openmeetings内のグループ分けに使う。後から変えられるのでなんでもいい。

  • Name → Family

■Configuration

基本的な動作設定。

  • Allow self-registering → ユーザーは管理者が登録するのでOFF
  • Send Email to new register Users → これも同様でOFF
  • New Users need to verify their EMail → ココまでOFFなので不要、OFF
  • Default DB objects of all types will be created → そうしてもらうON
  • Mail-Refer → webmaster@hogeserver.hogeddns.jp
  • SMTP-Server → hogeserver.hogeddns.jp
  • SMTP-Port → 25
  • SMTP-Username → hogeuser
  • SMTP-Userpass → SMTP上のhogeuserのパスワード
  • Enable TLS in Mail Server Auth → OFF
  • Set inviter’s email address as ReplyTo in email invitations → ON
  • Default Language → 日本語

SMTP設定は結構重要。メールを飛ばして会議に参加してもらうことも多いので、ちゃんとメールが飛ばせるようにすることはとっても大事。


■Converters

これが冒頭の「難しいことを考えなければ」の話で、ちゃんと揃えようと思うと結構大変な気がする。とりあえず、後からでも設定が可能なはずなので何も設定せずに進めておく。

今回は、既にこれらの設定が終わっているシステムでOpenmeetingsをバージョンアップさせたいのだ!

  • Document conversion DPI → 150(画面で見る分には問題ないかな)
  • Document conversion JPEG Quality → 90(これもこんなもんかなと)
  • ImageMagic Path → 空欄
  • FFMPEG Path → 空欄
  • SoX Path → 空欄
  • OpenOffice/LibreOffice Path for jodconverter → 空欄

■Crypt Type

よくわからない。デフォルトのまま。

■red5SIP Configuration

今のところSIPを利用する予定はないので、OFF。


最後に「Finish」ボタンを押したら、インストール開始。と書かれているので、ボタンをクリックする。
モノの数秒で設定完了。

Enter the Application からアプリケーションにログインする。

ログインしたら英語表示になるのは相変わらず変わらない。初期ユーザーの言語にデフォルトランゲージが反映されないのはそのままの模様。


ところで、会社ネットワークでポートが塞がれている場合に、5080ポートを80や443に変更したい、というニーズがあるかもしれない。実際、自分がそうだったりするわけだが、その場合は以下のApache設定とOpenmeetingsの設定で行けそう。443も3.3.0以前の古いバージョンなら行ける。

■Openmeetings 3.0.5~3.1.5 近辺

Apache: openmeetings.conf
#
# Apache Openmeetings
#

<VirtualHost *:80>

        ServerName om.hogeserver.hogeddns.jp
        ServerAdmin webmaster@hogeserver.hogeddns.jp

        ProxyPreserveHost on
        ProxyPass        / http://hogeserver.hogeddns.jp:5080/
        ProxyPassReverse / http://hogeserver.hogeddns.jp:5080/

        ErrorLog  ${APACHE_LOG_DIR}/openmeetings-error.log
        CustomLog ${APACHE_LOG_DIR}/openmeetings-access.log combined

</VirtualHost>

<VirtualHost *:443>

        ServerName om.hogeserver.hogeddns.jp
        ServerAdmin webmaster@hogeserver.hogeddns.jp

        ProxyPreserveHost on
        ProxyPass        / http://hogeserver.hogeddns.jp:5080/
        ProxyPassReverse / http://hogeserver.hogeddns.jp:5080/

        ErrorLog  ${APACHE_LOG_DIR}/openmeetings-ssl-error.log
        CustomLog ${APACHE_LOG_DIR}/openmeetings-ssl-access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/ssl/private/om.hogeserver.crt
        SSLCertificateKeyFile /etc/ssl/private/om.hogeserver.key

</VirtualHost>

※この設定の場合、omが名前解決できるようにDNSへの登録が必要になるので注意。従来のサービスの中に/openmeetingsの場合だけProxyする設定でも行けるはず。

$red5/webapps/openmeetings/public/config.xml
<!-- この設定をしないと1935を3回トライしてからトンネルにトライする
<rtmpport>1935</rtmpport> ←コメント化
-->
<rtmpport>80</rtmpport></pre> ←追加
・
<!-- トンネルする際に利用するポートを設定しているらしい
<red5httpport>5080</red5httpport> ←コメント化
-->
<red5httpport>80</red5httpport> ←追加

※Ver3.0.5で$red5/conf/red5.propertiesを色々といじってみたけど効果なし。また、トンネルさせるとタイムラグが出やすいような気がする…。

■Openmeetings 3.2.1近辺

このあたりで、ログイン直後にWebSocketでエラーが起きて画面が表示されないようになってきた模様。
以下でproxy_wstunnelとproxy_httpを有効化しておく必要がある。

$ sudo a2enmod proxy_wstunnel
$ sudo a2enmod proxy_http
$ sudo service apache2 restart

その上で、設定を以下のように変える。

Apache: openmeetings.conf
#
# Apache Openmeetings
#

<VirtualHost *:80>
        ServerName om.hogeserver.hogeddns.jp
        ServerAdmin webmaster@hogeserver.hogeddns.jp

        ProxyPreserveHost on
#       ProxyPass        / http://hogeserver.hogeddns.jp:5080/
        RewriteEngine on
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*)           ws://hogeserver.hogeddns.jp:5080/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule /(.*)           http://hogeserver.hogeddns.jp:5080/$1 [P,L]
        ProxyPassReverse / http://hogeserver.hogeddns.jp:5080/
        ProxyPassReverse /openmeetings/wicket/ ws://hogeserver.hogeddns.jp:5080/openmeetings/wicket/  ★2018/02/04追記

        ErrorLog  ${APACHE_LOG_DIR}/openmeetings-error.log
        CustomLog ${APACHE_LOG_DIR}/openmeetings-access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerName om.hogeserver.hogeddns.jp
        ServerAdmin webmaster@hogeserver.hogeddns.jp

        ProxyPreserveHost on
#       ProxyPass        / http://hogeserver.hogeddns.jp:5080/
        RewriteEngine on
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*)           ws://hogeserver.hogeddns.jp:5080/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule /(.*)           http://hogeserver.hogeddns.jp:5080/$1 [P,L]
        ProxyPassReverse / http://hogeserver.hogeddns.jp:5080/
        ProxyPassReverse /openmeetings/wicket/ ws://hogeserver.hogeddns.jp:5080/openmeetings/wicket/  ★2018/02/04追記

        Header edit Content-Security-Policy ws: wss:  ★2018/02/04追記

        ErrorLog  ${APACHE_LOG_DIR}/openmeetings-error.log
        CustomLog ${APACHE_LOG_DIR}/openmeetings-access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/ssl/private/om-hogeserver.crt
        SSLCertificateKeyFile /etc/ssl/private/om-hogeserver.key
</VirtualHost>

$red5/webapps/openmeetings/public/config.xml
<!-- <rtmpport>1935</rtmpport> --> ←コメント化
<rtmpport>80</rtmpport></pre> ←追加
・
<!-- <red5httpport>5080</red5httpport> --> ←コメント化
<red5httpport>80</red5httpport> ←追加

ここら辺まではなんとかProxyだけで動作させることができそうな気配。
3.3.2でも80番ポートでならば動いてくれた。


2018/06/02 追記
利用できるポートが制限されている中で画面共有にトライしたところエラー。

条件

Openmeetings 5080 & 1935ポートで動作。
Apache 80 & 443ポート から 5080ポートへProxy動作。

接続元ネットワークは 80 & 443ポートしか空いていない。

443ポートはオレオレ ルート認証局によって署名されたオレオレ サーバー証明書を利用している。

この場合、80ポートからのアクセスではRTMP失敗→RTMPTでの共有動作となったが、443ポートからは共有動作ができなかった。

このとき、画面共有時にダウンロードされるファイル「public_##.jnlp」の中身をちょっと書き換えてあげたら動作してくれた。

<argument>rtmp://hogeserver.hogeddns.jp:1935/openmeetings/##</argument>
<argument>rtmpt://hogeserver.hogeddns.jp:443/openmeetings/7</argument>

この443を80に書き換え。

Javaのキーリングにオレオレ ルート認証局の証明書を信用させることで443ポートでも動きそう。これは、次の記事でやり方を書いていたはず。


一度使い始めると本当に便利で手放せないツールになる。
調子に乗って高解像度なビデオ・画面共有をしなければ、帯域も殆ど使わないから、他に迷惑をかけることも殆どない。

2020年末にはFlashのサポートが停止される。
それまでに別の何かに置き換えられるのだろうか。
楽しみにしつつその動向を追いかけていこうと思う。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です