Ubuntu 14.04にRocket.Chatをインストール、構成、およびデプロイする方法
序章
Rocket.Chat は、Meteorで構築されたオープンソースのメッセージングアプリです。 ビデオ会議、ファイル共有、音声メッセージをサポートし、フル機能のAPIなどを備えています。 Rocket.Chatは、コミュニケーションを完全に制御したい人に最適です。
このチュートリアルでは、新しいUbuntuサーバーにRocket.Chatをインストールして構成し、セキュリティを強化してRocket.Chatへのアクセスをはるかに簡単にするためにNginxを介してリバースプロキシを設定します。 完了すると、事実上どこからでもアクセスできるRocket.Chatの機能インスタンスが作成されます。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 推奨される最小1GBのRAMを備えた1台のUbuntu14.04サーバー
- sudo権限を持つroot以外のユーザー( Ubuntu 14.04 を使用した初期サーバーセットアップでは、これをセットアップする方法について説明しています。)
- 完全に登録されたドメイン。 Namecheap で購入するか、Freenomで無料で入手できます。
- ドメイン名がサーバーを指すように構成されていることを確認してください。 ヘルプが必要な場合は、このチュートリアルを確認してください。
- SSL証明書。 自己署名証明書を生成します、[Let’s Encryptから無料の証明書を取得します]( ../how-to-secure-nginx-with- let-s-encrypt-on-ubuntu-14-04 )、または別のプロバイダーから購入します。
ステップ1—依存関係のインストール
このセクションでは、MongoDBやNodeJSなどのRocket.Chatの依存関係の一部をインストールします。
MongoDBを起動して実行することから始めましょう。 まず、パッケージにアクセスできるようにキーサーバーを追加する必要があります。
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
次に、使用するリポジトリを設定する必要があります。
- echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
次に、パッケージリストを更新します。
- sudo apt-get update
これで、npm
、mongodb-org
、curl
、graphicsmagick
をインストールできます。これらはすべてRocket.Chatの依存関係です。
- sudo apt-get install npm mongodb-org curl graphicsmagick
ノードのバージョンを変更できるようにするには、NPMを使用してパッケージをインストールする必要があります。
- sudo npm install -g n
そのパッケージを使用して、ノードのバージョンを0.10.40
に変更します。
- sudo n 0.10.40
次に、Rocket.Chat自体をインストールし、少し設定を行います。
ステップ2—Rocket.Chatをインストールする
まず、curl
を使用してRocket.Chatの最新の安定バージョンをダウンロードします。
- curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
tar
コマンドを使用してダウンロードしたアーカイブを展開します。
- tar zxvf rocket.chat.tgz
これにより、アーカイブ全体がbundle
という名前のディレクトリに展開されます。 bundle
ディレクトリの内容を覚えやすい場所に移動しましょう。
- mv bundle Rocket.Chat
NPMを使用してRocket.Chatをインストールするディレクトリに移動します。
- cd Rocket.Chat/programs/server
Rocket.Chatをインストールします。
- npm install
親のRocket.Chat
ディレクトリに戻ります。
- cd ../..
Rocket.ChatがURLやポートなどを追跡できるように、いくつかの環境変数を設定する必要があります。
まず、ROOT_URL
変数をドメイン名に設定します。 これはURLの形式である必要があります。
- export ROOT_URL=https://example.com/
MONGO_URL
変数の下にMongoDBのURLを設定します。
- export MONGO_URL=mongodb://localhost:27017/rocketchat
PORT
変数を3000
に設定します。
- export PORT=3000
これで、次のコマンドを使用してRocket.Chatを実行できます。
- node main.js
エラーがなければ動作します! ただし、今のところ、CTRL+C
を使用してRocket.Chatを停止します。 Rocket.Chatがインストールされたので、リバースプロキシを使用してすべてのトラフィックをプロキシするようにNginxを設定する必要があります。これにより、Rocket.Chatに簡単にアクセスでき、SSL証明書を使用してすべての通信を暗号化できます。
ステップ3—Nginxを使用してリバースプロキシを設定する
まず、Nginxをインストールします。
- sudo apt-get install -y nginx
証明書の秘密鍵を/etc/nginx/certificate.key
に移動します。
- sudo cp /path/to/your/key /etc/nginx/certificate.key
たとえば、Let’s Encrypt証明書を作成した場合は、sudo cp /etc/letsencrypt/live/your_domain_name/privkey.pem /etc/nginx/certificate.key
を使用します。
許可されていない泥棒がアクセスできないように、キーの権限を変更します。
- sudo chmod 400 /etc/nginx/certificate.key
証明書自体を/etc/nginx/certificate.crt
にコピーします。
- sudo cp /path/to/your/cert /etc/nginx/certificate.crt
Let’s Encrypt証明書を作成した場合、コマンドはsudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt
のようになります。
Rocket.Chatのまったく新しい構成を作成するので、デフォルトを削除して少し簡単にすることができます。
- sudo rm /etc/nginx/sites-enabled/default
将来何らかの理由でそのファイルを元に戻す必要がある場合でも、/etc/nginx/sites-available/default
で引き続き入手できます。
nano
またはお気に入りのテキストエディタを使用して新しい/etc/nginx/sites-enabled/default
を作成します。
- sudo nano /etc/nginx/sites-enabled/default
まず、upstream
ブロックを追加します。
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
その下に、server
ブロックを作成しましょう。 最初の部分は、接続をリッスンするポート(この場合は:443
)をNginxに指示します。 また、ホスト名が何であるかを知らせます。 example.com
をドメイン名に置き換えることを忘れないでください。
server {
listen 443;
server_name example.com;
その下で、Rocket.Chatのアクセスログを保存する場所をNginxに指示し、/etc/nginx/certificate.key
と/etc/nginx/certificate.crt
にそれぞれ配置したSSL証明書とキーをポイントします。
error_log /var/log/nginx/rocketchat.access.log;
ssl on;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/certificate.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE
そして今、location
ブロックで構成を終了します。
location / {
proxy_pass http://example.com:3000/;
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;
}
}
参照用の完全なファイルは次のとおりです。
server {
listen 443;
server_name example.com;
error_log /var/log/nginx/rocketchat.access.log;
ssl on;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/certificate.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE
location / {
proxy_pass http://example.com:3000/;
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 service nginx restart
Nginxが実行されているかどうかを確認します。
- sudo service nginx status
次のメッセージが表示された場合は、Nginxが稼働しています。
* nginx is running
エラーメッセージが表示された場合は、/var/log/nginx/rocketchat.access.log
と/var/log/nginx/access.log
のログ、または/var/log/nginx/error.log
のエラーログを確認してください。 nginx -t
を実行して、ほとんどのエラーが表示されるNginx構成ファイルを確認することもできます。
Rocket.Chat
フォルダーにいることを確認してください。
- cd ~/Rocket.Chat
次に、次のコマンドを実行してRocket.Chatを再起動します。
- node main.js
Rocket.Chatはhttps://example.com
でライブになります。 お気に入りのブラウザでそのアドレスにアクセスすると、これを確認できます。
次のセクションでは、forever-service
というノードモジュールを使用して、起動時に自動的に実行されるようにRocket.Chatを構成します。
ステップ4—Rocket.Chatをサービスとして構成する
forever-service
は、Rocket.Chatなどのノードアプリの初期化スクリプトを自動的に生成します。 まず、forever-service
が依存するforever
自体をインストールする必要があります。
- sudo npm install -g forever
次に、forever-service
をインストールします。
- sudo npm install -g forever-service
forever-service
を使用してサービスを作成します。
- sudo forever-service install -s main.js -e "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
-s
フラグの後にmain.js
が続く場合、スクリプトの名前はapp.js
ではなく、main.js
になります。これはデフォルトです。-e
フラグの後に"ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"
が続くと、環境変数が永久サービスに渡されます。- 最後に、
rocketchat
は、サービスに名前を付ける名前をforever-serviceに指示します。
forever-serviceの構文の詳細については、forever-service --help
を実行してください。
これで、Rocket.Chatを開始できます。 これにより、forever-service
によって作成されたrocketchat
サービスが初期化されます。
- sudo start rocketchat
Rocket.Chatは、手順2で設定したURLで公開されているはずです。 ここでHTTPSを使用していることを確認してください。
Rocket.Chatの準備ができているはずです。 次のセクションでは、最初の管理者ユーザーをRocket.Chatに追加し、インターフェイスのツアーに参加します。
ステップ5—Rocket.Chatの構成と使用
Rocket.Chatを先に設定したURLにアクセスします。 次のように表示されます。
新しいアカウントの登録をクリックし、最初の管理者のユーザー情報を入力します。
送信をクリックし、新しいユーザーのユーザー名を選択します。
このユーザー名を使用をクリックすると、ホームページに移動します。
それで全部です! 右側に、#generalチャネルがすでに作成されていることがわかります。 それをクリックすると、チャットルームに移動します。 少し遊んでみてください。
それでは、インターフェースのツアーを見てみましょう。 まず、チャンネルの横にある小さなプラスボタンをクリックして、新しいチャンネルを作成しましょう。
好きな名前を付けてください。
保存をクリックすると、新しいチャンネルに移動します。
管理インターフェースにアクセスするには、ユーザー名の横にある小さな矢印をクリックします。 メニューをプルダウンします:
管理をクリックします。 2番目のメニューが表示されます。
このメニューを使用して、Rocket.Chatインストールのあらゆる側面を構成および管理できます。 ユーザーセクションでは、個々のユーザーの権限を管理したり、新しいユーザーを招待したりすることもできます。 Integrations ビューを使用して、インストールに機能を追加することもできます。
結論
おめでとう! これで、あなたとあなたのチームのための独自のチャットソリューションができました。Ubuntu14.04サーバーで実行されているRocket.Chatです。 forever-service
を使用して起動時に自動的に起動するように設定されており、Nginxリバースプロキシを使用したSSLが完全に装備されています。 メンバーを追加したり、チャネルを作成したり、[管理]メニューの[統合]セクションを確認したりすることができます。 楽しむ!