動機 #
安心な環境で会話したいのでチャットのセルフホストを試したくなった。
選択肢を探している際にいくつか有力そうなソフトウェア、サービスを見つけたので紹介していきます。
Slack #
🔗https://slack.com/intl/ja-jp/
企業等ではお馴染み。
良い点 #
- 企業の製品なので機能が豊富で品質やサポートも期待できる
- 通話、画面共有付き
- Windows, macOS, Linux, Android, iOS, webブラウザから利用できる
悪い点 #
- 大人数で有料版を使うことを考えると高い
- 無料版では機能に制限がある (まああたりまえだが)
- ソースコードが公開されていない セルフホストできない
- 若干UIの動作がもっさりしている
🔗値段、機能についてはこちらを確認してください。
お金のある企業や無料版の機能だけで問題ない企業であれば悪くないと思います。
どの環境からでも利用できるのが大きいですね。
個人利用ではおすすめしません。
XMPP #
🔗https://xmpp.org/
正確にはXMPPはソフトの名前ではなくて規格の名称です。
XMPPの機能を実装しているサーバー、クライアント一覧は 🔗こちら から確認できます。
サーバーは🔗ejabberdがスタンダードな選択肢なようです。
良い点 #
- 規格、ソースコードが公開されている
- セルフホストできる
- ホストサービス等も存在する (🔗無料のホストも存在するようです。 信頼性が問題ですが。)
- クライアントが豊富に開発されているので恐らく一般的な環境であればサポートされているクライアントが見つかる
悪い点 #
- 規格が大きく機能が複雑すぎるので管理、設定のコストが高い (自分は把握できておらず、管理できる気がしなかった。)
管理する時間、気力があるのであれば良い選択肢だと思います。
Matrix #
MatrixもXMPPと同様ソフトの名前ではなく、規格の名称です。
サーバーはソフトウェア一覧は🔗こちらです。
Python製の🔗Synapseがスタンダードなようです。
良い点 #
- 規格ソースコードが公開されている
- セルフホストできる
- ホストサービスが存在する(🔗https://matrix.org/ecosystem/hosting/)
- クライアントが豊富(🔗https://matrix.org/ecosystem/clients/)
悪い点 #
- XMPPと同様
Telegram #
🔗https://telegram.org/
匿名性やセキュリティを売りにしたチャットアプリ。
テレビのニュースによると、フィジカル系犯罪者にも人気らしい。
良い点 #
利用していないので分からない。
悪い点 #
Sponsored Message
という広告がついている- セルフホストできない
- ソースコードが公開されていないのでサーバーで何をやっているのか分からない
- 電話番号必須
個人的には使いたくないです。
Signal #
🔗https://signal.org/#signal
(サーバー、クライアントの両方が)オープンソースのチャットアプリ。
良い点 #
- ソースコードが公開されている セルフホストできる
- Android, iOS, Windows, Mac, Linux用のクライアントが開発されている
- 🔗通話、ビデオ通話もセルフホストで利用できる
悪い点 #
- 比較的新しいので多くの人に利用されてテストされていない
- ユーザー登録に電話番号が必要?
- 🔗デスクトップクライアントの利用にスマホが必要
パット見良さそうですが認証とかを簡単にするために電話番号を使っているようです。
小さい会社や現実の知り合いとのやりとりには良さそうですね。
新しいので完成度は低いかもしれません。
Skype #
🔗https://www.skype.com/ja/ 昔は人気だったらしいです。
良い点 #
- スマホ、Windows, ブラウザから利用できる
- 無料
悪い点 #
- IPGrabberなどでIPを抜かれたりする
- ソースコードが公開されていないのでデータがどう扱われているのかどうか分からない
Discord #
良い点 #
- 機能が豊富
- 無料で使える
悪い点 #
- 一部機能は有料
- ソースコードが公開されていない
discordの情報収集 #
🔗https://discord.com/privacy によると
- IPアドレス
- デバイスのID等
- email address
- ユーザーが送信した全てのテキストメッセージ, 画像, VOIPデータ(通話)
等の情報が収集されている。
収集された情報は広告、宣伝目的にも利用されるようだ。(具体的なプラットフォームや宣伝内容、対象が書かれていない)
To advertise our services on Discord and other platforms
Revolt #
discordのクローンと呼ばれている。
サーバー周りはRust言語で書かれている。
良い点 #
- ソースコードが公開されている(🔗https://github.com/revoltchat)
- discordにそっくりなので一般ユーザーを巻き込みやすい
- セルフホストできる
悪い点 #
- 比較的新しいので長期間試されていない(≒バグが多い、不安定)
- 機能が豊富であるがゆえに大人数だと管理やサーバーコストが高そう
今後に期待。
Mattermost #
デスクトップからの見た目はこんな感じ。 Themeである程度見た目を変えられる。
良い点 #
- ソースコードが公開されている
- セルフホストで通話、画面共有を利用できる(🔗https://docs.mattermost.com/collaborate/make-calls.html, 🔗Callというプラグインで実装されています。)
- SystemConsoleがあって管理がしやすい
- Webブラウザ、Android, iOS, macOS, Windows, Linuxから利用できる(🔗https://mattermost.com/apps/)
悪い点 #
- 一部オプションが有料プランのみ(個人利用では必要ない機能)
Callプラグインが外部サービスに頼らずにサーバーだけで動くのが目玉です。
無料版でも個人利用では十分な機能が提供されています。
よって個人利用ではおすすめです。
🔗mmctl からユーザー作成する際にメアドをダミーで認証済みにすることができます。 知らない人がアカウント作成できないようにアカウント作成を無効にすることもできます。
特に人の多い企業や色々な組織の人間が利用する場合では有料機能が欲しくなってくるかもしれません。
セルフホストで機密を自分で管理できるので、海外の某セキュリティ系企業ではMattermostを採用しているようです。
無料版でもサーバーのリソースが許す限り同時通話もユーザー作成も無制限にできます。
管理者はWebやDesktopクライアントで開けるSystemConsoleから基本的な設定を行うことができます。
ユーザー数とサーバーのスペックの目安は
1 ~ 1000 ユーザーで 1 vCPU/cores, 2 GB RAM
1000 ~ 2000 ユーザーで 2 vCPUs/cores, 4 GB RAM
だそうです。
GCがありつつもネイティブなGo言語実装なこともあり素晴らしい性能ですね!
負荷のシミュレーションもできるようです。
2000人以上の場合はシミュレーションを行うことが推奨されています。
🔗https://docs.mattermost.com/install/software-hardware-requirements.html#hardware-requirements
🔗https://github.com/mattermost/mattermost-load-test-ng
また、企業向けですが、ユーザー数が多い場合はクラスタ構築したりすることも可能なようです。 🔗https://docs.mattermost.com/scale/scaling-for-enterprise.html#multi-machine-deployment
IRC #
インターネットリレーチャット。
良くも悪くもシンプル。
良い点 #
- 長年使われ続けていたので情報が多い
- サーバー、クライアント共に豊富な実装が存在する
悪い点 #
- 通話がない
- 古臭い(個人的には好みですが)
通話をしたい場合は🔗Mumble(C++実装の通話アプリ)のサーバーも一緒に立てる方法があります。
Mumbleの方にそれなりのチャットが実装されて欲しいですね。
IRCサーバー #
🔗ircstatsの統計によると、2022年に一番使用率の高いIRCサーバー実装は🔗<code>UnrealIRCd</code>でした。
UnrealIRcdのソースはこちら 🔗https://github.com/unrealircd/unrealircd
次に利用率が高かったのは🔗<code>InspIRCd</code>でした。
InspIRCdのソースはこちら 🔗https://github.com/inspircd/inspircd
先程の統計によると、UnrealIRcdのシェアが減ってきているのに対してInspIRCdは少しずつシェアが上がってきています。
サーバー公開する場合はTLS暗号化はもちろん、ドキュメントを読みセキュリティに関する設定を徹底しておきましょう。
UnrealIRCd
がC言語実装で、InspIRCd
がC++実装です。
結論 #
企業ならSlack or Mattermost。
個人なら Mattermost or IRCですかね。
通話、画面共有が必要、または機能がある程度豊富なほうが良い場合はMattermost。
通話が不要でコミュニケーションに最低限の機能のみを求める場合はIRC。
XMPP/Matrixは人気ですが、上述の通り、管理コストが問題になってきます。
Mattermostはオープンソースではありますが、企業の製品でもあるのでサーバー, DBのバージョンアップなどの管理もかなり容易です。
サーバーのバージョンのサポート期間も明確です。
自分はIRCを使いたかったが、通話が必要だったのでMattermostをセルフホストして運用している。
ホストにはさくらVPSを利用しています。
このブログも2023年11月現在、さくらインターネットのサービスであるさくらレンタルサーバーを利用しています。 🔗関連記事
これを機にセルフホストに挑戦してみてはいかがでしょうか?