最近体調が悪いです。
さて、今回は自宅の 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 があるのでそれに従って導入しました。やったことは curl
で ShellScript
を取得して、それで apt
の sources
に登録した後 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 連携について
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。