Posted at

Mattermost 5をFreeBSDでも動くようにしてみた

More than 1 year has passed since last update.

一番下にビルドしたバイナリの配布サイトを記載しています。

手っ取り早く使いたい方は、そちらをどうぞ

社内でビジネス向けチャットを導入したいと考え、Mattermostを動かしてみることにしました。

個人的な要件的には、次のような感じ


  • FreeBSDで動くこと

  • KeycloakでSSOが出来ること


    • これはそのうち別記事で書きます。



RocketChatも試したけど、meteorがそもそもFreeBSDで動かないようなので、諦めました。

ちなみに、Mattermost 4系はFreeBSDのpkgにありましたが、どうせ使うなら新しいものを。


FreeBSDで動くようにコンパイルする


環境の準備


  • OS


    • FreeBSD 11.2R(amd64)



Git/Go/gmake/zipをpkgから導入します。

# pkg install git go gmake zip


Mattermostのビルド

本来は、Webappもgitから落とすのが良いのですが、FreeBSDだとnpmの関係でWebappのビルドに失敗するため、

配布されているパッケージからWebapp部分だけ抜き出します。

パッチはFreeBSD向けのバイナリを作るためのパッチです。

$ mkdir -p ~/go/src/github.com/mattermost

$ cd ~/go/src/github.com/mattermost
$ git clone https://github.com/mattermost/mattermost-server.git
$ cd mattermost-server
$ git checkout remotes/origin/release-5.1
$ fetch https://github.com/tatsuyaueda/mattermost-server/commit/bf98b63c875467e93225c4e5d93417d2db217031.patch
$ patch < bf98b63c875467e93225c4e5d93417d2db217031.patch
$ export BUILD_NUMBER=5.1.0-unofficial
$ gmake build
$ gmake config-reset
$ mkdir -p ~/go/src/github.com/mattermost/mattermost-webapp/
$ mkdir -p ~/temp
$ cd ~/temp
$ fetch https://releases.mattermost.com/5.1.0/mattermost-team-5.1.0-linux-amd64.tar.gz
$ tar xvzf mattermost-team-5.1.0-linux-amd64.tar.gz
$ mkdir -p ~/go/src/github.com/mattermost/mattermost-webapp/dist/
$ cp -Rp ./mattermost/client/* ~/go/src/github.com/mattermost/mattermost-webapp/dist/
$ cd ~/go/src/github.com/mattermost/mattermost-server
$ gmake package

ここまでの操作でバイナリが生成されます。

$ ls  ~/go/src/github.com/mattermost/mattermost-server/dist

mattermost mattermost-team-linux-amd64.tar.gz mattermost-team-windows-amd64.zip
mattermost-team-freebsd-amd64.tar.gz mattermost-team-osx-amd64.tar.gz


こんな面倒なことをしなくても、、AWS CodeBuildでビルドする

上記の方法で、とりあえずFreeBSDで動くMattermostがビルドできますが、Mattermostのリリースは

月に1回行われており、それに追従にするにはちょっと面倒なので、AWS CodeBuildを使って、楽をします。

ビルドにUbuntuを利用しているため、Webapp部分もちゃんとビルド出来ます。

ソースコードのリポジトリはFreeBSD向けのバイナリをビルドするパッチを含んだリポジトリを、

本家からforkして作ったため、こちらを使ってください。


buildspec.yml

version: 0.2

env:
variables:
SRC_DIR_SERVER: src/github.com/mattermost/mattermost-server
SRC_DIR_WEBAPP: src/github.com/mattermost/mattermost-webapp
BASE_VERSION: v5.1.0

phases:
install:
commands:
- apt-get update
- apt-get install -y build-essential npm golang zip libpng-dev git rename
- npm install npm@latest -g
- export BUILD_NUMBER=${BASE_VERSION}-unofficial && echo ${BUILD_NUMBER}
- export GOPATH=${HOME}/go && echo ${GOPATH}
- export PATH=/usr/local/go/bin:${GOPATH}/bin:${PATH} && echo ${PATH}
- type go && go version
pre_build:
commands:
- mkdir -p ${GOPATH}/${SRC_DIR_SERVER} && cd ${GOPATH}/${SRC_DIR_SERVER}
- mv ${CODEBUILD_SRC_DIR}/* ${CODEBUILD_SRC_DIR}/.??* .
- mkdir -p ${GOPATH}/${SRC_DIR_WEBAPP} && cd ${GOPATH}/${SRC_DIR_WEBAPP}/..
- git clone https://github.com/mattermost/mattermost-webapp.git
- cd ${GOPATH}/${SRC_DIR_WEBAPP}
- git checkout refs/tags/${BASE_VERSION}
build:
commands:
- cd ${GOPATH}/${SRC_DIR_SERVER}
- echo Build started on `date`
- echo Compiling the Go code...
- make build
- make build-client
- make config-reset
- make package
post_build:
commands:
- rename 's/mattermost-team-(.+)/mattermost-team-$ENV{BUILD_NUMBER}-$1/' dist/*
- ls ./dist/
- echo Build completed on `date`
artifacts:
files:
- 'dist/*'
base-directory: ${GOPATH}/${SRC_DIR_SERVER}
discard-paths: yes



ビルドしたバイナリを配布しています

ただFreeBSDで使いたいという方は、手っ取り早くAWS CodeBuildでビルドしたバイナリを、

次のURLで配布しているため。こちらをご利用ください。

配布ページにも記載していますが、本バイナリは at your own risk を条件にご利用ください。