OpenWrt 19.07 と Gitolite で Git サーバーを構築

OpwnWrt をインストールしたルータで Git サーバーを構築しました。低消費電力でプライベートな Git サーバーです。

実行環境

ルーター
Linksys WRT1900ACS
OS
OpenWrt 19.07.3

マルチユーザー環境はすでに構築済みであることが前提です。また、Extroot を使ってディスク容量を拡張済み でありディスクの空き容量も数GB以上あることを前提にしています。

パッケージ バージョン
gitolite 3.6.11-2

Gitolite をインストール

OpenWrt の gitolite パッケージは /srv/git/ にリポジトリを保存することを想定しています。

Gitolite をインストールします。

# opkg update
# opkg install gitolite openssh-keygen

リポジトリ用のディレクトリを作成します。

# mkdir -p /srv/git/.ssh
# touch /srv/git/.ssh/authorized_keys
# chmod 700 /srv/git/.ssh
# chmod 600 /srv/git/.ssh/authorized_keys

git リポジトリ用のディレクトリのオーナーを変更します。git ユーザーと git グループは Gitolite のインストール時に作成されています。

# chown -R git:git /srv/git/

(ローカルPCで作業) Gitolite 管理用ユーザー git 用の鍵を作成します。Linux か mac の場合は以下のコマンドで作成できます。作成後に公開鍵を表示してコピーします。

$ ssh-keygen -t rsa -b 4096 -C "Gitolite-admin" -f ./gitolite_key_admin.key
$ cat ./gitolite_key_admin.key.pub

(注意) 鍵のコメントにスペースが入っていると、後のセットアップでエラーが出ます。スペースはハイフン等で置き換えてください。

FATAL: algorithm mismatch: AAAAB3Nz... vs. +^ at /usr/libexec/gitolite/lib/Gitolite/Common.pm line 409.

(OpenWrt で作業) 先ほどコピーした公開鍵を OpenWrt の /srv/git/admin.pub にペーストします。

# vi /srv/git/admin.pub

git ユーザーに切り替えて Gitolite の初期設定を行います。

# su - git
$ gitolite setup -pk ~/admin.pub

admin.pub はすでに管理用リポジトリにコピーされていて不要なので削除します。

$ rm ~/admin.pub

Gitolite の管理用リポジトリをクローン

(ローカルPCで作業) Gitolite の管理用リポジトリ gitolite-admin をクローンします。以下のアドレスをクローンします。鍵は先ほど作成した gitolite_key_admin.key を使用します。Linux の git でも Windows の Sourcetree でもクローンできました。

ssh://git@<ADDRESS>:<PORT>/gitolite-admin
ssh://git@hogepiyo.com:2020/gitolite-admin

以後はこの gitolite-admin リポジトリを操作して Gitolite を設定していきます。

新しいユーザーを追加

(ローカルPCで作業) 管理ユーザーではない一般ユーザーを追加します。一般ユーザー用の鍵を新たに作成し、公開鍵を <Username>.pub のファイル名で gitolite-admin/keydir/ に保存します。

.../gitolite-admin/keydir/john.pub

新しいリポジトリを追加

(ローカルPCで作業) リポジトリの管理は gitolite-admin\conf\gitolite.conf を編集して行います。

テストとして hello-world リポジトリを追加します。

repo gitolite-admin
    RW+     =   admin

repo testing
    RW+     =   @all

repo hello-world
    RW+     =   @all

変更をコミット

(ローカルPCで作業) 変更を反映するには gitolite-admin リポジトリにコミットしてプッシュします。

hello-world リポジトリをテスト

(ローカルPCで作業) ssh://git@<ADDRESS>:<PORT>/hello-world を新しく作成した一般ユーザーでクローンできるかテストします。

参考

コメントを残す

メールアドレスが公開されることはありません。