セルフホスト型 Git サーバー OSS 比較 - Gitea / Forgejo / GitLab CE / Gogs / OneDev / Soft Serve

セルフホスト型 Git サーバー OSS 比較 - Gitea / Forgejo / GitLab CE / Gogs / OneDev / Soft Serve

作成日:

以前の記事「Git LFS 完全ガイド」で、Apache + git-http-backend による自前 Git サーバーでは Git LFS が動作しないことを検証しました。git-http-backend は Git Smart HTTP プロトコル専用の CGI プログラムであり、LFS の Batch API(/info/lfs/objects/batch)を処理できないためです。

そこで本記事では、Git LFS にネイティブ対応したセルフホスト型の Git サーバー OSS を調査し、それぞれの特徴や向いているケースをまとめます。


なぜセルフホスト型 Git サーバーが必要になったのか

git-http-backend の限界

前回の記事で詳しく解説しましたが、git-http-backend で LFS を使おうとすると以下のエラーが発生します。

HTTPS経由でのpush時
batch response: Repository or object not found:
  https://git.example.com/repo.git/info/lfs/objects/batch
SSH経由でのpush時
batch request: command not found: git-lfs-authenticate: exit status 127

Git LFS は Git 本体とは独立した REST API を持っており、git-http-backend にはその API を処理する機能がありません。

解決策は 2 つ

  1. LFS サーバーを別途立てる(rudolfs、Giftless 等)→ Apache のリバースプロキシで /info/lfs/ だけ振り分け
  2. Git サーバーごと LFS 対応の OSS に置き換える → 本記事のテーマ

前者は既存の git-http-backend 構成を維持できますが、LFS サーバーの運用が別途必要です。後者は Git ホスティング自体を刷新することで、LFS だけでなく Web UI、Issue 管理、CI/CD なども手に入ります。


調査対象の OSS 一覧

今回調査したのは以下の 6 つです。

OSS言語最新バージョンライセンスGit LFS
GiteaGov1.25.4(2026年1月)MIT✅ 組み込み
ForgejoGov14.0.2(2026年1月)MIT✅ 組み込み
GitLab CERuby (Rails)最新安定版MIT (CE)✅ デフォルト有効
GogsGov0.14-devMIT⚠️ v0.12〜(不安定報告あり)
OneDevJavav11.8.7(2025年4月)MIT✅ 組み込み(S3対応はEnterprise)
Soft ServeGov0.8.xMIT✅ v0.6.0〜

Gitea

概要

Gitea は Go 言語で書かれた軽量なセルフホスト型 Git サービスです。Gogs からフォークして始まったプロジェクトで、現在はセルフホスト型 Git サーバーの中で最も人気があります。シングルバイナリで動作し、低スペックなサーバーでも快適に使えるのが最大の特徴です。

Git LFS 対応

app.ini で数行設定するだけで LFS が有効になります。

app.ini
[server]
LFS_START_SERVER = true
 
[lfs]
PATH = /home/gitea/data/lfs

ストレージの選択肢:

  • ローカルディスク(デフォルト)
  • S3 互換オブジェクトストレージ(AWS S3、MinIO、DigitalOcean Spaces 等)

SSH 経由のみで LFS を動かす Pure SSH モードも用意されています(LFS_ALLOW_PURE_SSH = true)。HTTP エンドポイントを公開せずに LFS を運用できるため、セキュリティ的にも好ましい構成が可能です。

スペック要件

項目目安
メモリアイドル時 約100MB
ディスクバイナリ本体 約100MB + データ
前提ソフトウェアGit v2.1.2 以上
データベースSQLite / MySQL / PostgreSQL

主な機能

  • リポジトリ管理(フォーク、ミラー、テンプレート)
  • Issue / Pull Request
  • Gitea Actions(GitHub Actions 互換の CI/CD)
  • パッケージレジストリ(npm、Docker、PyPI 等)
  • Web エディタ、Wiki
  • OAuth2 / LDAP 認証
  • Webhook、REST API

向いているケース

  • VPS やラズパイなど低スペック環境で運用したい
  • GitHub に近い使い勝手を自前で持ちたい
  • CI/CD(Gitea Actions)も一つのサービスで完結させたい
  • LFS を S3 に保存してストレージを分離したい

Forgejo

概要

Forgejo は Gitea からフォークしたコミュニティ主導のプロジェクトです。2022年に Gitea が商業化の方針を打ち出したことに対し、ソフトウェアの自由とコミュニティガバナンスを重視するメンバーが分岐して立ち上げました。Codeberg(ドイツの非営利 Git ホスティング)が Forgejo で運用されています。

Git LFS 対応

Gitea と同じく組み込みで LFS に対応しています。設定方法もほぼ同一です。

Forgejo 独自の機能として Soft-Quota(ソフトクォータ)があり、Git LFS の使用量を個別に制限できます。大量のバイナリをアップロードされてストレージを圧迫されるリスクを管理者が制御できます。

app.ini(Forgejo の場合も同様)
[server]
LFS_START_SERVER = true
 
[lfs]
PATH = /home/forgejo/data/lfs

スペック要件

Gitea とほぼ同じです。

項目目安
メモリアイドル時 約100MB
ディスクバイナリ本体 約100MB + データ
前提ソフトウェアGit v2.1.2 以上、git-lfs
データベースSQLite / MySQL / PostgreSQL

Gitea との違い

観点GiteaForgejo
ガバナンスGitea Ltd.(企業主導)コミュニティ主導(非営利)
Enterprise版あり(有料)なし(全機能無料)
エディタMonaco EditorCodeMirror(v14.0〜、軽量)
独自機能Gitea ActionsForgejo Actions、Soft-Quota
リリース頻度月次パッチ四半期メジャー + パッチ

向いているケース

  • コミュニティ主導・全機能無料の方針に共感する
  • Gitea と同等の軽量さ・機能を求めつつ、商用ライセンスを避けたい
  • LFS の使用量をクォータで制御したい
  • Codeberg と同じ基盤で運用したい

GitLab CE (Community Edition)

概要

GitLab CE は最も機能が豊富なセルフホスト型 Git プラットフォームです。Git リポジトリ管理だけでなく、CI/CD パイプライン、Container Registry、Package Registry、Wiki、Issue Tracker、セキュリティスキャンなど、DevOps に必要な機能がすべて組み込まれています。

Git LFS 対応

デフォルトで有効です。特別な設定は不要で、インストール直後から LFS が使えます。

ストレージの選択肢:

  • ローカルストレージ(デフォルト: /var/opt/gitlab/gitlab-rails/shared/lfs-objects
  • リモートオブジェクトストレージ(S3 互換)

管理画面から LFS の有効/無効を切り替えられ、プロジェクト単位での制御も可能です。

スペック要件

他の OSS と比べて大幅にリソースを消費します。

項目目安
メモリ最低 8GB、推奨 16GB(1,000ユーザー規模)
ディスクインストールだけで約 2.5GB、推奨 40GB〜
前提ソフトウェアPostgreSQL、Redis、Sidekiq 等
CPU4コア推奨

主な機能

  • CI/CD パイプライン(GitLab Runner)
  • Container Registry / Package Registry
  • セキュリティスキャン(SAST、DAST、依存関係スキャン)
  • Kubernetes 統合
  • Auto DevOps
  • Merge Request(コードレビュー)
  • Wiki、Snippet、Issue Board

向いているケース

  • チーム・組織で本格的な DevOps プラットフォームが必要
  • CI/CD を Git サーバーと統合したい
  • Container Registry やセキュリティスキャンも一元管理したい
  • サーバーリソースに余裕がある(メモリ 8GB 以上)
  • GitHub/GitLab.com と同等の体験をオンプレで実現したい

Gogs

概要

Gogs は「痛みのないセルフホスト型 Git サービス」を掲げる、Go 言語で書かれた超軽量な Git サーバーです。Gitea の元になったプロジェクトで、Raspberry Pi でも動作するほど軽量です。ただし、メンテナが少なく開発ペースは緩やかです。

Git LFS 対応

v0.12 から LFS に対応しています。ただし、開発版(v0.14-dev)で LFS の push が失敗するバグ報告(2025年8月)があり、安定性に懸念が残ります。

app.ini
[server]
LFS_JWT_SECRET = <secret>
 
[lfs]
OBJECTS_PATH = /home/git/gogs-lfs

スペック要件

調査した中で最も軽量です。

項目目安
メモリアイドル時 約60〜80MB
ディスクバイナリ本体 約60MB
前提ソフトウェアGit v1.8.3 以上
データベースSQLite / MySQL / PostgreSQL

注意点

  • Issue や Pull Request の機能は基本的なもののみ
  • CI/CD は非搭載(外部連携が必要)
  • コントリビュータが少なく、セキュリティパッチの適用が遅れる可能性
  • LFS の安定性に不安が残る

向いているケース

  • とにかく軽量に Git リポジトリを Web UI 付きで公開したい
  • Raspberry Pi や低スペック VPS で最小限のリソースで動かしたい
  • LFS は使わない、または限定的な利用に留める
  • Issue 管理や CI/CD は別のツールで運用している

OneDev

概要

OneDev は Java で書かれたセルフホスト型 Git サーバーで、CI/CD、Issue 管理(Kanban)、パッケージ管理を統合しています。CI/CD パイプラインを YAML で定義でき、Docker コンテナ内でビルドを実行する仕組みが特徴です。

Git LFS 対応

組み込みで LFS に対応しています。ただし、S3 へのLFS ストレージ保存は Enterprise 版(有料)の機能です。

機能CommunityEnterprise
LFS 基本機能
LFS ローカルストレージ
LFS → S3 保存
ストレージ設定の管理画面

スペック要件

項目目安
メモリ最低 2GB
ディスクインストール約 500MB + データ
前提ソフトウェアJava 11 以上 / Docker(CI/CD 利用時)
データベース組み込み H2 / MySQL / PostgreSQL

主な機能

  • CI/CD パイプライン(Docker ベース)
  • Kanban ボード
  • コードレビュー
  • パッケージレジストリ
  • シンボルナビゲーション(コード内のクラス・関数をブラウザで辿れる)
  • クラスタリング対応(Enterprise)

向いているケース

  • CI/CD を内蔵した Git サーバーが欲しいが、GitLab ほどのリソースは割けない
  • Docker ベースの CI/CD パイプラインを使いたい
  • Kanban でタスク管理も一元化したい
  • Java 環境に抵抗がない

Soft Serve

概要

Soft Serve は Charm が開発した、SSH ベースのセルフホスト型 Git サーバーです。**TUI(ターミナル UI)**でリポジトリを閲覧できるユニークなアプローチが特徴で、Web UI を持ちません。SSH 接続するだけでリポジトリの一覧やコミットログを確認できます。

TUI でリポジトリを閲覧
ssh git.example.com

Git LFS 対応

v0.6.0(2023年8月)から LFS に対応しています。

  • SSH / HTTP 両方のプロトコルで LFS が動作
  • LFS ロックにも対応(ファイルのロック/アンロック)
  • SSH 経由の LFS がデフォルト有効(HTTP は設定で切り替え可能)

スペック要件

項目目安
メモリアイドル時 約50MB
ディスクバイナリ約 30MB
前提ソフトウェアなし(シングルバイナリ)
データベースSQLite / PostgreSQL

注意点

  • Web UI なし(ブラウザからの操作は不可)
  • Issue 管理、Pull Request、CI/CD は非搭載
  • ユーザー管理は SSH 公開鍵ベース
  • リポジトリは SSH / HTTP 経由で clone・push するのみ

向いているケース

  • CLI / ターミナル中心のワークフローで、Web UI は不要
  • 極めて軽量な Git サーバーが欲しい
  • SSH のみで完結する環境(HTTP エンドポイントを公開したくない)
  • Charm エコシステム(Charm Cloud 等)との統合を見据えている

比較まとめ

リソース要件

OSSメモリ(アイドル)最低メモリ言語
Soft Serve~50MB512MBGo
Gogs~70MB512MBGo
Gitea~100MB1GBGo
Forgejo~100MB1GBGo
OneDev~300MB2GBJava
GitLab CE~3GB8GBRuby

機能比較

機能GiteaForgejoGitLab CEGogsOneDevSoft Serve
Web UI
Git LFS⚠️
LFS → S3有料版
CI/CD
Issue管理
Pull/Merge Request
Container Registry
SSH Only LFS

用途別おすすめ

やりたいことおすすめ
個人の VPS で手軽に Git + LFS を運用Gitea / Forgejo
ラズパイ等の超低スペック環境Gogs(LFS 不要なら)/ Soft Serve
チームで DevOps を一元管理GitLab CE
軽量 + CI/CD 内蔵Gitea / OneDev
ターミナルだけで完結させたいSoft Serve
コミュニティ主導・完全無料を重視Forgejo
既存の git-http-backend を LFS 対応にしたいLFS サーバー単体(rudolfs 等)を別途構築

結論: 個人〜小規模なら Gitea / Forgejo がベストバランス

今回の調査は、git-http-backend で Git LFS が動かなかったことがきっかけでした。

調査の結果、Gitea または Forgejo が最もバランスの良い選択肢だと感じます。理由は以下のとおりです。

  • 軽量: アイドル時 約100MB のメモリで動作し、1GB RAM の VPS でも十分
  • LFS 対応が安定: 設定数行で有効化でき、S3 ストレージもサポート
  • CI/CD 内蔵: Gitea Actions / Forgejo Actions で GitHub Actions 互換のワークフローが使える
  • 導入が簡単: シングルバイナリまたは Docker で即座にデプロイ可能
  • Web UI が充実: GitHub ライクな操作感でリポジトリ管理、Issue、Pull Request が使える

git-http-backend + Apache の構成から移行する場合、Apache のリバースプロキシで Gitea / Forgejo のポートに転送するだけで既存の URL 構成を維持できます。

Apache 設定例(Gitea へのリバースプロキシ)
<VirtualHost *:443>
    ServerName git.example.com
 
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

一方、チームや組織で本格的な DevOps 基盤が必要なら GitLab CE が最も機能が充実しています。ただしメモリ 8GB 以上が必要なため、VPS のスペックと相談になります。

git-http-backend で Git LFS が使えないという壁にぶつかった方は、この機会に Git ホスティング自体をモダンな OSS に移行することを検討してみてはいかがでしょうか。