0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Git packaged by Bitnami を使って Docker で Git サーバを立ててみる

Last updated at Posted at 2021-12-04

多くの開発者がバージョン管理のために GitHub や GitLab などの Git ホスティングサービスを利用しています。何らかの事情でサービスを利用出来ない場合は、GitLab をセルフホストする方も多いでしょう。

とはいえ「うまく動いている既製品があるから」といって生の Git サーバに触らないまま大切なコードを預けているのも変な話なので、Pro Git book を読みながら構築してみることにしました。

Git packaged by Bitnami とは

Git packaged by Bitnami は Git を Bitnami がパッケージ化したものです。Docker イメージの形式で提供されているので、依存関係を気にせず手軽に使い始めることができますね。

docker run --name git bitnami/git:latest git --version

Dockerfile のある Git リポジトリはこちらです。

コンテナを Git サーバに仕立てる

Pro Git book を見ながらインタラクティブに操作していきましょう。コンテナを立ち上げ、bash を起動します。このとき、SSH 接続用のポートと、Web UI 用のポートをフォワードしておきます。コンテナ外にデータを保持したい場合は、ボリュームやマウントの設定も追加してください。また、 bash が終了してもコンテナを稼働させたい場合は、コマンドをtail -f /dev/null に変更するなどしてください。

docker run -it --name git -p 10022:22 -p 11234:1234 bitnami/git:latest bash

続いて、サーバーのセットアップを行います。まず、git ユーザを作成します。

useradd -m git -s /bin/bash

git ユーザに SSH 経由で接続できるように設定します。

su git
cd ~
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
exit

# SSH デーモンを開始
/etc/init.d/ssh start

/home/git/.ssh/authorized_keys に公開鍵の情報を追記してください。Docker ホストから ssh -p 10022 git@localhost で接続できたら成功です。

次に、Git リポジトリを作成します。

su git
cd ~
mkdir <リポジトリ名>
cd <リポジトリ名>
git init --bare
exit

最後に、git ユーザのログインシェルを git-shell に変更します。SSH で好き勝手いじれないように制限する都合もありますが、Git 関連コマンドにパスを通す意味もあります。

chsh git -s /opt/bitnami/git/bin/git-shell

# git ユーザで bash 操作が必要なときは sudo で立ち上げる
sudo -u git bash

あとはお手元のリポジトリで remote として追加するだけで使い始めることができます! git コマンドに SSH 用のポートを指定するには、以下のように設定します:

git remote add <リモート名> ssh://git@localhost:10022/~/<リポジトリ名>

GitWeb (Web UI) を表示する

GitWeb は Git に標準で付属する Web UI です。Git サーバとして使うなら最低限ほしいところなので、表示できるようにしておきましょう。

# instaweb の依存を追加します
apt update
apt install -y lighttpd libcgi-pm-perl gamin
# ゴミ掃除(任意)
apt clean -y
rm -rf /var/lib/apt/lists/*

cd /home/git/<リポジトリ名>
sudo -u git git instaweb

Port 1234 のフォワード先にアクセスすると、GitWebが表示されます。

localhost-git.png

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?