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 での改行方法が解らなかったので、ご存知の方教えてください。
*1:インストール時に gitolite ユーザーが作成されますが、今回は git という名前のユーザーを作成しました。