Git サーバー

提供: ArchWiki
2022年2月1日 (火) 10:00時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (TranslationStatus を追加)
ナビゲーションに移動 検索に移動

この記事では、Git サーバーをホストする方法について概要を説明します。より詳細な情報は、Pro Git book の Git on the Server chapter の章を参照ください。

プロトコル

詳細な説明と長所・短所は、Git on the Server - The Protocols を参照してください。

全般

Step by Step Guide on Setting Up git Server では Arch での安全でないサーバーのセットアップを説明しています。

デフォルトでは、git ユーザは期限切れになっています("Your account has expired; please contact your system administrator")。有効期限切れの条件を解除するには、例えば、以下のように chage を使用します。

chage -E -1 git

SSH

SSH サーバーを設置するだけです。

この SSH ユーザーアカウントでは、push と pull のコマンドのみを許可することで、より安全性を確保することができます。これは、デフォルトのログインシェルを git-shell に置き換えることで実現します。Setting Up the Server で説明しています。

#全般の手順で作成した git サーバーをこの条項の手順 (#SSH) で保護する場合、Arch では以下の追加手順が必要です。

正しいホームディレクトリ
ssh が /srv/git/.ssh/authorized_keys を読めるようにするには、/etc/passwd の git 用ホームディレクトリを "/" から "/srv/git" に変更する必要があります。
ホームディレクトリが修正された場合のベースパスの修正
git がリポジトリを提供するために、gitのホームディレクトリからリポジトリを提供する場合、"/usr/lib/systemd/system/git-daemon@.service" の --base-path を "/srv/git" へ変更する必要があります。

Smart HTTP

この記事またはセクションは加筆を必要としています。
理由: There are many web servers with CGI support. (議論: トーク:Git サーバー#)

git-http-backend(1) は CGI プログラムで、HTTP(S) で clone や pull, push を効率的に行うことができます。

Apache

Apache HTTP Server をインストールし、mod_cgi, mod_alias, mod_env を有効にして、そしてもちろん git があれば、この設定はかなり簡単です。

基本的なセットアップを実行したら、Apache の設定ファイルに以下を追加してください。

/etc/httpd/conf/httpd.conf
<Directory "/usr/lib/git-core">
    Require all granted
</Directory>
 
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

ここでは、Git リポジトリが /srv/git にあり、それにアクセスするために次のような方法をとるものとします。http(s)://your_address.tld/git/your_repo.git.

ノート: Apache がリポジトリに対して読み書きができることを確認してください。

より詳細なドキュメントについては、以下のリンクを参照してください。

Git

Git プロトコルは、暗号化も認証もされておらず、読み取りアクセスのみ許可します。

Git デーモン(git-daemon(1))は git-daemon.socket起動することができます.

このサービスは --export-all--base-path パラメータを使用して ,/srv/git/ に置かれたすべてのリポジトリにサービスを提供します.

アクセスコントロール

きめ細かなアクセス制御を行うために、以下のような解決策があります。

  • Gitolite — Perl で書かれた、Git の上のアクセスコントロールレイヤー。
https://github.com/sitaramc/gitolite || gitolite
  • Gitosis — Git リポジトリをホストするためのソフトウェア、Python で書かれています。
https://github.com/tv42/gitosis || gitosis-gitAUR

もし、リポジトリにアクセスできるすべての人のためのユーザーアカウントを作成し、git オブジェクト(ブランチなど)のレベルでのアクセス制御を必要としない場合は、アクセス制御に標準的なファイルパーミッションを使用することもできますので、注意してください。[1]

Web インターフェース

シンプルな Web アプリケーション

  • Gitweb — Git に付属するデフォルトの Web インターフェース。
  • cgit — プレーン C で書かれた git 用の Web インターフェース。
https://git.zx2c4.com/cgit/ || cgit

高度な Web アプリケーション

  • Gitea — 無痛のセルフホスト型 GIT サービス。Gogs のコミュニティによるフォーク。
https://gitea.io || gitea
  • GitLab — Ruby で書かれたプロジェクト管理とコードホスティングアプリケーション。
https://gitlab.com/gitlab-org/gitlab-ce || gitlab
  • Gogs — Go で書かれたセルフホスティングの Git サービス。
https://gogs.io || gogsAUR
翻訳ステータス: このページは en:Git_server の翻訳バージョンです。最後の翻訳日は 2022-02-01 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。