※ GitLab 9対応を確認しました。
※ GitLab 10対応を確認しました。
対象
- なんらかの理由でGitHubやGitHub Enterpriseを使えない方
- タダで似たようなツールを使いたい方
Omnibus GitLabとは
GitLabシリーズとそれらに必要なミドルウェアを同梱したパッケージです。
元々GitLabはその名の雰囲気通りGitHubのクローンで、Gitリポジトリマネージャだったそうなのですが、その範囲を超えて他のモダンな開発ツールの機能をどんどん取り込んでいて、今や開発コラボレーションプラットフォームになっています。
GitLabのサービスとそれに相当する巷のサービスをまとめてみました。※完全に機能が一致するわけではありません。
GitLabサービス | 巷のサービス | 用途 |
---|---|---|
GitLab | GitHub | Git管理、プルリク |
GitLab Snippets | GitHub Gist | コードスニペット共有 |
GitLab Pages | GitHub Pages | 静的サイトホスティング |
GitLab Board | ZenHub | タスク管理 |
GitLab CI | CircleCI | CI |
GitLab Container Registry | Docker Hub | Dockerイメージ管理 |
GitLab Mattermost | Slack | チームチャット |
GitLab Prometheus NEW | Datadog | コンテナ監視 |
システム要件
- 2コア4GB推奨
- ストレージはソフトウェアだけで10GBほど
- 対応OSはLinuxのみ
インストール
インストールもアップデートも簡単にできるDocker Composeでのインストール方法を採用します。
事前準備
Docker1.10.0+, Docker Compose1.6.0+がインストールされている環境を用意してください。
Docker for Windowsには非対応ですので、Windowsの場合は、Docker Toolboxや、Vagrant(サンプル)などでLinux仮想マシン上にDocker環境を用意してください。
Step 1. docker-compose.ymlを作成する
以下のコードをdocker-compose.yml
という名前で保存してください。
version: '2'
services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:latest
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
## GitLab configuration settings
##! Check out the latest version of this file to know about the different
##! settings that can be configured by this file, which may be found at:
##! https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/files/gitlab-config-template/gitlab.rb.template
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://gitlab.example.com'
################################################################################
## gitlab.yml configuration
##! Docs: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md
################################################################################
gitlab_rails['gitlab_ssh_host'] = 'ssh.gitlab.example.com'
gitlab_rails['time_zone'] = 'UTC'
################################################################################
## Container Registry settings
##! Docs: https://docs.gitlab.com/ce/administration/container_registry.html
################################################################################
registry_external_url 'http://registry.gitlab.example.com'
################################################################################
## GitLab Pages
##! Docs: https://docs.gitlab.com/ce/pages/administration.html
################################################################################
pages_external_url 'http://pages.example.com/'
################################################################################
## GitLab Mattermost
##! Docs: https://docs.gitlab.com/omnibus/gitlab-mattermost
################################################################################
mattermost_external_url 'http://mattermost.example.com'
volumes_from:
- gitlab-data
ports:
- "80:80"
- "2222:22"
gitlab-data:
image: busybox
volumes:
- /etc/gitlab
- /var/log/gitlab
- /var/opt/gitlab
gitlab-runner:
container_name: gitlab-runner
image: gitlab/gitlab-runner:alpine
restart: always
volumes_from:
- gitlab-runner-data
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "$HOME/.docker/config.json:/root/.docker/config.json"
gitlab-runner-data:
image: busybox
volumes:
- /etc/gitlab-runner
上記では各サービスに以下のドメインが指定されています。
サービス | ドメイン名 |
---|---|
GitLab | gitlab.example.com |
Git SSH | ssh.gitlab.example.com |
Container Registry | registry.gitlab.example.com |
GitLab Pages | pages.example.com |
Mattermost | mattermost.example.com |
GITLAB_OMNIBUS_CONFIG
の部分で設定されているので、適宜変更してください。
Step 2. サービスを起動する
さきほど作ったdocker-compose.yml
のディレクトリ上で
$ docker-compose up -d
と実行すると、GitLabなど各種Dockerイメージのダウンロードが始まり、最終的に各種Dockerコンテナが作成され、起動します。
何かと時間のかかる処理が続くので、しばしお待ち下さい。(数分〜数十分)
各サービスの起動状況を確認するには以下を実行してください。
user@host ~ $ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------
gitlab /assets/wrapper Up 0.0.0.0:2222->22/t
cp, 443/tcp,
0.0.0.0:80->80/tcp
gitlab-data sh Exit 0
gitlab-runner /usr/bin/dumb-init Up
/entryp ...
gitlab-runner-data sh Exit 0
上記のようにgitlabがUpになっていれば起動成功です。ポート80と、GitのSSH接続用ポート2222が開いている状態です。
Step 3. ドメインを設定する
docker-compose.yml
で指定したドメインをレコード設定してください。
GitLab Pagesは他と違い、例えばdocker-compose.yml
でpages.example.com
と設定した場合、レコードは*.pages.example.com
とワイルドカードで設定する必要があります。
以上
-
ブラウザで
http://<GitLab URL>
にアクセスし、画面が表示されたらGitLabのインストール成功です。パスワード設定後、Usernameにroot、Passwordに先ほどのパスワードでログインできると思います。can't be reachedや502 Bad Gatewayの場合はまだ起動処理中なので、しばらく待ってからアクセスしてみてください。
-
http://<Mattermost URL>
にアクセスし、画面が表示されたらGitLab Mattermostのインストール成功です。can't be reachedや502 Bad Gatewayの場合はまだ起動処理中なので、しばらく待ってからアクセスしてみてください。
これで、GitHub, ZenHub, Slack, Docker Hub相当の機能(Git/Dockerリポジトリ管理、プルリク、カンバン、チームチャット等)が用意できました。
おまけ
CIを使う
GitLabのCI機能は、リポジトリ内の.gitlab-ci.yml
のジョブをRunnerに投げる、という仕組みになっているので、
別サービスとして動いているGitLab RunnerサービスにRunnerを登録する必要があります。
-
GitLabの
Admin Area
>Runners
にアクセスし、registration token
を確認する -
Runnerを登録する(registration-tokenパラメータを置き換える)
$ docker exec -it gitlab-runner gitlab-runner register \
--non-interactive \
--name shared-runner \
--url http://gitlab/ \
--registration-token XXXXXXXXXXXXXXXXXXXX \
--executor docker \
--limit 2 \
--docker-image docker:1.10 \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
GitLab Mattermostのビデオ通話を有効にする
プレビュー版ですが、WebRTCを利用したビデオ通話機能があり、Chrome/Firefox/Desktop Appに対応しているそうですが、私の環境ではFirefoxでしか動作しませんでした。
-
docker-compose.yml
のGITLAB_OMNIBUS_CONFIG
に以下を追記する
mattermost['webrtc_enable'] = true
mattermost['webrtc_gateway_websocket_url'] = 'ws://mattermost.example.com:8188'
mattermost['webrtc_gateway_admin_url'] = 'http://mattermost.example.com:7088/admin'
mattermost['webrtc_gateway_admin_secret'] = 'janusoverlord'
-
docker-compose.yml
のservices
に以下を追記する
mattermost-webrtc:
container_name: mattermost-webrtc
image: mattermost/webrtc:latest
restart: always
ports:
- "7088:7088"
- "8188:8188"
追記したymlはこちら
-
docker-compose up -d
を実行してサービスを再構築する -
Mattermostの
Account Settings
>Advanced
>Preview pre-release features
を開き、Enable the ability to make and receive one-on-one WebRTC calls
を選択して保存する -
チャットのユーザー名をクリックしてユーザープロフィールを開いた時、有効にしたユーザー同士であればビデオボタンが表示されるので、ビデオ通話ができれば成功
他色々使いそうなオプションを詰め込んだdocker-compose.yml
参考
Omnibus GitLab documentation
GitLab Community Edition documentation
Mattermost documentation