LoginSignup
3
2

More than 5 years have passed since last update.

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

Posted at

一番下にビルドしたバイナリの配布サイトを記載しています。
手っ取り早く使いたい方は、そちらをどうぞ

社内でビジネス向けチャットを導入したいと考え、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 を条件にご利用ください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2