はじめに
近年はどこもかしこもGithubブームです。
「でもお金が…」
「でもセキュリティが…」
そういう会社さんも少なくないと思います。
(僕もこの経験あります。)
そんな方におすすめはGitlab。
Gitlab自体の導入はこのアドベントカレンダーで他の方が書かれてるので、
僕はGitlabの付属品のMattermostのご紹介です。
Mattermostってなに
MattermostはSlackのクローンみたいなものです。
ほぼSlackと言っても過言ではないレベル。
Slackもセキュリティの面で反発されやすいです。
そんなツールもGitlabに内蔵されているのでぜひ使ってみましょう。
環境
-
CentOS 7.2.1511
-
Gitlab CE Omnibus 8.14.1
【下準備】Gitlabのリンクを変更する。
Gitlabのデフォルトのリンクは http://localhost に設定されています。
もし組織内でサーバーを立ててる場合は変更する必要があります。
例えばサーバーのホスト名が「hogelab.intra」だったとします。
# external_url 'http://localhost'
external_url 'http://hogelab.intra'
このようになります。
このURLは後々使います。
補足
基本的にgitlab.rbを編集したあとは
gitlab-ctl reconfigure
を実行して設定を反映させて下さい。
Mattermostを有効化する
MattermostはGitlab-CEのパッケージに含まれています。
設定は以下の通り。
# mattermost_external_url 'http://mattermost.example.com'
mattermost_external_url 'http://mattermost.example.com'
# mattermost['enable'] = false
mattermost['enable'] = true
# mattermost['service_address'] = "127.0.0.1"
mattermost['service_address'] = "0.0.0.0"
ただ動かすだけならこれだけ。
mattermost_external_urlは適宜変更。
mattermost['enable']はもちろんtrue。
注意点はservice_address。他のところはlisten_addressとかになっていましたが、
これも実はlisten_addressと同意義らしくログファイルを見ると
[INFO] Server is listening on 127.0.0.1:8065
こんな感じでservice_addressの設定値でlistenし始めます。
ここが何の気無しで設定した際にエラーになったので注意です。
(127.0.0.1をlistenしても意味ないような・・・)
Gitlabのアプリケーションキーを発行する
ここまで来たら一回Gitlabにアクセスします。
rootアカウントでログインしたら右上のProfile Settingを開いて下さい。
Applicationsのタブを開いて画像のように設定します。
NameのMattermostとか識別し易い名前にしておいて下さい。
Redirect URIの欄は
[mattermost_external_url]/login/gitlab/complete
[mattermost_external_url]/signup/gitlab/complete
この2つを登録してください。
そうするとこんな感じでキーが発行されます。
そしたらまたサーバー側に戻ります。
# mattermost['gitlab_id'] = "12345656"
mattermost['gitlab_id'] = [Application Id]
# mattermost['gitlab_secret'] = "123456789"
mattermost['gitlab_secret'] = [Secret]
# mattermost['gitlab_auth_endpoint'] = "http://gitlab.example.com/oauth/authorize"
mattermost['gitlab_auth_endpoint'] = "[GitlabのURL]/oauth/authorize"
# mattermost['gitlab_token_endpoint'] = "http://gitlab.example.com/oauth/token"
mattermost['gitlab_token_endpoint'] = "[GitlabのURL]/oauth/token"
# mattermost['gitlab_user_api_endpoint'] = "http://gitlab.example.com/api/v3/user"
mattermost['gitlab_user_api_endpoint'] = "[GitlabのURL]/api/v3/user"
このように設定します。
gitlab_idはApplication Id、gitlab_secretはSecretを設定します。
ついでに
- gitlab_auth_endpoint
- gitlab_token_endpoint
- gitlab_user_api_endpoint
この3つをコメントアウトを解除、Gitlabのexternal_urlと組み合わせる感じで設定します。
Mattermostにログインする
そうしたらmattermostにアクセスします。
次に
MattermostがGitlabへのアクセスするのを許可してやります。次へ。
適当にチーム名決めます。
次はチームのURL決めます。わかりやすい方がいいです。
ここまで来たら晴れてMattermostが使えるようになります。
この方だとSSOでログイン出来るように設定されているので、
GitlabアカウントでMattermostもログインできちゃいます。
便利。
【Gitlab】ユーザーを管理者のみ作れるようにする
ユーザー管理は重要です。勝手に作らせたくない場合もあります。
管理者でログインして
Admin Areas→Settings→Sign-up Restrictions→Sign-up enabled
のチェックボックスを外しましょう。
ログイン画面のユーザー登録がなくなります。
管理者が管理画面からしかユーザーを作成できません。
【Mattermost】Mattermostも勝手にユーザーを作らせない
# mattermost['email_enable_sign_up_with_email'] = true
mattermost['email_enable_sign_up_with_email'] = false
# mattermost['email_enable_sign_in_with_email'] = true
mattermost['email_enable_sign_in_with_email'] = false
# mattermost['email_enable_sign_in_with_username'] = false
mattermost['email_enable_sign_in_with_username'] = false
Mattermostは設定ファイルを書き換えないといけないようです。
ここまでやるとGitlabのユーザーを管理者が作ってそのアカウントでMattermostにSSOでログインする形になります。
【おまけ】Gitlabのアップデート
Gitlabはアップデートが多いプロダクトです。
ちょっとした注意点としてGitlabのアップデートを行う際にGitlabを停止してしまうと、
データベースのバックアップを取れなくて失敗します。
アップデートする際はGitlabを立ち上げっぱなしで行って下さい。