Ubuntu

Ubuntu18.04 まっさらな環境にOpenMeetings5.0.0-M4をインストール

少し古い記事に結構な数のアクセスをいただいているので、最新の5.0.0-M4(2020/4/23リリース)で環境構築する記事を書いてみることにした。上手く動かないって記事も見かけたので…。



広告


目指すのはフル機能の実装。実際、ちゃんと環境ができて、ホワイトボードが使えるので、Jitsiより会議に向いていると思う。ユーザーのソフトウェアへの理解も必要だけど。

いつも通り、ここにあるチュートリアルに沿って実施。ただし、幾つかオリジナリティを出している。
Confluence / Tutorials for installing OpenMeetings and Tools

やること。

 

インストール

既にある環境に加えることもできるが、まっさらなOSを準備してアップデートした。

$ sudo apt update; sudo apt -y dist-upgrade; sudo apt -y autoremove
$ sudo reboot

 

各種ライブラリのインストール

再起動後にインストール開始。

# OpenJava11のインストール
$ sudo apt install openjdk-11-jdk openjdk-11-jdk-headless
$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)

# 他のバージョンのOpenJavaが入っているなら11を選択
# 入っていないなら不要
$ sudo update-alternatives --config java

# LibreOfficeのインストール
#参照元は最新版をインストールしているが、ここではUbuntu標準のものをインストール
$ sudo apt install libreoffice

# ImageMagic,sox,ffmpegと関連ライブラリのインストール
$ sudo apt install -y imagemagick libjpeg62 zlib1g-dev sox ffmpeg vlc

ここで設定ファイルを1つ変更。
/etc/ImageMagick-6/policy.xml

…
    <!-- disable ghostscript format types -->
    <!-- <policy domain="coder" rights="none" pattern="PS" /> -->
    <policy domain="coder" rights="none" pattern="PS2" />
    <policy domain="coder" rights="none" pattern="PS3" />
    <policy domain="coder" rights="none" pattern="EPS" />
    <!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
    <policy domain="coder" rights="none" pattern="XPS" />
</policymap>

※2行をコメント化

MariaDBのインストールと設定

MariaDBにユーザーとデータベースを作る。

# MariaDBのインストール(MySQLでも大丈夫だと思う)
$ sudo apt install mariadb-server
$ sudo mysql

MariaDB [(none)]> create database openmeetings default character set 'utf8';

MariaDB [(none)]> grant all privileges on openmeetings.* to 'openmeetings'@'localhost' identified by 'om_password' with grant option;

MariaDB [(none)]> quit

※データベース openmeetings、ユーザー openmeetings(これが同じなのはわかりにくいかもしれないけど、運用をはじめると楽)、パスワードはom_passwordにしてある。

Kurento Media Serverのインストールと設定

カメラ、マイク、録画、画面共有に必要なライブラリ。
リポジトリのキーをインストールする。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83

リポジトリのソースファイルを新規作成。
/etc/apt/sources.list.d/kurento-dev.list

deb [arch=amd64] http://ubuntu.openvidu.io/6.13.0 bionic kms6
deb [arch=amd64] http://mirror.yandex.ru/ubuntu/ bionic main restricted
deb [arch=amd64] http://mirror.yandex.ru/ubuntu/ bionic universe

Kurento Media Serverのインストール。

$ sudo apt update
$ sudo apt install -y kurento-media-server

設定ファイルを変更。
/etc/default/kurento-media-server

…
# Service script settings
# =======================

START_DAEMON="true"    # If not "true", the daemon will refuse to load
DAEMON_ARGS=""         # Passed directly to the kurento-media-server executable
#DAEMON_USER="kurento"  # User as whom Kurento Media Server will run
DAEMON_USER="nobody"
DAEMON_LOG_DIR="/var/log/kurento-media-server"  # Where to store daemon logs

サービス開始。ついでに、再起動後にも起動するように有効化。

$ sudo systemctl start kurento-media-server
$ sudo /lib/systemd/systemd-sysv-install enable kurento-media-server

 

OpenMeetingsのインストール

ダウンロードページはココ、今回は5.0.0-M4をダウンロードしてくる。
Apache OpenMeetings / Downloads

$ wget https://downloads.apache.org/openmeetings/5.0.0-M4/bin/apache-openmeetings-5.0.0-M4.tar.gz

展開して配置。配置場所は/opt/open504ではなく/usr/share/openmeetingsにする。

$ tar xzvf apache-openmeetings-5.0.0-M4.tar.gz
$ mv apache-openmeetings-5.0.0-M4 openmeetings
$ mkdir -p openmeetings/webapps/openmeetings/data/streams/{1,2,3,4,5,6,7,8,9,10,11,12,13,14}
$ mkdir -p openmeetings/webapps/openmeetings/data/streams/hibernate
$ sudo chmod -R 750 openmeetings/webapps/openmeetings/data/streams
$ sudo chown -R nobody:root openmeetings/
$ sudo mv openmeetings/ /usr/share/

mysql-connectorをダウンロードして配置。
ORACLE / JDBC Driver for MySQL(Connector/J)

$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.20.tar.gz
$ sudo chown nobody:root mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar
$ sudo mv mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar /usr/share/openmeetings/webapps/openmeetings/WEB-INF/lib/

※参照元は8.0.19をダウンロードしようとしていたが、今日は8.0.20になっていてそのままではダウンロードできなかった。この後、バージョンが変わったら変わっていくだろうから適宜修正が必要になると思われる。

OpenMeetingsの自動起動スクリプトを作成

自動起動スクリプトが提供されるようになった(tomcat3という名前でダウンロードできた)。

だけど、前回と同じく幾つかの手直しをする。2020/05/22 ファイル名修正
/etc/init.d/openmeetings

#!/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=nobody

# 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 chmod 755 /etc/init.d/openmeetings
$ sudo systemctl daemon-reload
$ sudo /lib/systemd/systemd-sysv-install enable openmeetings
$ sudo systemctl start openmeetings

※openmeetingsの起動には少し時間が掛かる。

ココまでの作業でOpenMeetingsのWeb UIが起動するようになった。

OpenMeetingsのWeb UIによる初期設定

ここまで来たところで、ブラウザでアクセスしてみる。
https://temp.hogeserver.hogeddns.jp:5443

ウチの環境では上記のようなURLでアクセスできるけれども、IPアドレスでアクセスする場合もあるかもしれない。
Ubuntu Desktopをインストールしているなら、デスクトップから以下のURLでアクセスできる。
https://localhost:5443

アクセスすると次の画面が表示される。[NEXT >]をクリック。

データベースユーザーとパスワードを入力し、[接続試験]をクリック。
問題なければ[NEXT >]をクリック。

最初のユーザーの情報を入力し、[NEXT >]をクリック。
パスワードには大文字、小文字、数字、記号(!@#$%^&*][)を含める必要があるらしく、名前と一緒だと駄目など結構厳しい制約がある。

自己登録を拒否し、管理者だけがユーザーを登録できるようにしている。

このシステムはメールを送信することがあるので、使えるメールサーバーを入れておくと便利。ウチはメールサーバーを立てていて、LAN内からならば認証がいらないので設定項目が少ない。一方、プロバイダーのサービスを利用しているような場合は、そのプロバイダーが要求する認証情報をここに入れておくと良い(管理用のメールアカウントなど)。

構成を決めたら[NEXT >]をクリック。

ライブラリが使えるかどうかの確認。パスは通っているはずなので、空っぽのままでOKのはず。
心配なので[接続試験]のボタンを全部クリックしてOKであることを確認したら、[NEXT >]をクリック。

暗号タイプはこのままで多分問題なし。
SIPは使わないのでこのままでOK。[NEXT >]をクリック。

最後、インストールボタンと書かれているけれど、[FINISH]をクリック。

数秒でインストール処理が完了する。

FINISHボタンは反応しないので、もう一度URLを入力してアクセスする。
ウチの場合は https://temp.hogeserver.hogeddns.jp:5443 で、アクセスするとログイン画面が出てくる。

最初のユーザーの情報を入力してログインする。

これで初期設定は完了。

その他の設定

自分で用意した証明書で通信する

サービスを公開しようとしたとき、いつもエラー表示からスタートするのは格好が悪い。

SSLはOpenMeetingsで設定することもできるし、ApacheにProxyさせて設定することもできる。

ウチには「自己署名」だけれども、キーと証明書がある。これを使ってPKCS12ファイルを作成してみる。

ここではCA証明書をPKCSに入れているけれど、その先の動作を見ると必要なさそうな気がする。
ドメイン管理されている環境なら、ドメインコントローラーに署名してもらった証明書とキー、Let's Encryptを使う場合はfullchain.pemとprivkey.pemだけで進めてもいけるんじゃないだろうか(やってみてないからよく分からないけど…)。

  • root.crt (自己CA証明書)
  • temp.crt(サーバー証明書)
  • temp.key(サーバーキー)
$ openssl pkcs12 -export -in temp.crt -inkey temp.key -certfile root.crt -out temp.p12
Enter Export Password: openmeetings[Enter]
Verifying - Enter Export Password: openmeetings[Enter]

PKCS12ファイルからキーストア(temp.jks)を作成。

$ keytool -importkeystore -deststorepass openmeetings -destkeypass openmeetings -destkeystore temp.jks -srckeystore temp.p12 -srcstoretype PKCS12 -srcstorepass openmeetings

※キーストアのパスワードは openmeetings にした。

作ったキーストアを配置し、OpenMeetingsから読み取られるように設定する。

sudo cp temp.jks /usr/share/openmeetings/conf

※パーミションを変えてもいいけれど、変えなくても読み込めるので問題なし。

/usr/share/openmeetings/conf/server.xml

…
    <Connector port="5443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/temp.jks"
                         certificateKeystorePassword="openmeetings"
                         certificateKeystoreType="JKS"
                         certificateVerification="false"
…

これでOpenMeetingsを再起動すれば、証明書が反映される。

$ sudo systemctl restart openmeetings

 

転ばぬ先の杖(タイムアウト問題への対応)

過去、会議が始まってから30分間OpenMeetingsの操作をしないままでいると、次に何か操作をしたときに切断される問題があった。

今のバージョンに同じ問題があるのかどうか分からないが、解決策を設定しておいても損はないんじゃないかと思われる。ユーザー数が数百人規模になったら違うかもしれないけど。

/usr/share/openmeetings/webapps/openmeetings/WEB-INF/web.xml

…
                </web-resource-collection>
                <auth-constraint/>
        </security-constraint>
        <!-- タイムアウト設定 ここから 480分=8時間-->
        <session-config>
                <session-timeout>
                        480
                </session-timeout>
        </session-config>
        <!-- タイムアウト設定 ここまで -->
</web-app>

 

サービス公開ポートを変更

サービスを公開するポートは443じゃなきゃだめ、とか、他のサービスと共存させたいという場合には、Apacheを使ってPorxyさせていた。

あと、OpenMeetingsに証明書を覚えさせるのが面倒なら、ここで設定することもできる。

Apacheをインストールして必要なモジュールを有効化する。

$ sudo apt install apache2
$ sudo a2enmod proxy proxy_http proxy_wstunnel rewrite ssl

設定ファイルを新規作成。
/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>

※用意したtemp.crt, temp.keyは所定の場所に配置。

インストール直後に入っている80ポートと443ポートの設定を外し、openmeetingsの設定を投入。

$ sudo a2dissite 000-default.conf
$ sudo a2ensite openmeetings.conf
$ sudo systemctl restart apache2

 

Firewall設定

必要なポートだけを開けておけば、いくらか安全。

$ sudo ufw ssh
$ sudo ufw allow to any port 5443 proto tcp from any ←デフォルトの5443/tcpでサービス公開する場合
$ sudo ufw allow to any port 443 proto tcp from any  ←443/tcpでサービス公開する場合

 

日本語で使いやすく

最初のユーザーでログインし、管理メニューAdministration(管理) → Configuration(グローバル設定) の 15番のDefault lang ID に 15 を設定すれば、これから作られるユーザーのデフォルト言語を日本語にできそう。
自分ユーザーは、プロフィールで日本語を選べば日本語で利用できる

やったこと

OpenMeetingsにアクセスできない

ウチは色々と環境を構築しては作り直し、というのを繰り返していたせいか、Web UIによる初期設定をしようとしても、Chromeがアクセスさせてくれなかった。

危険を承知でアクセスする、という表示もなく、普通にはどうやってもアクセスできない。

自分の構築しているローカルなサーバーなので安全にアクセスができるはず。
まっしろブログ / 「HSTSが使用されているため、現在アクセスできません」の対処方法

Chromeで新しいタブを開き、
chrome://net-internals/#hsts
を入力。Delete domain security policies に当該のサイトを入れる。

Deleteボタンを押した後、当該ページをリロードすれば「安全ではありません」表示が出てきてアクセスができる。

さいごに

このシステムを業務で1年以上使っていたこともあり、懐かしさも感じるし、久しぶりに使ってみたいという気持ちにもなる。サーバーに余裕があればスタンバイさせておくのもあり。

機能が豊富なだけにユーザーを選ぶ側面があって、大人数に公開しようと考えると萎える。だから、ある程度「分かる奴」とだけで使って徐々に広げていくのが良さそうだなって思ったり。

使いやすくする方法もきっとあるだろう。画面の共有サイズのデフォルトが800x600(4:3)ってのは今時っぽくなくて、800x450(16:9)じゃないのかなとか。

このシステムもどんどん進化していくのだろう。楽しみ。

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他

  1. まこゆき より:

    参考にさせていただきました。ローカルVM上で構築して動いてます。
    なお、
    「OpenMeetingsの自動起動スクリプトを作成」
    のとこで
    /etc/init.d/openmetings
    になってますが
    /etc/init.d/openmeetings
    かと思います。
    (まぁどっちでも統一されてればいいんでしょうけれども一応)

    あと今はNginxでのリバースプロキシでDDNSで公開してるURL振り分けてるんですが
    OpenMeetingsのリバースプロキシでの公開がうまくいかず四苦八苦中です。
    オフィシャルやらフォーラムの設定パクって設定してますがログイン画面までは出ますが
    そこからの画面遷移がまともに動かない状況です。。

    • rohhie より:

      コメントありがとうございます。スクリプトのファイル名は修正ました。

      wssに関わるRewriteとProxyPassReverseの設定は、初めて設定した当時(3.xだったと思いますが)のEdgeで正しく動作しなかったときに設定したものをそのまま持ってきちゃってます。Choromeでは動作していたのですが。
      情報を探してもなかなか見つからず、ChromeでF12を押してどんな風に動作しているのか確認し、Edge(どうやったか忘れましたが)で同じ動作をするように試行錯誤しました。確か…あのときは、ログインできて会議室には入れるのだけれども音声が聞こえないとか、映像が送れないとか、そんな問題が発生していました。

      実はプロキシとリバースプロキシの本当の意味というか、運用の仕方ありかたってのを上手く理解できていないところがあるので、上手く動作したときにはそのポイントを是非教えてください。ネットワークの安全性確保で重要なポイントになりますよね。

  2. まこゆき より:

    ご返信ありがとうございます。

    Nginxとの連携部分はとりあえず以下方法でうまくいきました。
    別途まとめて自分のサイトでも掲載しようと思いますが簡単に記載すると

    ・Tomcat側でCSRFとしてBad Requestになっていた
    (内部リクエストはhttpなのに、originはhttps)
    Nginx側に
    proxy_set_header X-Forwarded-Proto https;
    は設定していたが、Tomcat側にも設定が必要だった。

    ・Nginx側の設定
     ⇒Ajaxを有効にする方法と、X-Forwarded-Protoを使うことでOK

    Server設定等は省略してます。
    本設定だけ別Confにするイメージです。

    map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
    }

    server{}省略

    location / {
    proxy_pass http://xxx.xxx.xxx.xxx:5080;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    }

    これと、server.xmlの
    <Host name="localhost" appBase="webapps"

    以下に

    を追加して正常に動作しています。
    StackOverflowの
    https://stackoverflow.com/questions/19916906/nginx-managed-ssl-with-tomcat-7
    が役に立ちました。
    なお、とりあえず動作していますが、各ディレクティブがすべて必要かどうかまではまだ検証していません。

    リバースプロキシの運用に関しては、当方の場合、
    ・インターネット⇒ポート開放済みRT⇒Nginx(リバースプロキシ)⇒複数の公開サーバ
    という構成で、DDNSでIPアドレスを割り当てた複数のhttpsサイトをLetsEncryptを使用して公開しています。
    同一IPに対して異なるURLを多数公開するための手段としてリバースプロキシを使っていますので、複数種類の
    サーバを公開するのにアドレスを確保しないで済む、という程度の意味はあると思いますが、運用上の在り方と
    いうと悩ましいところですね。。。

    実は以前からいくつかコンテンツを参考にさせていただいていたりします。
    またちょこちょこ覗きに来ます。
    ありがとうございました。

  3. まこゆき より:

    不等号で囲むと消えちゃうんですね。
    もしかすると管理側には見えているかもしれませんが一応。。閉じ側を省略しています。
    <Valve className="org.apache.catalina.valves.RemoteIpValve"
    remoteIpHeader="x-forwarded-for"
    remoteIpProxiesHeader="x-forwarded-by"
    protocolHeader="x-forwarded-proto"

    • rohhie より:

      情報提供ありがとうございます。
      メッセージの承認が必要になっていました。多分ですがURLが貼ってあったからで、今し方、コメントを承認して表示されました。

      CSRFでしたか…すっかり忘れていました。もしかして…とお伝えできず失礼しました。

      以前、httpとhttpsの差をどうしても設定で逃げられず、ソースコードに手を入れてCSRFを無効化していました。
      https://rohhie.net/openmeetings-still-works-with-proxy-danger
      バージョン3の頃は相手に画面の制御を渡す機能がありまして、それがjnlpで実装されており、それを使うためにサーバーを信用する必要があって、その手順がユーザーに結構な負担を掛ける系だったので5080ポートにPorxyさせざるを得ず、ソースに手を入れる道を選びました。
      バージョンが上がるたびにソースに手を入れ、バージョン4になってもそれが続き…と結構な手間を掛けていたのに。

      今回示して頂いた方法であれば、(まだ試していませんが)設定で問題回避できたということになりますね。
      当時、あちこち解決方法を探して回り、どこにも解決策はないと思っていましたが、示して頂いた記事が6年半前に出ていたとは… orz
      とはいえ、今見ても x-forwarded* の意味は分からないんですが ^^;

      複数サイトについて、リバースプロキシで複数サイトを運営するということには全く気付いていませんでした。その使い方ができますね、確かにそうです!

      私のところは、今はこのサイトと家族用サイトの2つを運営していますが、2つであればプロバイダが許してくれるので、ルーターにPPPoEをブリッジさせて2つのIPアドレスを使う形にして、家族用サイトを保護(?)しています。まとまっていませんが、記事はこちらです。
      https://rohhie.net/migrate-to-v6-plus-while-maintaining-open-servers

      これはルーターをファイアウォール代わりに使う考え方なのですが、その点では恐らく同等程度の安全性が確保できるものの、リバースプロキシの方がよりインテリジェンスな振り分けができそうだなと思いました。ルーター扱いすると、ポートでの振り分けしかできませんので。

      コメントをいただいたことで、考え方を整理する良いきっかけになりました。
      またコメントをいただける日を楽しみにしております。
      別世界の方にもお邪魔させて頂きます。

      ありがとうございました。

  4. サウスホーク より:

    詳しい解説ありがとうございます。

    現在openmetings 3.3.0を運用しています
    FlashPlayerなどの問題でopenmetings 5.0.0に更新しようとして
    このサイトにたどり着きました。

    テスト環境にUbuntu18.04をインストールして試行中です
    (タイトル通りまっさらからのスタートです)

    詳しい解説のおかげで、取り敢えずは動くようになりましたが
    会議室に入室した段階でおかしな現象に悩まされています

    1人だけ会議室に入室した状態でマイクに向かって発声すると
    スピーカーから自分の声が聞こえます。
    マイク → 自分のPC → サーバー → 自分のPC → スピーカー
    みたいで、発声のあとスピーカーからの音声に若干のタイムラグが有ります

    openmetings 3.3.0では発生していませんので
    openmetings 5.0.0固有の物なのか、私の設定か不明です

    グローバル設定の65番に
    mic.echo.cancellation
    がありますがON OFFどちらでも同じです。

    同様の現象は起きていませんでしょうか。
    どうかよろしくお願いします。

    • rohhie より:

      それは気になって会議に集中できない現象ですね。最近、Web会議しながら、他の電話が掛かってきたりすると本当に気になるんですよね、イヤホンでやってるせいか集中しちゃってる気がします。

      書いていただいた問題はうちでは発生しませんでした。ただ、この環境は動作を簡単に確認したところで潰し、長期間の運用はしていませんので、もしかしたら気付かなかっただけなのかもしれません。

      既に運用されている方ということなので、問題のほとんどは事前に解消されているでしょうから、セッション管理で問題が発生しているのかな?と思ってしまいますね。

      Openmeetings運用当時、自分の声が遅れてくるときの原因は以下の2つだけでした。
      (1) 隣の席の人がマイクを入れていた
      (2) 遠隔の相手が使っていた装置の相性が悪くて、相手が音を折り返していた
      1人で入っているとのことですので当てはまりませんね。

      試してみるとするなら、
      ・新しいロジックになっているので、念のため別の装置でアクセスしてみる。
      ・旧データーをエクスポートしてきて、こちらでインポートしているなら、一旦データベースをドロップしてまっさらからデータベースを作り直してみる。
      ・あえて1つ2つ前のバージョンで試してみる。
      ことくらいでしょうか。恐らく同じ手順でインストールはできるだろうと思いますので。

      もしこのやり方でインストールしているなら、インストールのし直しは
      ・サービスを止めて、現在インストールした先のディレクトリを移動。
      ・新しいフォルダに別バージョンをインストール。
      ・データーベースをドロップして作り直す。
      ・起動する。
      って感じで試すことはできるかなと思います。

      • サウスホーク より:

        返答ありがとうございます

        1人で会議室に入室してテストしている時は
        Web UIによる初期設定時に作成したユーザーで入室しているので
        はかのユーザーは作成もしていません

        データベースの指摘がありましたが
        現在の3.3.0もそうですが
        ユーザーは全部で15人くらいで同時入室するのも4人くらいですので
        データベースはWeb UIによる初期設定時に出てくる組み込み済みデータベースH2を使用していて
        MariaDBやmysqlは使用していません。
        もう一度このサイトの通りMariaDBでインストールしてみます。

        お手数をお掛けして申し訳ございませんでした。

        • rohhie より:

          なるほど。データベースについて書いたのは、現行のシステムの何らかを引き継いだ結果?かなぁ程度の思いでしたので、まっさらなら原因にはならないのでしょう。私がMariaDBを利用したのは参考にした手順書にそれがあったからで、それに元々WordpressでDB入ってるし…程度の理由からで、これじゃなきゃならないってことは全くないと思います。

          そうなると、ろっひー的に思う要素は2つだけです。
          ・機器との相性
          ・バージョンでたまたま何らかのバグを引き起こしている

          機器との相性については、とあるメーカーのWeb会議システム製品でどうしても処理できないマイク・スピーカーというのがあったらしく、会議をすると音が割れる、何度接続し直しても位置をずらしても駄目というのがありました。設定可能なエコーキャンセル、マイクゲイン等の設定の組み合わせを全て試して駄目でした。

          バージョンによる問題については、Openmeetingsでは過去のバージョンで(特に4近辺だった記憶ですが)最後に入った人の声が全然聞こえない、で、接続し直すと今度は別の人の声が聞こえなくなる、といったセッション管理とミキシングの問題が発生していた記憶があります。こうなったときは別の会議室に入り直して運用してました。ユーザーが1人で1接続ということでしたから関係なさそうですが、もしかしたら関係あるのかもしれないな程度です。

          なお、テストについてですが、1人で1つのアカウントを使って2接続させてました。自分メモとはいえ、記事にするからには最低でも簡単なテストをしないと…と思いつつこの時は2接続なんですけれども。

  5. わたる より:

    はじめまして、この記事を熟読してURLを覚えてしまいました。非常に勉強になっています。
    ubuntu20.04にOpenmeetings6.0.0をインストールして1ヶ月です。環境は社内LANだけです。SSLは自己認証で生成させて問題なく動いています。貴方様の自動起動スクリプトにパス(CATALINA_HOME=/opt/open600)を書き換えて実行しましたが、マイクとビデオがグレーアウトされてしまいます。標準のtomcat3でも自動起動はしますが結果は同じです。従って、サーバー起動後は手動で各サービスのコマンド打って起動させています。
    コマンドは以下です。
    .... MariaDB data server
    sudo /etc/init.d/mysql start

    .... Docker
    sudo systemctl start docker.service

    .....Kurento Media Server
    sudo docker start kms

    ...Tomcat-OpenMeetings
    sudo /etc/init.d/tomcat3 restart

    これらを起動後は特に問題なく稼働しています。

    質問
    なぜ、自動で正常に起動できないのでしょうか?Linuxを初めて2ヶ月ほどで超初心者です。申し訳ございませんが、お知恵をお貸しして頂ければ幸いです。

    よろしくお願いします。
    わたる

    • rohhie より:

      それはとても不便でお困りのことかと思います。

      記事を斜め読みし直して記憶をたどったところで、2つほど思いつくことがありました。
      最近はJitsi Meet、または、Teamsを使った会議ばかりで、Openmeetingsに触れていないので、あたるかどうか分からないのですが…

      記事中の起動スクリプトでは、mysql apache2 kurento-media-serverの2つのサービスが事前に動いていることを求めています。
      しかし、書いていただいたコマンドによれば、kurento-media-serverはDockerで構成されているようです。

      (1) コンテナが起動していない可能性
      Dockerのコンテナはインストールの仕方によっては自動起動しません。kurento-media-serverが起動していない可能性があります。
      自動起動させるには、書いていただいたコマンドから推察するに、
      $ sudo docker update --restart=always kms
      を実行して自動起動フラグを立てます。

      これだけで問題解消するかもしれません。

      docker自体が自動起動していない場合は、
      $ sudo systemctl enable docker
      です。

      (2) kurento-media-serverが起動する前にOpenmeetingsが立ち上がってしまっている可能性
      普通に考えると、Openmeetings自体、起動に相当な時間が掛かるので、kmsの方が先に立ち上がっていると思います。
      とはいえ、もしかしたら、Openmeetingsが「kmsが先に立ち上がっていること」を求める仕様だったりすると、kmsの起動遅れが原因でちゃんと動かない可能性もあるなと思いました。
      そこで、起動スクリプトに1つ"docker"を加えます。
      # Required-Start: mysql apache2 kurento-media-server docker
      これで、この自動起動スクリプトはdockerが起動した後に動き出すと思います。

      起動時間がシビアな場合、スクリプトの中にsleepを入れる手もあります。
      start)
      sleep 30
      $CATALINA_HOME/bin/startup.sh -u $RUN_USER -Dcatalina.base$CATALINA_BASE
      でもこれは、緊急避難的な措置で、sleep 30 のところに、kmsが動き出すまで待つ処理を入れるのが本来の形ですね。

      Linux歴2ヶ月とのことですが、ご謙遜を。
      ご質問に書かれている状況から、何に困っているのか、何が起きているのか、だいぶ分かります。的確です。

  6. わたる より:

    rohhie様

    アドバイスありがとうございます。毎晩、脳内が沸騰していてお風呂に入って冷やしています。このアドバイスで再度脳内を沸騰させます。明日結果をお知らせします。
    本当にありがとうございます。

    わたる

  7. わたる より:

    rohhie様

    アドバイスの通り、①を実行しました。
    >Dockerのコンテナはインストールの仕方によっては自動起動しません。kurento-media-serverが起動していない可能性があります。
    >自動起動させるには、書いていただいたコマンドから推察するに、

    以下実行
    sudo docker update –restart=always kms

    you must provide one or more flags when using this command
    と出たのでGoogle先生に尋ねて以下実行

    sudo docker update --restart=always kms
    kms
    と出る。

    再起動3回、電源OFFからの起動を3回試した結果、成功です。自動起動しました。これで朝の孤独と沈黙と憂鬱な3つのコマンドの呪縛から解放されました!
    本当にありがとうございます。
    また、Jitsi Meetの記事も熟読32回ほどしてこちらは問題なく稼働しました。ただ、同様のwebRTCでBig Blue ButtonはなぜかPDFのプレゼンテーション資料が正常に表示されない現象があります。。。

    何度でも言います。ありがとうございます。
    わたる

    • rohhie より:

      やっぱり質問が的確だと、回答もあたるんですね(エスパー感は皆無です)。
      お役に立てて良かったです。
      そして、結果を教えていただき、励みになります。

      トラブルについては、多分Wordpressのバグで、ハイフン2つが1つにまとめられています…
      何じゃこりゃ?となりますよね、ご心配をおかけしまして申し訳ありませんでした。
      # これ、修正できるのかどうか、分からないです…

      Big Blue Buttonは名前は知っているのですが、試したことがありません。
      これはお役に立てそうもありません。あしからず。

      1つお教えいただきたいことがありまして、それは、なぜ、幾つものシステムを試されているのかということです。
      私自身はJitsi Meetで満足してしまったようで、他を試そうという気にならなくなったのですが、何かきっかけになるような出来事があったのでしょうか。
      (うちでは、Jitsi Meetが割と活躍していまして、本日も150~200セッションほどで推移していました。ユーザーの満足度も高いと想定しています。)

      最後に、随分と記事を熟読していただいているようで、乱文お恥ずかしい限りです。
      また当サイトにお越しいただいた際には、テキトーに流し読みしながら、役に立ちそうなところがあったらお使いいただけましたら幸いです。

  8. わたる より:

    rohhie様

    いくつものシステムを試している理由は、大学のある特化したゼミに使用していて、ビデオミーティングではなく、リアルタイムの映像を見ながら生徒は講義を受けるという環境です。ここでは映像遅延と映像の高解像度が問題になっていて、いろいろなシステムを試して高解像度を配信しながら遅延のより少ないものを採用するというのが1つの条件になります。ですので、新しいシステムの情報があれば試してみるということを行っています。他にもいろいろな条件があって、システムはイントラネットでないとだめなんです。
    rohhieさんのサイト情報は、同じような環境を持っている他大学の担当者との横の繋がりで教えて貰いました。rohhieさんのサイトは結構有名です!
    Jitsi Meetは僕も良いと思います。かなり洗練されていて使い易いです。しかし、決めるのは教授ですので、松竹梅じゃないですが3つくらいシステムを用意しておくと教授たちも議論し易くなくということです。
    長くなってしまいましたが、いろいろありがとうございました。常に拝読させてもらっていますので今後も楽しみにしています。

    わたる

    • rohhie より:

      選択肢を用意する…なるほど、そういうことでしたか、納得です。

      そういう立場でお仕事されていると、そもそもインストールが簡単になるように整備されているシステムはありがたいですよね。
      Jitsi Meetはその点が優れていて、かつ、スマートフォンアプリもあったりするので、一気に人気が出たのだと思いました。

      選択というところでは、昨年、Q&Aシステムを幾つか試そう!となったのですが、そのときに決め手になったのは開発の頻繁さでした。
      枯れたシステムは不具合が少ないという点で良いですし、いま開発が頻繁なシステムはUIがイマドキでユーザーになじみやすいという点で良いです。
      この時は、新しく展開するならイマドキじゃね?ということで、新しいものを選択していますが、目的によって選択結果は変わってくると思います。

      サービスを提供する立場で考えると、その後のサポートの少なさ、メンテナンスの容易さも重要な観点になりますから、その点でも優れたものが選ばれると良いですね!

      --

      このサイトを始めたきっかけは、操作ミスです。自宅で運営を始めたシステムが一発で駄目になりました。
      システム構築時のメモ書きはそのサーバーに入っていてうまく取り出せず、サーバーを最初から構築することになり、そうか、メモは別の場所に書かなきゃ駄目なんだ、と考えてブログを使い始めました。

      そんな「自分メモ」が「結構有名です!」なんていってもらえるのは、お世辞でしょうけれども励みになります。

      またGoogle先生やBing先生に引っかかって当サイトにお越しいただいた際には、お気軽にコメントしてください。
      色々とコミュニケーションしていただきましてありがとうございました。