対象OS : Ubuntu Server 16.04.1 LTS, Ubuntu Server 18.04.1 LTS
WebチャットアプリのRocket.Chatはバージョン0.40くらいからsnap1というパッケージシステムでインストールすることができるようになりました。
これにより、DockerやMongoDBの準備なども不要で非常に簡単にインストールができます。
参考:https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps
2018/08/15追記
2018/07/26 に Ubuntu Server 18.04.1 LTS(ubuntu-18.04.1-live-server-amd64.iso) がリリースされたので、こちらにもインストールしてみました。
結論から言うと、なんとOSインストール時に初期インストールできるようになっていました。
ただし、日本語インストールができなくなり、Englishでインストールすると、タイムゾーンがUTCになっているので、インストール後、sudo timedatectl set-timezone Asia/Tokyo
したりする必要があります。
Rocket.Chatの他にもnextcloudやwekan, dockerなどもありました。
事前準備
OSのインストール
以下からUbuntu Server 16.04.1 LTSをダウンロードし、インストールします。
https://www.ubuntu.com/download/server
私はstandard system utilitiesとOpenSSH serverにチェックを入れてインストールしましたが、両方なくてもRocket.Chatはインストール可能です。
最新化
sudo apt-get update && sudo apt-get dist-upgrade -y
その他
ファイアウォールや時刻など必要に応じて導入設定します。
Rocket.Chatのインストール
sudo snap install rocketchat-server
これだけです。
インストール完了後は以下のコマンドでサービスが正常に起動しているか確認します。
# Rocket.Chatのサービス確認
systemctl status snap.rocketchat-server.rocketchat-server.service
# MongoDBのサービス確認
systemctl status snap.rocketchat-server.rocketchat-mongo.service
また、http://<サーバーのIPアドレス>:3000
にアクセスし、ログイン画面が表示されることを確認します。
アップデート
snapは自動アップデート機能があり、現在無効にすることはできません。
新しいバージョンがリリースされると6時間以内に自動アップデートされます。
手動でアップデートする場合は以下のコマンドを実行します。
sudo snap refresh rocketchat-server
snapd 2.31からアップデートの時間指定(refresh.timer)ができるようになったようです。
https://snapdocs.labix.org/configuration-options/87
自動アップデートの無効化については、議論が上がってます。
どうしても自動アップデートを無効にしたい場合、ネットワークレベルでブロックできるかも。(未確認)
https://forum.snapcraft.io/t/disabling-automatic-refresh-for-snap-from-store/707
ロードマップに上がってる Parallel snap installs でバージョン固定機能とか入るといいなぁ。
https://forum.snapcraft.io/t/the-snapd-roadmap/1973
※余談ですが、go の snapのチャンネル構成を見たら(snap info go
)、以下のようになっていました。
channels:
stable: 1.10.3 (2130) 66MB classic
candidate: ↑
beta: 1.11beta2 (2355) 99MB classic
edge: devel-c882f4b (2496) 111MB classic
1.10/stable: 1.10.3 (2130) 66MB classic
1.10/candidate: ↑
1.10/beta: ↑
1.10/edge: ↑
1.11/stable: –
1.11/candidate: –
1.11/beta: 1.11beta2 (2355) 99MB classic
1.11/edge: ↑
1.6/stable: 1.6.4 (122) 49MB classic
1.6/candidate: ↑
1.6/beta: ↑
1.6/edge: ↑
1.7/stable: 1.7.6 (324) 48MB classic
1.7/candidate: ↑
1.7/beta: ↑
1.7/edge: ↑
1.8/stable: 1.8.7 (1407) 51MB classic
1.8/candidate: ↑
1.8/beta: ↑
1.8/edge: ↑
1.9/stable: 1.9.7 (2117) 58MB classic
1.9/candidate: ↑
1.9/beta: ↑
1.9/edge: ↑
このような構成であれば、auto-updateもありがたいかもしれませんが、Rocket.Chatは snap info rocketchat-server
で見たら現在こんな感じ。
channels:
stable: 0.68.3 (1317) 213MB -
candidate: 0.68.3 (1317) 213MB -
beta: ↑
edge: 0.68.3 (1317) 213MB -
今のところ、snapへのバージョンアップは慎重に行ってくれているようですし、snapに変えて1年以上運用していて大きな問題は今のところ遭遇していませんが、たまに BREAKING CHANGES が入ってくるので、ちょっと心配・・・
2020/03/03追記
現在まで特に問題なく安定稼働中。
snapのchannelにtrackが追加されたようです。
https://forums.rocket.chat/t/introducing-snap-tracks/5890
snap info rocketchat-server
で見たら現在は以下のように変わってました。
channels:
stable: 2.4.11 2020-02-28 (1427) 267MB -
candidate: 2.4.11 2020-02-27 (1427) 267MB -
beta: 2.1.1 2019-10-21 (1414) 251MB -
edge: 2.4.11 2020-02-27 (1427) 267MB -
3.x/stable: 3.0.2 2020-02-28 (1428) 272MB -
3.x/candidate: ↑
3.x/beta: ↑
3.x/edge: ↑
2.x/stable: 2.4.11 2020-02-28 (1427) 267MB -
2.x/candidate: 2.4.11 2020-02-28 (1427) 267MB -
2.x/beta: ↑
2.x/edge: ↑
2020/05/13追記
mongodbが起動エラーになる事象発生。
https://open.rocket.chat/channel/ubuntu-snap あたりで情報収集。
https://github.com/RocketChat/Rocket.Chat/issues/17628
snap info rocketchat-server
を確認したところ、2.4.12がinstalledになっていた。
2.4.12 が問題あったようで、latest/stable のバージョンが 2.4.11に巻き戻っている。
これを参考に sudo snap refresh rocketchat-server
して2.4.11になっていることを確認。
運用で気を付けていること
バックアップを取る
毎日バックアップを取っています。
参考:https://qiita.com/bibimarujp/items/3c27b697144d08ec8cef
リリース情報を監視する
以下をRSSに登録してリリース情報を確認しています。
https://github.com/RocketChat/Rocket.Chat/releases.atom
最近のRocket.Chatは月1回メジャーバージョンが上がっています。
snapには翌週以降に上がってきています。
安定しないと上がってこないので、マイナーバージョンが上がってからリリースされたり、メジャーバージョン自体がスキップされることもあります。
open.rocket.chatの情報を確認する
なかなかsnapに上がってこないなー、というときはここを見に行ってみます。
https://open.rocket.chat/channel/ubuntu-snap
サービスが上がってこない場合がある
再起動、バージョンアップ後などにサービスが上がってこない場合があります。
その場合は手動でサービスを上げます。
#mongoが上がらなかった経験は今のところ無いです。
# サービス状態確認
systemctl status snap.rocketchat-server.rocketchat-server.service
# サービス起動
sudo systemctl start snap.rocketchat-server.rocketchat-server.service
# 起動状況確認
journalctl -u snap.rocketchat-server.rocketchat-server.service -f
2018/04/11追記
事象の詳細
ログを確認したところ、以下のような事象でした。
snapアップデート時、まずmongoが再起動開始。
1秒後、serverがサービス停止。ここまで2秒。
その後、serverが6回起動リトライするが、mongoに接続できず。
最後は以下で終了。
snap.rocketchat-server.rocketchat-server.service: Start request repeated too quickly.
Failed to start Service for snap application rocketchat-server.rocketchat-server.
その間22秒。
mobgoは停止開始から停止完了まで6秒、
開始から開始完了まで19秒かかっていた。
対応策1
snap.rocketchat-server.rocketchat-server.service に設定を加えようとしたが、 # Auto-generated, DO NOT EDIT
と書かれていたので、仕方なく、外側から対応。
以下のサービスを追加して様子見。
mongoの起動完了から30秒後にserverを起動させる。
[Unit]
Description=start server 30sec after mongo started
Requires=snap.rocketchat-server.rocketchat-mongo.service
After=snap.rocketchat-server.rocketchat-mongo.service
BindsTo=snap.rocketchat-server.rocketchat-mongo.service
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 30
ExecStart=/bin/systemctl start snap.rocketchat-server.rocketchat-server.service
[Install]
WantedBy=multi-user.target
WantedBy=snap.rocketchat-server.rocketchat-mongo.service
参考:サービスの追加手順は以下。
cd /etc/systemd/system
sudo vi delayed-start-rocketchat-server.service
# 中身記載
sudo systemctl daemon-reload
sudo systemctl enable delayed-start-rocketchat-server.service
2018/06/14追記
対応策2
対応策1でも動作していたが、結構ぎりぎりだったので、mongoが上がってくるまで待つように変更して様子見中。
今のところ、問題なく起動している。
[Unit]
Description=start server after mongo started
Requires=snap.rocketchat-server.rocketchat-mongo.service
After=snap.rocketchat-server.rocketchat-mongo.service
BindsTo=snap.rocketchat-server.rocketchat-mongo.service
[Service]
Type=oneshot
ExecStartPre=/bin/sh -c 'while ! /snap/rocketchat-server/current/bin/mongo --eval "db.version()" > /dev/null 2>&1; do echo "wait...";sleep 1; done'
ExecStart=/bin/systemctl start snap.rocketchat-server.rocketchat-server.service
[Install]
WantedBy=multi-user.target
WantedBy=snap.rocketchat-server.rocketchat-mongo.service
2019/08/13追記
1年経つが、問題なく起動している。
ubuntuサーバーメンテ
/bootの領域が狭い場合、放っておくとディスクフルになってアップデートが面倒になるので、定期的に掃除が必要です。
# 使用量確認
df -h /boot
# linux-image確認
dpkg --get-selections | grep linux-image
# 掃除
sudo apt-get autoremove
使用率が100%になって autoremove ができなくなってしまった場合、
最終手段として、/boot内のファイルを以下のような感じで古いものを手動削除して領域を空けてから autoremove します。
sudo rm linux-image-4.4.0-57-generic
留意事項
- MongoDBのポート番号は27017
- DB名はparties
-
Ubuntu 16.04より新たに導入されたパッケージシステム ↩