前回、Zulipのホスティングを試してみました。
今回はUbuntu Server 22.04にZulip5.6をインストールしてセルフホスティングをやってみたいと思います。
なお、本記事は検証環境のため最低限の設定のみを行っています。
前提条件
Zulipのセルフホスティンを行うサーバのスペックは以下の通りです。
ZulipはDockerイメージも公開しているため、より簡単に検証を行いたい場合はDockerイメージによる構築を行ったほうが楽かもしれません。
- OS : Ubuntu Server 22.04
- CPU : 2vCPU
- MEM : 4GB
- DISK : 60GB
- Zulip Version : 5.6
Zulipセルフホスティングのシステム要件
- OS : Ubuntu 20.04、Ubuntu 22.04、Debian 11
- CPU : x86_64bitプロセッサ、ARM64プロセッサ
- MEM : 2GB以上(100名以上の場合は4GB以上) ※インストール時にチェックされるため、必須。
- DISK : 10GB以上のディスク
- DNS : DNSサーバによる名前解決が可能なこと
- SMTP : SMTPによるメール送信可能なメールサーバ ※今回は設定しません
システム要件的にはそこまでスペックは必要ありません。
検証環境時にHyper-Vの動的メモリを使用していたら、サーバのメモリが2GB以下のメモリしか割り当てられていなかったため、インストール時にエラーとして出力されました。
また、Zulipのセルフホスティングでは、Certbotを使用して自動的にSSL証明書を取得してHTTPSでの通信ができますが、今回はローカルドメインのため使用しません。
Zulip インストール
ZulipをUbuntu Server 22.04にSSHを行いZulipをインストールしていきます。
なお、事前にUbuntuのアップデートを行っておきます。
Zulipをインストールする前に、以下のコマンドを使用して[universe]というリポジトリを追加していきます。
willserver@dev-zulip:~$ sudo add-apt-repository universe
Adding component(s) 'universe' to all repositories.
Press [ENTER] to continue or Ctrl-c to cancel.
Hit:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Get:4 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 324 kB in 0s (1,170 kB/s)
Reading package lists... Done
willserver@dev-zulip:~$
universeのレポジトリを追加できたら、以下のコマンドを実行して、Zulip本体をダウンロードしていきます。
willserver@dev-zulip:~$ curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 90.0M 100 90.0M 0 0 9.7M 0 0:00:09 0:00:09 --:--:-- 11.1M
willserver@dev-zulip:~$
ダウンロードが完了したら、以下のコマンドを実行してダウンロードしたファイルを解凍します。
willserver@dev-zulip:~$ tar -xf zulip-server-latest.tar.gz
willserver@dev-zulip:~$ ls
zulip-server-5.6 zulip-server-latest.tar.gz
willserver@dev-zulip:~$
解凍が完了したら、Zulipをインストールしていくのですが、ZulipでCertbotを使用する場合と、自己証明書を使用する場合でインストールするオプションが異なります。
./zulip-server-*/scripts/setup/install --certbot --email=<自分自身のメールアドレス> --hostname=<ServerのFQDN>
#外部公開し、Certbotを使用する場合には、[--certbot]オプションを指定する。
./zulip-server-*/scripts/setup/install --self-signed-cert --hostname=<ServerのFQDN> --email=<自分自身のメールアドレス>
#自己証明書を使用する場合は、[--self-signed-cert]を指定する。
なお、certbotを使用する場合には、公開するサーバのFQDNがレジストラに登録されており、外部から名前解決ができる必要があり、なおかつZulipサーバに直接アクセスできることが条件となります。
リバースプロキシ配下での運用やバーチャルホストでの運用の場合はどのような挙動になるかわかりません。
今回は自己証明書を使用するため、以下のコマンドを実行してZulipをインストールしていきます。
root@dev-zulip:~# ./zulip-server-*/scripts/setup/install --self-signed-cert --hostname=<ServerのFQDN> --email=<自分自身のメールアドレス>
インストール時に躓いたのですが、[–email]のオプションは必須となります。
ここでのemailはSMTPサーバのアドレスではなく、サーバの状態を送信するための管理者用のメールアドレスのようです。このオプションが指定されていない場合、インストールエラーとなりインストールできませんでした。
コマンド実行後は、そこそこ時間がかかるため、インストールが完了するまで待機します。
process-fts-updates: started
2022-09-08 17:05:42,439 restart-server: Done!
Zulip started successfully!
+ set +x
+ su zulip -c '/home/zulip/deployments/current/manage.py generate_realm_creation_link'
Please visit the following secure single-use link to register your
new Zulip organization:
https://<サーバのFQDN>/new/<ランダムな文字列>
root@dev-zulip:/home/willserver#
インストール完了後、初回セットアップに必要なURLが表示されます。
このアドレスをコピーしておきます。
初回セットアップ用のURLからZulipの初期設定を行いますが、もしURLを紛失したり、初回セットアップ時に失敗(ページを閉じたりした場合)は、再度インストールを行うことで初回セットアップに必要なURLが再度表示されます。
以上でZulipのインストールは完了です。
Zulip初回セットアップ
サーバにZulipがインストールできたら、初回セットアップを行います。
ブラウザより初回セットアップ用に発行されたURLにアクセスします。
[新しいZulip組織を作成]より、管理者用のメールアドレスを入力して、[組織を作成]を選択します。
[組織を作成]より、以下の設定を行います。
- 組織名 : 任意の組織名を設定
- Organization type : 任意の組織タイプを設定
- 組織のURL : ■
設定の完了後、下にスクロールしてアカウントの設定を行います。
[アカウント]より、以下の設定を行います。
- フルネーム : 自身の名前を設定
- パスワード : アカウントに対するパスワードを設定
設定の完了後、[登録]を選択し、登録を完了させます。
Zulipにログインし、メッセージが投稿できる状態になったらZulipの初回セットアップは完了です。
まとめ
今回はZulipのセルフホスティングをやってみました。
Uubntu Server 22.04に対し、少しのコマンドで実行まで行うことができました。
残作業としては、SMTPサーバの設定と公開場所の選定、SMTPサーバの設定と運用設計が必要になると思います。
Slackの代替ツールとしてZulipを挙げたうえで、セルフホスティングの検証を行いましたが、実際のところチャットツールについては、在宅勤務の機会が増え割と生命線となっていることが多いことから、ホスティング業者による運用がされているほうが社内の工数も減り良いような気がします。
どちらかというと、ホスティング業者の大規模障害なども近年多くなってきているため、Slackしか使わないやZulipしか使わないという方針にするのではなく、複数のツールを導入したうえで、メインはこっち、サブはこっちといった冗長構成をとることをお勧めします。
SlackやZulipの障害時に陸の孤島とならないように、最低限代替連絡が使えるものも採用しておくとよいと思いました。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント