オープンソースのセルフホストチャットプラットフォームを探している場合は、Rocketchatが最適なオプションです。ロケットチャットは、スラック、マターモストなどのさまざまな通信チャネルの代わりに使用できます。ロケットチャットには、グループチャット、ビデオ会議などのさまざまな機能があり、ライブチャットを他のプラットフォームと統合できます。この記事では、SSL証明書を暗号化してセルフホストのRocketchatシステムをセットアップする方法を学習します。
前提条件
- 新しいubuntuサーバー
- rootアクセスまたはsudo特権アカウント
- サーバーIPで指定されたドメイン名
- アプリケーションをダウンロードするためのインターネット接続
必要なパッケージと依存関係をインストールする
パッケージをインストールする前に、次のコマンドを使用してUbuntuシステムを更新します
$ sudo apt-get update -y
システムの更新が完了したら、次のコマンドを使用してMongoDBパッケージをインストールするようにaptを構成します。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
出力:
aptを使用してインストールできるようにNode.jsを構成するには パッケージマネージャーは次のコマンドを実行します。
$ sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
出力:
次に、ビルドツールNodejs、MongoDB、graphicsmagickをインストールします:
$ sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick
出力:
次に、inheritsとn、およびRocketchatに必要なノードバージョンをインストールします。
$ sudo npm install -g inherits n && sudo n 12.18.4
インストールされているNodejsのバージョンを確認するには、次のコマンドを実行します。
$ node --version
出力:
v12.18.4
Rocketchatをインストールする
必要な依存関係はすでにインストールされています。このステップでは、Rocket Chatアプリケーションをダウンロードして、Ubuntu20.04にインストールします。
次のコマンドを使用して、Rocketchatの最新バージョンをダウンロードします。
$ curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp
出力:
ダウンロードしたアプリケーションを解凍します。抽出したファイルを保存するディレクトリを選択できます。この例では、 / tmpにファイルを抽出しました ディレクトリ。
$ tar -xvzf /tmp/rocket.chat.tgz -C /tmp
次に、Rocketchatをインストールします。この記事では/opt ディレクトリはインストールに使用されます。任意のディレクトリを優先できます。
$ cd /tmp/bundle/programs/server && npm install
出力:
$ sudo mv /tmp/bundle /opt/Rocket.Chat
Rocket.Chatサービスを構成する
rocketchatユーザーを作成し、Rocket.Chatアプリケーションディレクトリに適切な権限を設定して、Rocket.Chatサービスを作成します。
$ sudo useradd -M rocketchat && sudo usermod -L rocketchat
$ sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
rocketchat.serviceを作成するには、端末で次のコマンドを実行します
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service [Unit] Description=The Rocket.Chat server After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service [Service] ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=rocketchat User=rocketchat Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://localhost:3000/ PORT=3000 [Install] WantedBy=multi-user.target EOF
例:
次に、MongoDBストレージエンジンとレプリケーションをセットアップする必要があります。この後、mongoDBを有効にして起動します:
$ sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
$ sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
$ sudo systemctl enable mongod && sudo systemctl start mongod
$ mongo --eval "printjson(rs.initiate())"
出力:
次に、次のコマンドを使用してRocket.Chatサービスを開始して有効にします。
$ sudo systemctl enable rocketchat && sudo systemctl start rocketchat
Rocket.Chatサービスのステータスを確認してください」
$ sudo systemctl status rocketchat
出力:
Nginxのインストールとリバースプロキシの構成
Rocket.Chatのnginxリバースプロキシを構成するには、次のコマンドを使用してnginxをインストールします
$ sudo apt install nginx
rocketchatのnginx仮想ホスト構成を作成します。
$ sudo nano /etc/nginx/conf.d/rocketchat.conf
次の内容を貼り付けてファイルを保存します
upstream backend { server 127.0.0.1:3000; } server { listen 80; server_name your_rocketchat_domain_name; access_log /var/log/nginx/rocket.chat.access.log; error_log /var/log/nginx/rocket.chat.error.log; location / { proxy_pass http://backend/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
nginx構成ファイルを確認してください
$ sudo nginx -t
nginxサービスを再起動して有効にします
$ sudo systemctl restart nginx
$ sudo systemctl enable nginx
次に、rocketchatドメインに次のようにアクセスします
http:// your_rocketchat_domain
Webセットアップウィザードを取得し、それを完了してRocket.Chat
の使用を開始します。SSLリバースプロキシとしてのNginx
Rocket.ChatをHTTPリバースプロキシのみで構成しました。 nginxをSSLリバースプロキシとして構成するには、証明書ファイルが必要です。 nginx vhostファイルを編集して、次の内容を貼り付けます。
$ sudo nano /etc/nginx/conf.d/rocketchat.conf
upstream backend { server 127.0.0.1:3000; } server { listen 443 ssl; Server_name your_rocketchat_domain_name; client_max_body_size 200M; access_log /var/log/nginx/rocket.chat.access.log; error_log /var/log/nginx/rocket.chat.error.log; ssl_certificate /etc/nginx/certificate.crt; ssl_certificate_key /etc/nginx/private.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; }
注:
ssl証明書を生成または購入し、証明書ファイルのディレクトリを次の構成パラメーターで指定します。
ssl_certificate /etc/nginx/certificate.crt; [Your certificate file]
ssl_certificate_key /etc/nginx/private.key; [Your Private Key file]
nginx構成ファイルを確認してください
sudo nginx -t
nginxサービスを再起動します
sudo systemctl restart nginx
Rocketchatへのアクセス
リバースプロキシを設定すると、次のURLを使用してRocket.Chatにアクセスできます。
https:// you_rocket_chat_domain
Rocket.ChatWebセットアップウィザードが表示されます。セットアップを完了し、セルフホストのRocket.Chatの使用を開始します。
結論
この記事では、Ubuntu20.04にセルフホストのRocketチャットをインストールして構成する方法を学びました。また、SSL証明書を暗号化してリバースプロキシ用にnginxをインストールおよび構成する方法についても説明しました。