テレワークのためのWebツール、Slackを代替えするRocket.Chat

AWSクラウド上で、Ubuntuサーバを立ち上げて、その上でRocket.Chatを動かします。

Rocket.Chatとは、Slackとほぼ同じ機能を有するオープンソースです。
Rocket.Chatのサイトには、

  • チームを顧客、サプライヤー、パートナーと結び付け、一元化し、情報の欠落を避け、チームをより活性化します。
  • Web、デスクトップ、モバイルアプリ、LiveChatクライアント、SDKを使用してどこにでも運べます。

と謳っています。

Ubuntuで、Snapパッケージを使って、Rocket.Chatをインストールし、AWS上のRoute53で購入してあるドメインmiko.servicesのサブドメイン、rkt.miko.servicesで運用します。

では、Rocket.Chatをインストールします。

1.Rocket.Chat インストール

ubuntu@ip-10-21-12-68:~$ sudo -s

root@ip-10-21-12-68:/home/ubuntu# sudo snap install rocketchat-server
rocketchat-server (3.x/stable) 3.13.2 from Rocket.Chat (rocketchat?) installed

Route53 に Rocket.Chat用のUbuntuEC2のIPアドレスに対するサブドメインのAレコードを登録しておく
http://[URL]:3000 を入力

2.Rocket.Chat SSL化対応

●SSLとLet’sEncrypt証明書を有効にする場合の条件

  • HTTPSで始まるURLを入力します
  • 使用したいドメイン名を所有している
  • ドメイン名をパブリックIPに解決するために正しいDNSレコードを設定します

スナップでキャディを有効にするオプションが含まれるようになりました。
Caddyは、Let’s Encryptを利用して、通信にSSL保護を自動的に提供します。
リリース0.73以降、スナップフックを使用してキャディに関連するすべてを簡単に構成できます。

●次のコマンドで構成が正しいことを確認

root@ip-10-21-12-68:~# sudo snap set rocketchat-server caddy-url=https://rkt.miko.services
root@ip-10-21-12-68:~# sudo snap set rocketchat-server caddy=enable
root@ip-10-21-12-68:~# sudo snap set rocketchat-server https=enable
root@ip-10-21-12-68:~# sudo snap run rocketchat-server.initcaddy
Your URL was successfully configured - Please restart rocketchat and caddy services to apply configuration changes

●Rocket.Chat と Caddy を再起動

root@ip-10-21-12-68:~# sudo systemctl restart snap.rocketchat-server.rocketchat-server.service
root@ip-10-21-12-68:~# sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service

●RocketChatのデフォルトポート3000 でSSLをセットアップ

/var/snap/rocketchat-server/current/Caddyfile デフォルトではないので生成します。

root@ip-10-21-12-68:~# sudo vi /var/snap/rocketchat-server/current/Caddyfile

https://rkt.miko.services
proxy / localhost:3000 {
  websocket
  transparent
}

※ https と port = 3000 も開放しないと SSL接続できない

●サービスを再起動

※ まず、SSLを有効にする前に、DNSの解決が完了していることを確認
※ DNSがまだ機能していない場合、Let’sEncryptにより最大1週間、抑制される可能性あり

root@ip-10-21-12-68:~# systemctl restart snap.rocketchat-server.rocketchat-caddy

キャディサービスが正しく開始されたことを確認できます

root@ip-10-21-12-68:~# sudo systemctl status snap.rocketchat-server.rocketchat-caddy

● snap.rocketchat-server.rocketchat-caddy.service - Service for snap application rocketchat-server.rocketchat-caddy
     Loaded: loaded (/etc/systemd/system/snap.rocketchat-server.rocketchat-caddy.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-04-18 19:47:03 JST; 3s ago
   Main PID: 22027 (caddy)
      Tasks: 8 (limit: 629145)
     Memory: 9.5M
     CGroup: /system.slice/snap.rocketchat-server.rocketchat-caddy.service
             mq22027 caddy -conf=/var/snap/rocketchat-server/1459/Caddyfile

Apr 18 19:47:03 ip-10-21-12-68 systemd[1]: snap.rocketchat-server.rocketchat-caddy.service: Scheduled restart job, restart counter is at 27.
Apr 18 19:47:03 ip-10-21-12-68 systemd[1]: Stopped Service for snap application rocketchat-server.rocketchat-caddy.
Apr 18 19:47:03 ip-10-21-12-68 systemd[1]: Started Service for snap application rocketchat-server.rocketchat-caddy.
Apr 18 19:47:05 ip-10-21-12-68 rocketchat-server.rocketchat-caddy[22027]: Activating privacy features... 2021/04/18 19:47:05 [INFO] [rkt.miko.services] acme: O>
Apr 18 19:47:06 ip-10-21-12-68 rocketchat-server.rocketchat-caddy[22027]: 2021/04/18 19:47:06 [INFO] [rkt.miko.services] acme: Obtaining bundled SAN certificate
root@ip-10-21-12-68:~#

●Caddy のログを確認

journalctl -r | grep caddy | less

example-domain.com
proxy / localhost:3000 {
websocket
transparent
}

ここまでで、AWSのUbuntuサーバにRocket.Chatをインストールしたものを、SSL化してインターネットに公開できました。
そして、管理者として、ユーザを追加し、運用の準備ができました。

Webサービスの業務使用を許されていない場合でも、オンプロミスで構築して、Slack 機能を自前で利用できます。