テクノロジーガイド

Ubuntu 16.04 に Rocket.Chat と Nginx でプライベートチャットサーバを構築する完全ガイド

3 min read インフラ 更新されました 21 Oct 2025
Ubuntu 16.04でRocket.ChatをNginxで公開する手順
Ubuntu 16.04でRocket.ChatをNginxで公開する手順

この記事の目的と想定する検索クエリ

  • 目的: Ubuntu 16.04 上で Rocket.Chat を手動でインストールし、Nginx を使って HTTPS 化する手順を理解して実装できるようにすること。
  • 想定する検索クエリ例: Rocket.Chat インストール、Ubuntu 16.04 Rocket.Chat、Rocket.Chat Nginx リバースプロキシ、MongoDB レプリカセット Rocket.Chat、Node.js 4.5 Rocket.Chat

重要な用語(1行定義)

  • Rocket.Chat: 自社ホスト可能なオープンソースのチャット/コラボレーションプラットフォーム。
  • Meteor: JavaScript ベースのフルスタック開発フレームワーク(Rocket.Chat の基盤)。
  • MongoDB レプリカセット: 高可用性のための MongoDB の複数ノード構成。
  • Nginx: 高性能なリバースプロキシ兼 Web サーバ。

前提条件

  • Ubuntu 16.04(LTS)サーバ
  • root 権限(または sudo 実行可能なユーザ)

手順概要

  1. 依存パッケージのインストール
  2. MongoDB のインストール
  3. MongoDB レプリカセットの設定
  4. Node.js と npm のインストール(node 4.5 指定)
  5. Rocket.Chat のダウンロードと起動
  6. Nginx のインストールと HTTPS リバースプロキシ設定
  7. 動作確認と初期管理者アカウント作成

ステップ 1 - Rocket.Chat の依存パッケージをインストール

サーバに SSH 接続して root に切り替えます。

ssh [email protected]
sudo su

パッケージリストを更新します。

apt-get update

Rocket.Chat が必要とする基本パッケージをインストールします。

apt-get install curl graphicsmagick build-essential

重要: インストール中の出力にエラーが出たらそのメッセージを確認し、ネットワークやリポジトリ設定を確認してください。

ステップ 2 - MongoDB をインストール

Rocket.Chat は MongoDB をデータストアとして使用します。本手順では MongoDB 3.2 を公式リポジトリから導入します。

まず鍵サーバを追加します。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

MongoDB リポジトリを追加します(lsb_release -sc はディストリビューションコード名を返します)。

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

リポジトリを更新して MongoDB をインストールします。

apt-get update
apt-get install mongodb-org

システム起動時に MongoDB を有効化し、起動します。

systemctl enable mongod
systemctl start mongod

MongoDB はデフォルトでポート 27017 で待ち受けます。

ステップ 3 - MongoDB レプリカセットの設定

Rocket.Chat のパフォーマンスとデータ整合性を高めるために、レプリカセットを利用します。ここでは単一ノードの簡易レプリカセットを構成します(実運用では複数ノード構成を推奨)。

mongod の設定ファイルを編集します。

vim /etc/mongod.conf

設定の例として、ローカルバインドを解除するために bindIp 行をコメント化し、replication セクションを追加します。

net:
    port: 27017
    #bindIp: 127.0.0.1

#replication:
replication:
   oplogSizeMB: 1
   replSetName: rs0

ファイルを保存して終了後、MongoDB を再起動します。

systemctl restart mongod

MongoDB シェルからレプリカセットを初期化します。

export LC_ALL=C
mongo
rs.initiate()

期待される応答の一部例:

{
  "info2" : "no configuration specified. Using a default configuration for the set",
  "me" : "nyanko-sensei:27017",
  "ok" : 1
}

ok の値が 1 であることを確認します。異なる場合はログを確認して原因を特定してください。

MongoDB レプリカセットを構成するスクリーンショット

注: 本手順は単一ノードの簡易レプリカセットの構成方法です。実運用では複数サーバにまたがるレプリカセットを構成して冗長化してください。

ステップ 4 - npm と nodejs をインストール

Rocket.Chat の動作には特定バージョンの Node.js が必要です(当時の最新版は Node.js 4.5 を推奨)。まず apt から nodejs と npm を入れ、その後 npm で n パッケージを使って 4.5 をセットします。

apt-get install nodejs npm

グローバルに n をインストールします。

npm install -g n

n を使って Node.js 4.5 をインストール/切り替えます。

sudo n 4.5

バージョンを確認します。

node --version
npm -v

n コマンドで Node.js バージョンを管理しているスクリーンショット

注意: 現在の Rocket.Chat の要件は将来変わります。公式ドキュメントで必要な Node.js バージョンを確認してください。

ステップ 5 - Rocket.Chat サーバをインストール

/var/www/ 配下に Rocket.Chat を展開します。

最新リリースをダウンロードして展開します。

curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
tar -xzvf rocket.chat.tgz

ディレクトリを作成して bundle を移動します。

mkdir -p /var/www/
mv bundle Rocket.Chat
mv Rocket.Chat /var/www/

Rocket.Chat ディレクトリに移動し、依存モジュールをインストールして環境変数を設定し、起動します。ここでは例としてローカルIP 192.168.1.110 を使用しています。実際は自身の環境に合わせて置き換えてください。

cd /var/www/Rocket.Chat/
cd programs/server/
npm install

cd ../../
export ROOT_URL=http://192.168.1.110:3000/
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Ubuntu 16.04 に Rocket.Chat をインストールしているスクリーンショット

起動後、ブラウザで http://192.168.1.110:3000 に接続すると Rocket.Chat の初期画面が表示されます。

Rocket.Chat がインストールされ正常に動作しているスクリーンショット

ステップ 6 - Nginx をリバースプロキシとしてインストールして設定

ここでは Rocket.Chat を HTTPS で公開するために Nginx を導入し、SSL 経由で Rocket.Chat(内部では 3000 ポート)にプロキシします。

Nginx をインストールします。

apt-get install nginx

SSL 用ディレクトリを作成して自己署名証明書を生成します(本番では CA 発行の証明書を利用してください)。

mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/rocket-chat.crt -keyout /etc/nginx/ssl/rocket-chat.key
chmod 400 rocket-chat.key

Nginx の virtual host ファイルを作成します。

cd /etc/nginx/sites-available/
vim rocket-chat

以下を貼り付けます(server_name や proxy_pass は環境に合わせて置換してください)。

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

# Redirect Options
server {
  listen 80;
  server_name rocket-chat.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

# HTTPS Server
server {
    listen 443;
    server_name rocket-chat.co;

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/rocket-chat.crt;
    ssl_certificate_key /etc/nginx/ssl/rocket-chat.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # dont use SSLv3 ref: POODLE

    location / {
        proxy_pass http://192.168.1.110: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_name と proxy_pass 内の IP を必ず置換してください)。

ln -s /etc/nginx/sites-available/rocket-chat /etc/nginx/sites-enabled/rocket-chat
nginx -t

設定ファイルのテストに合格したら Nginx を再起動します。

systemctl restart nginx

注意: 上記設定では自己署名証明書や TLS の最小構成が簡易に示されています。本番環境では最新の TLS 設定(例: TLSv1.2 以上、強力な ciphers)、および Let’s Encrypt などの正式証明書を導入してください。

ステップ 7 - Rocket.Chat のテスト

Nginx を経由する設定に合わせて Rocket.Chat の環境変数を更新して再起動します。

cd /var/www/Rocket.Chat/
export ROOT_URL=https://rocket-chat.co
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Nginx を経由した Rocket.Chat のスクリーンショット

ブラウザで https://rocket-chat.co(または設定したドメイン)にアクセスすると HTTPS にリダイレクトされます。初回アクセス時に「Register a new account(新規アカウント登録)」から管理者アカウントを作成します。

SSL 上で動作する Rocket.Chat のスクリーンショット

登録フォームに名前、メール、パスワードを入力して登録します。

管理者アカウント作成画面のスクリーンショット

サイト URL を確認するダイアログが出たら、新しいドメイン名で問題なければ「Yes」を選択します。

SITE-URL を確認するダイアログのスクリーンショット

ユーザー名を確定すると管理者アカウントが作成され、ダッシュボードが表示されます。チャネルを作成してチームで利用を開始してください。

Rocket.Chat ダッシュボードのスクリーンショット

環境変数更新後の結果サンプル:

環境変数更新の結果スクリーンショット


よくあるトラブルと対処(トラブルシューティング)

  • MongoDB に接続できない: MONGO_URL のホスト名/IP と replSet 名を確認し、mongod が起動しているか systemctl status mongod で確認します。ファイアウォールで 27017 が閉じていないかもチェック。
  • Node.js バージョン不一致: Rocket.Chat が要求する Node.js バージョンを満たしているか確認してください。node –version で確認し、n で切り替えます。
  • Nginx 経由で接続できない: nginx -t で設定の構文チェック、systemctl status nginx でエラーを確認。proxy_pass の URL と server_name を再確認。
  • WebSocket(リアルタイム通信)が動かない: Nginx 設定で Upgrade ヘッダや Connection ブロックが設定されているか確認します(本手順の設定を参照)。

代替アプローチ

  • Docker コンテナを使う: Rocket.Chat 公式の Docker イメージを利用すると依存関係管理が簡単になります。複数サービスを Docker Compose で管理する方法が一般的です。
  • Snap / パッケージ化された配布を検討: ディストリビューションやバージョンによっては Snap や公式パッケージで簡単に導入できる場合があります。
  • マネージドサービスを利用: 自社運用を避けたい場合は SaaS 型(クラウドホスティング)のチャットサービスを検討してください。

運用チェックリスト(導入後に実施する項目)

  • 本番用の CA 発行証明書を取得して Nginx に設定
  • Firewall で必要なポート(80/443)以外を遮断
  • MongoDB を複数ノードでレプリカセット構成にして冗長化
  • Rocket.Chat の自動起動(systemd ユニット)を作成
  • 定期バックアップをスケジュール(MongoDB のダンプ等)
  • ログの監視とアラート設定(nginx, mongod, rocket.chat)の整備

受け入れ基準

  • サイトに https でアクセスしてログインページが表示される。
  • 管理者アカウントでログイン後、チャネル作成とメッセージ送受信が行える。
  • MongoDB が replicaSet=rs0 で稼働している。

簡易運用手順(SOP)

  1. サービス再起動: systemctl restart mongod nginx && 再起動用に Rocket.Chat を起動しているプロセスを再起動。
  2. バックアップ: mongodump –db rocketchat –out /backup/rocketchat-$(date +%F)
  3. ログ確認: tail -n 200 /var/log/nginx/rocketchat.access.log と Rocket.Chat の標準出力ログを確認。
  4. 緊急ロールバック: 直近の MongoDB ダンプを使って restore し、前バージョンの Rocket.Chat バイナリに戻す。

セキュリティ強化の推奨

  • TLS: TLSv1.2 以上のみ許可し、弱い暗号スイートを無効化する。Let’s Encrypt の利用を推奨。
  • 認証: 管理者アカウントは強力なパスワードと 2 要素認証を有効化する。
  • ネットワーク: 管理ポータルは社内ネットワークまたは VPN 内に限定する。
  • アップデート: Rocket.Chat、Node.js、MongoDB、OS のセキュリティパッチを定期適用する。

マイグレーションと互換性メモ

  • Node.js のメジャーバージョン差は互換性破壊を招くため、Rocket.Chat のリリースノートでサポートバージョンを都度確認する。
  • MongoDB のメジャーバージョンアップはレプリケーションや oplog 動作に影響するため事前検証が必要。

1行用語集

  • ROOT_URL: Rocket.Chat が外部に公開されるルート URL。
  • MONGO_URL: Rocket.Chat が接続する MongoDB の接続文字列。
  • PORT: Rocket.Chat が内部でリッスンするポート番号。

参考


要点のまとめ

  • Rocket.Chat を Ubuntu 16.04 に手動で導入し、MongoDB レプリカセットと Nginx の HTTPS プロキシを設定する手順を示しました。
  • 実運用では MongoDB の複数ノード化、systemd による永続化、証明書の本番導入、監視とバックアップが不可欠です。
  • トラブル時はログとバージョン(Node.js / MongoDB / Rocket.Chat)をまず確認してください。
共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定