😇

Mattermostをローカルでビルドする

2024/10/08に公開

Mattermostとは

Slackのオープンソースバージョンのようなもので、UIや機能も非常にSlackに近いです。

https://mattermost.com/

ビルドの手順

ここからは、実際にMattermostのGitHubのソースコードを使ってローカルでビルドする手順を書いて行きます。

https://github.com/mattermost

1. リポジトリをforkしてcloneする

以下のmattermostのリポジトリに移動して、forkボタンを押します。

すると自分のワークスペースにリポジトリが複製されるので、それをローカルにcloneします。

$ git clone https://github.com/<your_username>/mattermost

2. ローカルにサーバーをたてる

ここからは、公式ドキュメントのcontributeページを参考にしながら進めます。

まずはアプリケーションをホスティングするためにサーバーを立てる必要があります。(多分メッセージとかを保存したりするために必要)

公式docでは開発環境の構築のページに記載されていました。
https://developers.mattermost.com/contribute/developer-setup/

以下macOSでの設定手順です

1. makeをinstallする

$ npm install make

2. Dockerをinstallする

ローカルで仮想サーバーを立ち上げるのにDockerを使用します。なお公式docにはDockerを使用しない方法も書いてありました。(今回は大人しくDockerを使いました)

https://www.docker.com/ja-jp/

3. Goをinstallする

普通にbrewをパッケージマネージャーとして使っている場合はbrewでinstallできました。

$ brew install go

https://go.dev/

4. プロセスで処理できる処理量の上限を開放する

僕も詳しくは分かっていませんが、チャットアプリなどはたくさんのファイルや接続を処理するので、上限を開放してしておく必要があるようです。(詳しくわかる方がいらっしゃいましたら、ぜひ教えてください)

  • 今回のシェルセッションでのみ開放したい場合は、以下のコマンドを実行すれば良いです。
$ ulimit -n 8096
  • 今後もこの設定を適用したい場合は.zshrc.bashrcなどのシェルファイルに設定を書いておく必要があります。
$ nano ~/.zshrc  #.zshrcを編集する
$ source ~/.zshrc  #変更を反映する

5. libpngをinstallする

これも普通にbrewでインストールできました。

$ brew install libpng

6. rosettaをinstallする(オプショナル)

ARMチップのMacの場合libpngを使うためには、rosettaをinstallしておく必要があるようです。

$ softwareupdate --install-rosetta

7. cloneしたフォルダ内のwebappフォルダでNode.jsをinstallする

もし、Node.jsのバージョン管理ツールであるnvmをインストールしていない場合は以下からインストールしておく必要があります。

https://github.com/nvm-sh/nvm

バージョンについては以下の指示に従ってください。
https://github.com/nvm-sh/nvm#installing-and-updating

$ cd webapp
$ nvm install

8. Dockerコンテナを起動してサーバーを立てる

ルートディレクトリに戻って次にserverフォルダに移動してサーバーを立ち上げます。

$ cd ..
$ cd server
$ make run server

例によって最初のコンテナの起動とサーバーの立ち上げにはかなり時間がかかるので、20分ほど待ちましょう。

正しくサーバーが立ち上がれば、次のコマンドにより以下の応答が帰ってきます。

$ curl http://localhost:8065/api/v4/system/ping
{"AndroidLatestVersion":"","AndroidMinVersion":"","DesktopLatestVersion":"","DesktopMinVersion":"","IosLatestVersion":"","IosMinVersion":"","status":"OK"}

3. Desktopアプリをビルドして実際にサーバーに接続する

手順2で立てたローカルサーバーを利用して、実際にmattermostのデスクトップアプリをビルドしてみます。

1. Desktopバージョンをcloneする

以下のmattermost/desktopのリポジトリを先ほどと同様にforkしてcloneします。

https://github.com/mattermost/desktop

2. ビルドしてアプリを起動する

基本的には、以下のCLIリファレンスを参照しながら進めれば大丈夫です。

https://developers.mattermost.com/contribute/more-info/desktop/build-commands/

  • 必要なモジュールをインストールする
$ npm install
  • ビルドする
$ npm run build
  • アプリを起動する
$ npm start

アプリが起動するとサーバーのURLの入力が求められるので、先ほどのサーバーのURLである。http://localhost:8065を入力して接続すれば、無事アプリが利用できます。

Discussion