gitoliteで作るプライベートgitサーバー

プライベートな git サーバーがほしかったので、gitolite を使って構築しました。

環境

OS: Debian Squeeze (6.0.6)

ssh サーバーの設定

パスワード認証を無効化します。
また、AllowUsers を設定している場合は、gitolite 用ユーザーを追加します。

$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication no
AllowUsers git
$ sudo /etc/init.d/ssh restart

gitolite のインストール

$ sudo aptitude install gitolite

gitolite ユーザーの作成

gitolite 用ユーザーを作成します。*1

$ sudo /usr/sbin/groupadd git
$ sudo /usr/sbin/useradd -d /var/lib/gitolite -M -g git -s /bin/bash -c "git repository hosting,,," git
$ sudo chown -R git:git /var/lib/gitolite

git ユーザーの SSH 鍵作成と git 設定を行います。

$ sudo su - git
$ ssh-keygen -t rsa
$ git config --global user.name "Gitolite Admin"
$ git config --global user.email git@example.com

gitolite のセットアップ

gitolite 管理者の公開鍵を使って、gitolite をセットアップします。
ここで指定する公開鍵が、keydir へ登録されるので、それらしい名前にします。

$ sudo su - git
$ cd ~/.ssh
$ cp ./id_rsa.pub /tmp/gitolite-admin.pub
$ sudo dpkg-reconfigure gitolite
$ sudo rm /tmp/gitolite-admin.pub

dpkg-reconfigure 時に公開鍵を指定する場所があるので、準備した /tmp/gitolite-admin.pub を指定します。
セットアップが完了したら、管理用リポジトリ(gitolite-admin)を取得します。

$ sudo su - git
$ mkdir ~/work; cd work
$ git clone ssh://localhost/gitolite-admin

gitolite の設定

gitolite の設定は、管理用リポジトリ(gitolite-admin)の設定を変更し、push することで反映されます。
keydir 以下にアクセスを許可するユーザーの公開鍵を置き、gitolite.conf に公開鍵のファイル名(.pub を除いた)やリポジトリを設定していきます。

gitolite-admin
    ├── conf
    │   └── gitolite.conf
    └── keydir
        └── gitolite-admin.pub

設定は以下のような流れになります。

$ cd gitolite-admin
$ git pull
$ vi conf/gitolite.conf
$ git commit -m 'add hogehoge' conf/gitolite.conf
$ git push origin master

user01 に sample リポジトリの Read 権限を付与する設定は以下のような感じになります。
この時、keydir 以下に user01.pub というファイル名で公開鍵を置きます。

repo   sample
       R = user01

所感

簡単にセットアップできて、ユーザーやリポジトリの管理も楽チンです。
Debian の gitolite パッケージはバージョンが古いので、新し物好きな方は github から取ってくることをオススメします。
あと、gitolite.conf での改行方法が解らなかったので、ご存知の方教えてください。

sitaramc/gitolite · GitHub

*1:インストール時に gitolite ユーザーが作成されますが、今回は git という名前のユーザーを作成しました。