AWS・UbuntuのSNAPを使って、NextCloudをインストールし、SSLを実装し、Web会議(Talk)を行った

テレワークのためのオンラインストレージを使うために、NextCloudを導入することが有益と投稿しましたが、さらにNextCloudには、TalkなるWeb会議ツールがあり、ZOOMにあるセキュリティリスクが問題となった今、オンプロミス環境でWeb会議ができるので、さらにテレワーク環境を鉄壁にセットアップできます。

ラズパイ上で 専用デストリビューションNextCloudPiや、Rasbian上にNextCloudをセットアップしたりしましたが、Talkを実装するためには、サーバ上でSSL通信した上で、NextCloudを動かす必要があります。(TalkはSSLでなければ動かない)

CentOS8 や Ubuntu や AmazonLinux 上に、NextCloudをインストールして、Talkを試してみましたが、なかなかうまくいきません。
うまく動かない理由は、NextCloudのストレージ機能までは動くのですが、SSL通信を行い、うまくNextCloudでリダイレクトする仕組みがうまくいきませんでした。

1か月ぐらいは「あーでもない!こーでもない!!」と色々試してジタバタしていましたが、ついにはUbuntuのSNAPパッケージを使うことでうまく動きました。

ちなみに、AWSでSSL通信をするためには、ロードバランサーを導入するか、CloudFlontを導入するかして、AWS Certificate Manager (ACM) からサーバ証明書を適応しなければなりません。

私のWebサイトは、ロードバランシングをして、サーバ証明書を登録し、SSL通信をしているので、その実装方法を使ってみましたが、リダイレクトがうまくいかずにエラーに終わっていました。 その中で、うまくいったUbuntuのSNAPパッケージを使う方法は、パッケージがうまく全体の面倒を見ているので、SSLでも問題が発生しないのかと思いました。

AWS・UbuntuにSNAPを使って、NextCloudをインストールする手順

※ コマンド入力は、文頭に[# ]を表記

snapによる、nextcloudインストール

# sudo snap install nextcloud 
nextcloud 19.0.1snap2 from Nextcloud? installed




管理ユーザを「nxtadm」、パスワードを「nxtadm99」として、環境設定

# sudo nextcloud.manual-install nxtadm nxtadm99 
Nextcloud was successfully installed




使用するドメインを信頼できるドメインとして、コマンドで登録

ブラウザからアクセスする可能性があるドメイン名をNextCloudに信頼させる

# sudo nextcloud.occ config:system:set trusted_domains 1 --value=(AWSインスタンスのパブリックDNSアドレス)
System config value trusted_domains => 1 set to string (AWSインスタンスのパブリックDNSアドレス)
※ AWSインスタンスのパブリックDNSアドレス:ec2-54-168-42-199.ap-northeast-1.compute.amazonaws.com など 

# sudo nextcloud.occ config:system:set trusted_domains 2 --value=(サイトドメイン名:mikolabo.netなど)
System config value trusted_domains => 2 set to string (サイトドメイン名)
# sudo nextcloud.occ config:system:get trusted_domains
localhost
(AWSインスタンスのパブリックIPアドレス)




Let’s Encryptを使用したSSLのセットアップ

Let’s Encryptがドメイン所有権の検証に使用するファイアウォールのポートを開く
# sudo ufw allow 80,443/tcp 
Rules updated 
Rules updated (v6)
Let’s Encrypt証明書を要求 
# sudo nextcloud.enable-https lets-encrypt 
In order for Let's Encrypt to verify that you actually own the 
domain(s) for which you're requesting a certificate, there are a 
number of requirements of which you need to be aware:

1. In order to register with the Let's Encrypt ACME server, you must 
  agree to the currently-in-effect Subscriber Agreement located here: 

https://letsencrypt.org/repository/ 

By continuing to use this tool you agree to these terms. 
Please cancel now if otherwise. 

2. You must have the domain name(s) for which you want certificates 
  pointing at the external IP address of this machine. 

3. Both ports 80 and 443 on the external IP address of this machine 
  must point to this machine (e.g. port forwarding might need to be 
  setup on your router). 

Have you met these requirements? (y/n) ← yを入力
Please enter an email address (for urgent notices or key recovery): ← メールアドレスを入力  
Please enter your domain name(s) (space-separated): ← サイトドメインを入力  
Attempting to obtain certificates... done Restarting apache... done




ブラウザからNextCloudにアクセスしてセットアップ

前の操作までで、インストールは完了し、SSL通信もできるようになっていました。
色々やって、悪戦苦闘したのがうそだったみたいに、あっさりできちゃいました。
あとは、ブラウザからログインすると、NextCloudの初期画面が出てきますので、前に投稿したようにセットアップすれば使えちゃいます。

TalkによるWeb会議について

この悪戦苦闘の目的は、TalkによるWeb会議にあったので、その使用した感想を述べたいと思います。
Web会議というと、どうしてもZOOMと比較することが多いですが、そのほうがイメージしやすいでしょう。

まず、ZOOMのようにブラウザから操作ができて、管理者が会議を開催し、招待して、会議を行うことができて、ほぼZOOMのように操作することができました。
また、スマホからアプリを使って、会議に参加することができますので、基本的な操作性は変わらないと思いました。

画質については、多人数利用でも、他のシステムに比べても、断トツでZOOMは優れているのは認めるところです。
コロナ渦で、色々Web会議が試されていますが、私の試した感じでは、ZOOMはしょうがないとして、他のシステムと比べれば、性能は良いほうではないかなと思います。

そして、何よりも押したいところは、オンプロミス環境でWeb会議ができるところです。
世の中のWeb会議の仕組みが、ネットワーク構成、システム構成が公開されておらず、ZOOMのように通信ネゴが公開されていた通信強度よりも低かったとか、実は中継ノードが中国国内のセンターがあったとか、この先も思わぬセキュリティ的なリスクにさらされかねないという不安が、自分で構築したために、また自分が設定したVPN網を通すことによって、解消されるところは、とっても精神に優しいです。

また、一般のインターネットを使った通信とSoftEtherVPN網を通した通信とで、Web会議を試しましたが、自宅、実家、オフィスで会話したところでは、そんなに品質に差は感じませんでした。さすがにもう少し参加ノードが増えれば厳しいでしょうが、多人数で重要ではない会議は一般インターネットで、少人数の重要会議はVPNを通すという運用も考えられると思います。

また、SoftEtherVPNを使った自前のテレワークシステムでは、各拠点ごとに用意されている普段使っている仮想Hubではなく、NextCloud用に用意した専用仮想Hubを使うようにもできました。
これによって、明示的に自分が使う仮想Hubを選ばせるとか、管理者がユーザを指定して、接続可否をコントロールできるようにデザインできました。今年後半に稼働するシステムでオプション的に使っていただける準備ができました。

今回のNextCloudの機能をプラスして以下のシステムで使えます。

また、NextCloudネタには、次の投稿があります。