Mattermostをローカルでビルドする
Mattermostとは
Slackのオープンソースバージョンのようなもので、UIや機能も非常にSlackに近いです。
ビルドの手順
ここからは、実際にMattermostのGitHubのソースコードを使ってローカルでビルドする手順を書いて行きます。
1. リポジトリをforkしてcloneする
以下のmattermost
のリポジトリに移動して、fork
ボタンを押します。
すると自分のワークスペースにリポジトリが複製されるので、それをローカルにcloneします。
$ git clone https://github.com/<your_username>/mattermost
2. ローカルにサーバーをたてる
ここからは、公式ドキュメントのcontributeページを参考にしながら進めます。
まずはアプリケーションをホスティングするためにサーバーを立てる必要があります。(多分メッセージとかを保存したりするために必要)
公式docでは開発環境の構築のページに記載されていました。
以下macOSでの設定手順です
1. makeをinstallする
$ npm install make
2. Dockerをinstallする
ローカルで仮想サーバーを立ち上げるのにDocker
を使用します。なお公式docにはDocker
を使用しない方法も書いてありました。(今回は大人しくDocker
を使いました)
3. Goをinstallする
普通にbrew
をパッケージマネージャーとして使っている場合はbrew
でinstallできました。
$ brew install go
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
webapp
フォルダでNode.jsをinstallする
7. cloneしたフォルダ内のもし、Node.js
のバージョン管理ツールであるnvm
をインストールしていない場合は以下からインストールしておく必要があります。
バージョンについては以下の指示に従ってください。
$ 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
します。
2. ビルドしてアプリを起動する
基本的には、以下のCLIリファレンスを参照しながら進めれば大丈夫です。
- 必要なモジュールをインストールする
$ npm install
- ビルドする
$ npm run build
- アプリを起動する
$ npm start
アプリが起動するとサーバーのURLの入力が求められるので、先ほどのサーバーのURLである。http://localhost:8065
を入力して接続すれば、無事アプリが利用できます。
Discussion