Unyablog.

のにれんのブログ

Raspberry pi 2 に GitLab を入れた

最近体調が悪いです。

さて、今回は自宅の Raspberry pi に GitLab を導入した話です。

GitLab とは、GitLab Inc. が開発しているサービスで、GitHub のクローン的なやつです。といってもインターフェースまでそっくりというわけではないですし、GitLab 独自の機能もあります。

昔は気持ち悪い生き物のアイコンで有名だったのですが、最近ロゴが変わってスッキリしました。

GitLab は自分のサーバーに設置することができ、さらにオープンソースの "Community Edition" なら無料です。無料でも十分な機能が使えそうでした。

導入理由

僕は書いたコードは GitHub で大抵オープンソースにしているのですが、レポートを tex で書いているのをオープンにするわけにもいかないので private repository にしようかなあと迷っていました*1

実際 private repository でもよかったのですが、 .xlsx とか .numbers 的なファイルもそこそこあったので外部に上げるのになんとなく抵抗があり*2、GitLab で管理することにしました。元々興味もあったし。

導入

Installation methods for GitLab | GitLab

に導入方法が書いてあります。

インストール

OSの選択肢に Raspbeery pi 2 があるのでそれに従って導入しました。やったことは curlShellScript を取得して、それで aptsources に登録した後 aptitude でインストールという感じ。

設定

設定は主に /etc/gitlab/gitlab.rb を編集します。

url の設定

external_url に GitLab を置く URL を設定。

nginx 関係

GitLab には nginx がバンドルされているのですが、もう既に nginx を使っているので元あった nginx で使えるようにします。

  • nginx.conf

↑に gitlab 用 nginx.conf のサンプルがあるので適当に wget して /etc/nginx/sites-enabled に置きます。

あとはコメント通りに設定します。具体的にはパスの設定と listen の設定、さらに TLS を使ったので証明書の場所を設定しました*3

  • gitlab.rb

gitlab.rb

nginx['enable'] = false

のコメントを解除してバンドルの nginx を無効化し、

web_server['external_users'] = ['{nginxのユーザー名}']

とします。

これで一通り必須の設定は終わったので、

$ sudo gitlab-ctl reconfigure

で設定を反映させます。ちなみに最初の reconfigure は遅い。

そして指定した URL にアクセスすると無事ログイン画面が現れると思うので、ユーザー名 root、パスワード 5iveL!fe でログインして後はいい感じに設定します。

ユーザー登録させないようにする

デフォルトの設定では gitlab のトップページで誰でもユーザー登録可能になっているため Admin area -> Settings -> Sign up enabled のチェックを外して無効化します。

ほか

  • メール送信について

GitLab でユーザーをトップページで登録しようとするとメール認証がいるのですが、ここで postfix とかでメールの設定しておかないと gmail 等には飛んでくれなくて困ることになります。Admin area とかから作るとどうなるかは見てません。

GitHub からインポートするにはちょっと設定が必要で、

http://doc.gitlab.com/ce/integration/github.html

に書いてあります。具体的にはアプリケーション登録することで API Key を取得して、それを gitlab.rb に設定します。↑の通りにすると GitHub のアカウントでログインできるようになりますが、これを無効にするには

gitlab_rails['omniauth_enabled'] = false

にして reconfigure するとよいです。

感想

まだ CI とか全然使ってないですが…

  • raspi 2 B+ 上で立ち上げていますが、そこそこ重い。プロジェクトのトップページ開くのに 2秒 ぐらいかかりますし、 commit diff とか表示させると 5秒 ぐらいかかります。ギリギリ許容範囲かなあという感じ。 また、 gitlab-ctl reconfigure すると2分ぐらいかかって更に LA が 5 ぐらい行くので厳しい。
  • Slack には webhook 使って簡単に post できるので便利。
  • ソースコードのテーマが選べるのが良い。僕は molokai 派なのでそうしました。ただ diff だとそのテーマが反映されなかったりしてちょっと残念。
  • 個人的にはちょっと使いにくいかなあと思います(割りと飽きた)…がプライベートなもの上げるには便利なのでこれからも使います。
  • まあ無料にしては異常に機能があってすごいなあって思いました。Github の private repository が上限に達してて困るって人は使ってみるといいかもしれません*4

*1:元々は Raspberry pi のあるディレクトリ上にレポジトリを作っていたのですが、webから気軽に見れないのが不便だなあと感じたので

*2:でかいバイナリや、どんな情報あるかわからない xlsx をGitHubにアップロードするのがなんとなく好まなかった

*3:初めて Let's encrypt を使いましたがかなり便利ですね

*4:もちろん BitBucket 等を使うという選択肢もあります