念願であったVPS(Virtual Private Server)をついに契約した話は以下に書いたとおりですが、
VPSを契約したもう1つの大きな理由、それは、以前から関心を持っていたビジネスチャットツールの「Mattermost」を使ってみたい・・・、もちろん、みんな大好き、OSS(Open Source Software)です。
関連:社労士がVPSを契約した理由:情報セキュリティ対策と実践的学習

Slackが、今や世界No1のビジネスチャットツールであることに異論はないと思いますが、その代替OSSと言われているのがMattermostです。

※ なお、画像はGitHubのMattermostのページから拝借しました。
Mattermostの特徴は以下のとおりです。
- Slackに代わる次世代の選択肢
- 今や世界標準のビジネスチャットツールの地位となったSlackと同等の操作性と機能を備えつつ、より企業のニーズに特化したビジネスチャットツール。
- 最高水準のセキュリティとデータ管理
- 自社専用サーバーでの運用が可能(オンプレミス:On-Premises)なため、Slackのような外部クラウドではなく、機密情報を自社で完全にコントロール可能。
- コストパフォーマンスと拡張性
- Slackの使い勝手はそのままに、組織に合わせた柔軟なカスタマイズが可能で、大規模な運用でも効率的なチーム連携を実現。


それに、社労士がVPSでMattermostを運用しているって面白くないですか?
日本語検索が効かない問題とその解決
【2026/7/9追記】
導入からしばらく運用していたところ、過去のメッセージを検索してもまったくヒットしないことに気づきました。
チャットツールは検索できてこそ価値があります。備忘録も兼ねて、原因と対処法を簡単に記録しておきます。
症状
一例ではありますが、「Google Meet」という文字列を含むメッセージを投稿していたにもかかわらず、「Google」でも「Meet」でも検索に引っかかりませんでした。日本語も同様です。
原因
以下のようにSQLを用いて調べたところ、Mattermostのデータベース(PostgreSQL)が、検索用の単語分割を正しく行っていませんでした。
SELECT to_tsvector('english', '本日はGoogle Meetですね。承知しました。');
'meetですね':2 '承知しました':3 '本日はgoogl':1
「本日は」と「Google」がくっついて「本日はgoogle」 という1つの単語として扱われています。同様に「Meet」と「ですね」も「meetですね」になっています。
PostgreSQLの標準機能は、日本語と英字の境界を単語の区切りとして認識しません。そのため、インデックスには「本日はgoogl」という語しか存在せず、「google」で検索しても一致していませんでした。
英文の中であれば「Google Meet」は正しく分割されます。日本語に挟まれた瞬間に壊れる、という挙動でした。
つまり「日本語が検索できない」問題と「英単語が検索できない」問題は、同じ原因だったわけです。
対処:Bleveの有効化
Mattermostには、標準の検索機能の代わりに「Bleve」という検索エンジンを使う選択肢があります。BleveはCJK(中国語・日本語・韓国語)に対応しており、日本語と英字の境界を正しく扱います。
設定ファイル「config.json」を以下のように編集します。
"BleveSettings": {
"IndexDir": "/mattermost/bleve-indexes",
"EnableIndexing": true,
"EnableSearching": true,
"EnableAutocomplete": true,
"BatchSize": 10000
},
再起動後、システムコンソール → 環境 → Bleve から「インデックス付与を今すぐ開始する」を実行します。
この工程が最も重要です。設定を有効化しただけでは、過去のメッセージはインデックスされません。
これで「Google Meet」「Meet」「本日」のいずれでも、正しく検索できるようになりました👍
作業時の注意点
- 「config.json」の所有者はコンテナ側のユーザーのため、「sudo」での編集が必要です
- 編集後はJSONが壊れていないか必ず確認します。カンマの過不足でMattermostが起動しなくなります
- 「.env」に「MM_BLEVESETTINGS_*」という環境変数が定義されている場合、そちらが「config.json」より優先されます




