前書き

http://rocket.chat [Rocket.Chat]は、Meteorで構築されたオープンソースのメッセージングアプリです。 ビデオ会議、ファイル共有、音声メッセージをサポートし、フル機能のAPIなどを備えています。 Rocket.Chatは、コミュニケーションを完全に制御したい人に最適です。

このチュートリアルでは、Rocket.Chatを新しいUbuntuサーバーにインストールして構成し、Nginxを介してリバースプロキシを設定してセキュリティを強化し、Rocket.Chatに簡単にアクセスできるようにします。 完了すると、実質的にどこからでもアクセスできるRocket.Chatの機能インスタンスが作成されます。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • 1 GB以上のRAMを推奨するUbuntu 14.04サーバー1台

  • sudo特権を持つ非rootユーザー(https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04[Ubuntu 14.04での初期サーバー設定]は、この設定方法を説明しています。 )

  • 完全に登録されたドメイン。 https://namecheap.com [Namecheap]で購入するか、http://www.freenom.com/en/index.html [Freenom]で無料で入手できます。

  • ドメイン名がサーバーを指すように設定されていることを確認してください。 ヘルプが必要な場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [このチュートリアル]をご覧ください。

  • SSL証明書。 https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu-14-04 [自己署名証明書の生成]、https:// www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04[Let’s Encryptから無料のものを入手]、または別のプロバイダーから購入します。

ステップ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

以上で、Rocket.Chatの依存関係である + npm ++ mongodb-org ++ curl +、および `+ graphicsmagick +`をインストールできます。

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:///

`+ 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  /etc/nginx/certificate.key

たとえば、Let’s Encrypt証明書を作成した場合、 `+ sudo cp /etc/letsencrypt/live//privkey.pem / etc / nginx / certificate.key +`を使用します。

不正な泥棒がアクセスできないように、キーの権限を変更します。

sudo chmod 400 /etc/nginx/certificate.key

証明書自体を `+ / etc / nginx / certificate.crt +`にコピーします。

sudo cp  /etc/nginx/certificate.crt

Let’s Encrypt証明書を作成した場合、コマンドは `+ sudo cp /etc/letsencrypt/live//cert.pem / etc / nginx / certificate.crt +`のようになります。

Rocket.Chatのまったく新しい構成を作成するので、デフォルトを削除して少し簡単にすることができます。

sudo rm /etc/nginx/sites-enabled/default

将来何らかの理由でそのファイルを元に戻す必要がある場合、 `+ / etc / nginx / sites-available / default +`で利用可能です。

新しい「+ / etc / nginx / sites-enabled / default 」を作成し、「 nano +」またはお気に入りのテキストエディターを使用します。

sudo nano /etc/nginx/sites-enabled/default

最初に、 `+ upstream +`ブロックを追加します。

/ etc / nginx / sites-enabled / default

# Upstreams
upstream backend {
   server 127.0.0.1:3000;
}

その下に、 `+ server `ブロックを作成しましょう。 最初の部分は、Nginxに接続をリッスンするポート、この場合は「:443+」を伝えます。 また、ホスト名を知らせます。 「++」をドメイン名に置き換えることを忘れないでください。

/ etc / nginx / sites-enabled / default

server {
   listen 443;
   server_name ;

その下で、NginxにRocket.Chatのアクセスログを保存する場所を伝え、 `+ / etc / nginx / certificate.key `および ` / etc / nginx / certificate.crt +`に配置したSSL証明書とキーをポイントします。それぞれ。

/ etc / nginx / sites-enabled / default

   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://: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;
   }
}

参照用の完全なファイルは次のとおりです。

/ etc / nginx / sites-enabled / default

server {
   listen 443;
   server_name ;
   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://: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:// +`でライブになります。 お気に入りのブラウザでそのアドレスにアクセスすると、これを確認できます。

次のセクションでは、 `+ forever-service +`というノードモジュールを使用してブート時に自動的に実行されるようにRocket.Chatを構成します。

ステップ4-サービスとしてRocket.Chatを構成する

`+ forever-service `は、Rocket.Chatなどのノードアプリ用のinitスクリプトを自動的に生成します。 まず、 ` 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:/// MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
  • `+ -s `フラグの後に ` main.js `を付けると、スクリプトの名前がデフォルトの ` app.js `ではなく、 ` main.js +`になります。

  • + -ROOT + URL = https:/// MONGO_URL = mongodb:// localhost:27017 / rocketchat PORT = 3000" + `が続く + -e + `フラグは、環境変数をforever-serviceに渡します。

  • 最後に、 `+ rocketchat +`はforever-serviceにサービスの名前を指定します。

forever-serviceの構文の詳細については、 `+ forever-service –help +`を実行してください。

これでRocket.Chatを起動できます。 これは、 `+ forever-service `によって作成された ` rocketchat +`サービスを初期化します。

sudo start rocketchat

これで、Rocket.Chatはステップ2で設定したURLで有効になります。 ここでHTTPSを使用していることを確認してください。

Rocket.Chat beは準備完了です。 次のセクションでは、最初の管理ユーザーをRocket.Chatに追加し、インターフェースのツアーを行います。

ステップ5-Rocket.Chatの構成と使用

以前にRocket.Chatを設定したURLにアクセスします。 このようなものが見えるはずです。

image:https://assets.digitalocean.com/articles/rocket_chat/klJmqMA.png [Rocket.Chatのログインページ]

[新しいアカウントの登録]をクリックして、最初の管理者のユーザー情報を入力します。

image:https://assets.digitalocean.com/articles/rocket_chat/DYO7MES.png [Rocket.Chat登録]

[送信]をクリックして、新しいユーザーのユーザー名を選択します。

image:https://assets.digitalocean.com/articles/rocket_chat/sjw3Anc.png [新しいユーザーのユーザー名を設定]

[このユーザー名を使用]をクリックすると、ホームページが表示されます:

画像:https://assets.digitalocean.com/articles/rocket_chat/Ek3gIlH.png [Rocket.Chatのホームページ]

それだけです! 右側に、*#general *チャンネルが既に作成されています。 クリックすると、チャットルームに移動します。 少し遊んでみてください。

image:https://assets.digitalocean.com/articles/rocket_chat/JHXi3Au.png [デフォルトの#generalチャットルーム]

それでは、インターフェースのツアーを見てみましょう。 まず、*チャンネル*の横にある小さなプラスボタンをクリックして、新しいチャンネルを作成しましょう。

image:https://assets.digitalocean.com/articles/rocket_chat/2eCYawM.png [新しいチャンネルを作成]

好きな名前を付けてください:

image:https://assets.digitalocean.com/articles/rocket_chat/bLTOD84.png [ここに画像の説明を入力]

[保存]をクリックすると、新しいチャンネルが表示されます。

管理インターフェイスにアクセスするには、ユーザー名の横にある小さな矢印をクリックします。 メニューをプルダウンします:

image:https://assets.digitalocean.com/articles/rocket_chat/54LxGdj.png [このメニューを使用して、ステータスを設定したり、[管理]メニューなどにアクセスしたりできます。]

*管理*をクリックします。 2番目のメニューが表示されます。

image:https://assets.digitalocean.com/articles/rocket_chat/LPrzgYZ.png [これは管理メニューです。]

このメニューを使用して、Rocket.Chatインストールのあらゆる側面を構成および管理できます。 * Users *セクションでは、個々のユーザーの権限を管理したり、新しいユーザーを招待したりできます。 * Integrations *ビューを使用して、インストールに機能を追加することもできます。

結論

おめでとうございます。 これで、Ubuntu 14.04サーバー上で実行されるRocket.Chatという自分とチーム用の独自のチャットソリューションができました。 `+ forever-service +`を使用してブート時に自動的に起動するように設定されており、Nginxリバースプロキシを使用したSSLを完全に装備しています。 メンバーを追加したり、チャネルを作成したり、[管理]メニューの[統合]セクションを確認したりすることができます。 楽しむ!