TOP ▲ itcore TOPTIPSrocketchat.php

RocketChat in CentOS7 インストール| itcore 2017年

CentOS7 MongoDB他 RocketChat 管理者 クローズド SSL化 日本語 smtp ユーザ追加 room追加

CentOS7

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

エンタープライズ Linux 用の拡張パッケージ
EPEL(Extra Packages for Enterprise Linux)のリポジトリをインストールします。
# yum -y install epel-release

ソフトウェアをアップデートします。
# yum clean all; yum -y update

MongoDB他

MongoDBのリポジトリファイルを作成します。
# vi /etc/yum.repos.d/mongodb.repo
以下を記述
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

node.js, mongodbなどをインストール
# yum install -y nodejs curl GraphicsMagick npm mongodb-org-server mongodb-org gcc-c++
# npm install -g inherits n

RocketChatが使うNode.jsの推奨バージョンをインストールします。 最新状況確認(「recommended」を検索)
# n 4.8.4

RocketChat

RocketChatをインストールします。
# cd /opt
# curl -L https://download.rocket.chat/stable -o rocket.chat.tgz
# tar zxvf rocket.chat.tgz
# mv bundle Rocket.Chat
# cd Rocket.Chat/programs/server
# npm install
# cd ../..
# vi rocketchat.env
以下を入力
PORT=3000
ROOT_URL=http://[host or IP]:3000/
MONGO_URL=mongodb://localhost:27017/rocketchat

MongoDBを起動します。
# systemctl start mongod
# chkconfig mongod on

Rocket.Chatサービスを作成します。
# vi /usr/lib/systemd/system/rocketchat.service
以下を入力
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
EnvironmentFile=/opt/Rocket.Chat/rocketchat.env
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=root
[Install]
WantedBy=multi-user.target

# systemctl enable rocketchat.service
# systemctl start rocketchat.service
# systemctl status rocketchat
抜粋
Active: active (running) since 火 2017-10-31 15:44:55 JST; 5s ago

ファイアウォール 3000番ポートを開放します。
# firewall-cmd --add-port=3000/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
抜粋
ports: 3000/tcp

Rocket.Chatにアクセス
http://[host or ip]:3000



再起動して自動的に立ち上がるか確認
shutdown -r now

管理者

最初にアカウントを作成した人が管理者となります。
もし管理者がいなくなってしまったら、環境設定ファイルに指定することで管理者を作成することができます。
ドキュメント

# vi rocketchat.env
以下を追加
ADMIN_USERNAME=admin
ADMIN_PASS=supersecret
ADMIN_EMAIL=admin@example.com

クローズド

誰もがアカウントを作れるのではなく、 管理者の方でアカウントを作るようにする。

管理者でログイン


左上のメニューから管理をクリック


左メニューのアカウントをクリックして、 一番下にある「Registration」の「EXPAND」をクリックして開く。


「登録フォームへのアクセス」を非公開にする。
「登録フォームの非公開URL」に任意の文字列を入れる。
右上の「変更を保存」をクリック

SSL化

SSLでアクセスできるようにする。

まず、ApacheとSSLをインストールする。
Apacheと無料SSLのインストール

Apacheにリバースプロキシを設定する。
# cd /etc/httpd/conf.d
# cp -ip ssl.conf ssl.conf_`date "+%Y%m%d"`
# vi ssl.conf
VirtualHostの最後に追加
<VirtualHost _default_:443>
  # Rochet.Chat
  SSLOptions +StrictRequire
  ProxyPreserveHost On
  ProxyPass /websocket ws://localhost:3000/websocket
  ProxyPassMatch ^/sockjs/(.*)/websocket ws://localhost:3000/sockjs/$1/websocket
  ProxyRequests Off
  ProxyPass / http://127.0.0.1:3000/
  ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

# systemctl reload httpd

https://chat.itcore.jp/
もしSELinuxが有効になっていると以下のエラーがでるので、そのときは無効化する。 selinux設定
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

エラーログ
tail /var/log/httpd/ssl_error_log
[Wed Nov 01 17:03:20.012215 2017] [proxy:error] [pid 10501] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:3000 (127.0.0.1) failed
[Wed Nov 01 17:03:20.012313 2017] [proxy:error] [pid 10501] AH00959: ap_proxy_connect_backend disabling worker for (127.0.0.1) for 60s
[Wed Nov 01 17:03:20.012328 2017] [proxy_http:error] [pid 10501] [client 182.171.225.60:50721] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
[root@centos7 httpd]#

https://chat.itcore.jp/

無事SSL化されました。

日本語


管理>全般>言語>日本語

デフォルトだとルーム名を日本語にできない。

管理>全般>UTF8>EXPAND>UTF8形式名の検証パターン
変更前 [0-9a-zA-Z-_.]+
変更後 [ぁ-んァ-ヶーa-zA-Z0-9一-龠0-9-、。_.]+


ルーム名に日本語が使えるようになった。

smtp


管理>メール>SMTP>EXPAND

ユーザ追加


管理>ユーザー>右上の+

ルーム追加


検索ボックス右の+