Gitサーバーの完全ガイド:自分でGitリポジトリサーバーを構築する方法
Gitは、ソフトウェア開発のプロジェクトで最も広く使われているバージョン管理ツールです。GitHub、GitLab、Bitbucketなど、クラウドベースのGitリポジトリサービスも一般的ですが、セキュリティやカスタマイズ性、コストの理由から、自分でGitサーバーを構築することもあります。このガイドでは、Linuxを用いて自分専用のGitサーバーを構築する方法を紹介します。

1. 必要なツールのインストール
まず、Gitサーバーを構築するためには、サーバーにGitをインストールする必要があります。Gitがインストールされていない場合は、以下のコマンドでインストールします。
Gitのインストール(Ubuntu/Debianの場合)
bashsudo apt update sudo apt install git
Gitのインストール(CentOS/RHELの場合)
bashsudo yum install git
これでGitがインストールされました。Gitが正常にインストールされたことを確認するには、次のコマンドを実行します。
bashgit --version
出力結果として、インストールされたGitのバージョンが表示されれば、インストールは成功です。
2. Git用のユーザー作成
Gitリポジトリへのアクセスを管理するために、専用のGitユーザーを作成します。このユーザーは、Gitリポジトリを管理するための専用のユーザーとなります。
bashsudo adduser git
このコマンドで新しいユーザーgit
を作成します。git
ユーザーにはパスワードは設定しません。Gitの操作はSSHを利用して行うので、パスワードを設定しないことが推奨されます。
3. SSHキーの設定
GitサーバーへのアクセスにはSSHを使用します。リモートでリポジトリにアクセスするには、クライアントマシンでSSHキーを作成し、その公開鍵をサーバーに配置する必要があります。
SSHキーの生成(クライアント側)
クライアントマシンで次のコマンドを実行して、SSHキーを生成します。
生成された公開鍵(~/.ssh/id_rsa.pub
)をGitサーバーのgit
ユーザーの~/.ssh/authorized_keys
に追加します。公開鍵をコピーして、サーバーにアクセスし、次のようにファイルに追加します。
bashmkdir -p /home/git/.ssh
cat id_rsa.pub >> /home/git/.ssh/authorized_keys
公開鍵のコピーが完了したら、アクセス権限を設定します。
bashchmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
chown -R git:git /home/git/.ssh
4. Gitリポジトリの作成
次に、Gitリポジトリを作成します。リポジトリは、Gitサーバーのgit
ユーザーのホームディレクトリ内に作成するのが一般的です。
bashsudo mkdir /home/git/my_project.git
cd /home/git/my_project.git
sudo git init --bare
--bare
オプションは、作成するリポジトリが裸のリポジトリ(作業ツリーがないリポジトリ)であることを指定します。裸のリポジトリは、リモートリポジトリとして使用されます。
5. クライアントマシンからリポジトリへのアクセス
クライアントマシンからサーバーにアクセスして、リポジトリをクローンします。
bashgit clone git@<サーバーのIPまたはホスト名>:/home/git/my_project.git
このコマンドでGitサーバーからリポジトリをクローンすることができます。
6. 権限管理とセキュリティ
Gitサーバーでは、リポジトリのアクセス権限を適切に管理することが重要です。ファイルシステムの権限を設定して、Gitリポジトリへのアクセスを制限することができます。例えば、特定のユーザーのみがリポジトリにアクセスできるようにするには、次のようにファイル権限を設定します。
bashsudo chown -R git:git /home/git/my_project.git
また、複数のリポジトリを管理する場合には、各リポジトリごとに個別の設定を行うこともできます。
7. リポジトリへのアクセスの管理
リポジトリへのアクセスを管理するために、複数の方法を利用できます。以下はその一部です。
-
SSHアクセスの制限: 特定のユーザーのみがリポジトリにアクセスできるように、SSH設定ファイル(
/etc/ssh/sshd_config
)を編集して、アクセスを制限できます。 -
Gitのフックスクリプト: 特定のアクションをトリガーして、リポジトリに対するアクセス制御を追加するためのフックスクリプト(
post-receive
、pre-receive
など)を利用できます。
8. Gitリポジトリのバックアップ
Gitサーバーを運用する際には、リポジトリのバックアップを定期的に取ることが重要です。次のコマンドでリポジトリのバックアップを取ることができます。
bashgit clone --mirror /home/git/my_project.git
tar -czf my_project_backup.tar.gz my_project.git
この方法で、Gitリポジトリをバックアップして、サーバー障害時に備えましょう。
まとめ
自分でGitサーバーを構築することは、特にチームでの開発やセキュリティ、カスタマイズ性を重視する場合に非常に有益です。このガイドでは、Gitサーバーのセットアップからアクセスの管理、バックアップに至るまでの基本的な手順を紹介しました。自分のプロジェクトに合わせてさらにカスタマイズし、安全で効率的なGit運用を実現してください。