メインコンテンツへスキップ
50% off 全プラン対象、期間限定。月額 $2.48/mo
14 min left
開発者ツールとDevOps

Gitea対Forgejo対OneDev:セルフホスト型gitプラットフォームの選び方

B 著者 Bill 14 分で読めます
Gitea vs Forgejo vs OneDev: choosing between a lightweight self-hosted git server and an all-in-one dev platform.

gitea対forgejo対onedevという比較では、2つの異なる問いに答える3つのツールを見ていることになります。GiteaとForgejoは、プロジェクト管理を後付けしたgitサーバーです。OneDevは、たまたまgitのホスティングも非常に上手にこなす、プロジェクト管理とCIのプラットフォームです。つまり判断すべきは「この3つのうちどれが一番か」ではありません。「小さなgitサーバーが欲しいのか、それともオールインワンのプラットフォームが欲しいのか、そしてオールインワンにかかるRAMのコストを払う余裕があるのか」ということです。

最後の点が、まさに悩ましいところです。OneDevは最初から多くの機能を備えていますが、nodatools.comのテストでは、アイドル時のメモリ使用量が素のForgejoインストールのおよそ3倍と測定されており、小規模なVPSでは月額料金が2倍になる可能性があります。このトレードオフこそが、比較全体の核心です。(なお、GitLabはこの比較には含まれていません。GitLabの規模を求めているのであれば、そもそもこの3つについて読んでいないはずです。)

私は3つとも実際に運用しました。以下は、チームのために1つを選ぶ際に実際に重要になる点です。GiteaとForgejoを分けるガバナンスとライセンスの違い、OneDevの存在意義を裏付ける機能、実測のRAM数値、そしてそれぞれについての率直な「こういう場合はこれを選べ」です。

要約

  • Actions形式のCIを備えた軽量なgitサーバーが欲しいですか? GiteaかForgejoです。GitHub Actionsとの互換性の高さが重要ならGiteaを選び、多少の移行調整を伴うGitHubに似たワークフロー構文で問題なければForgejoを選んでください。
  • 非営利のガバナンスやコピーレフトライセンスを重視しますか。 Forgejoです。コミュニティが統治するフォークであり、ほとんどのチームに対する私のデフォルトの選択です。
  • MITライセンス、最大のフォージコミュニティ、あるいはSLA/SSO付きの有償Enterpriseプランが欲しいですか? Gitea。
  • プロジェクト管理、CI、コードインテリジェンスが1回のインストールで揃っており、RAMに余裕もありますか? OneDevです。ただし、Forgejoが1 GBで問題なく動くのに対し、OneDevは最低でも約4 GBが必要になる点は知っておいてください。

結論を先に言うと ほとんどのチームにとって、Forgejoは省フットプリントなデフォルトとして適した選択です。Giteaと同じコアを持ち、ガバナンスがより明確で、GitHubに似たワークフロー構文のForgejo Actionsを備えています。OneDevを選ぶのは、PMとCIが一体となった体験を1つの箱で本当に求めていて、既存の大量のGitHub Actionsワークフローを移行する必要がない場合に限ります。

この3つのツールが答える2つの問い

Diagram contrasting Gitea and Forgejo as a lightweight git platform with a separate CI runner against OneDev as an all-in-one platform bundling git hosting, built-in CI, project management, and code intelligence.

OneDevはCIビルドデーモンをOneDevのプロセス内で実行するため、別途デプロイするランナーはありません。GiteaとForgejoはその逆で、gitサーバーは1つの存在であり、その隣に別プロセスとしてCIランナーをデプロイします。この1つのアーキテクチャ上の事実こそが、それぞれのツールが自らをどう捉えているかを物語っています。

GiteaとForgejoはgit中心です。リポジトリ、プルリクエスト、コードレビューが核であり、issueやかんばんは便利な追加機能で、CIは後付けするものです。全体として、gitをホストし、邪魔をしないことを中心に構築されています。だからこそ小さく、速く、安価に運用できます。

OneDevは逆の発想で作られています。プロジェクト管理とCI/CDのプラットフォームであり、gitホスティングは一級の構成要素ではあっても、組織原理ではありません。かんばんボードは自動化され、CIは組み込まれ、コードインテリジェンスも内蔵されており、単にコードが置かれる場所ではなく、チームが生活する場所になることを目指しています。これは根本的に異なる製品であり、だからこそ「どちらがgitをよりうまくホストするか」でGiteaと比較するのは的外れです。両者はほぼ同程度にうまくgitをホストします。OneDevは単にそれ以上のことをやりたいのであり、その特権の代償をリソースで支払わせるのです。

この先のすべては、この分岐に対応しています。Gitea対Forgejoの選択は、「軽量フォージ」という分岐の中のサブ決定です。「OneDevは検討する価値があるか」という問いは、まったく別の分岐です。

Gitea対Forgejo:ほぼ双子の選択

Comparison of Gitea and Forgejo governance: Gitea is MIT-licensed, company-backed, with an Enterprise tier and larger ecosystem, while Forgejo is GPL-3.0, non-profit governed, with public security disclosures and an all-free build.

どちらもRAM使用量は180~350 MB程度で、フォークするまでは同じコードベースを共有しており、コアとなるgitホスティングのやり方も同じです。リポジトリ、プルリクエスト、コードレビュー、issue、Actions形式のCIについては、既存のGitHub Actionsワークフローを移行するのでなければ、日常利用で意味のある違いを見つけるのに苦労するでしょう。最初にはっきりさせておくと、これは機能の争いではありません。onedev対giteaの差は大きく、gitea対forgejoの差は、誰がプロジェクトを管理し、どのライセンスの下で提供するかという点にあります。

実際に知っておくべき背景はこうです。2022年10月、Giteaのドメインと商標がガバナンス紛争の中心となり、それに対する応答としてForgejoが生まれました。Forgejoは現在、ドイツの非営利団体であるCodeberg e.V.の下にあり、GPL-3.0の下で提供されています。GiteaはMITライセンスのままで、無料のオープンソースセルフホスト版を持ち、CommitGoがそれと並行してGitea Enterpriseを販売しています。 Forgejoはその取り決めを Open Coreと表現していますが、Gitea/CommitGo側はこの呼び方に異議を唱え、オープンソースのGiteaプロジェクト自体には独自のコードは含まれていないと主張しています。読者にとっての実務上の違いは、こうした立場の対立よりもシンプルです。Forgejoは非営利、コピーレフト、完全無料のガバナンスを重視しており、Giteaは寛容なMITライセンスのコアに加えてベンダー支援のEnterpriseの経路を提供しています。

そこから導かれることが3つあり、それぞれが判断に関わります

  • ライセンス。 GPL-3.0のコピーレフト(Forgejo)は、Forgejoを改変して改変版を配布する場合、その変更をGPLの下で共有しなければならないことを意味します。MIT(Gitea)にはその義務はありません。改変せずに社内でインスタンスを運用しているほとんどのチームにとって、これは問題になりません。しかし、フォージの上に何かを構築して出荷するのであれば、重要な違いになります。
  • セキュリティ問題の開示。 Forgejoは公開チャンネルを通じて、すべての人にセキュリティアドバイザリを通知します。Giteaは事前のセキュリティ通知を有料のEnterprise顧客向けに留保しており、これは無料ティアでセルフホストしている管理者が、有料顧客よりも長く既知の脆弱性にさらされる可能性があることを意味します。無料版を使っているなら、この非対称性は知っておく価値があります。
  • 片方には有料ティアが存在します。 Giteaには商用のEnterprise Edition($9.50~$19/ユーザー/月)があり、SSO、監査ログ、優先サポート、SLAが追加されます。Forgejoに有料ティアはなく、すべての機能が無料のGPLビルドに含まれています。

現在Giteaを使っていて、これを読んでForgejoに傾いたなら、良い知らせがあります。サポートされる移行パスが存在します(Gitea 1.22にバージョンの崖があり、始める前に理解しておく価値があります)。それについては別途まとめてあります。 完全な移行手順の解説 にバージョンごとの詳細な内訳があります。GitHubから移行しようとしていて、まだどのフォージにするか決めていない場合、それは独自のトレードオフを伴う別の判断であり、それ自体としてじっくり検討する価値があります。

このセクションの要点: 基本的なgitホスティング機能に関しては、GiteaとForgejoは互角です。非営利団体による運営、コピーレフト、セキュリティ問題の公開開示を重視するならForgejoを選び、MITライセンス、より大きなコミュニティ、商用のEnterpriseプランを重視するならGiteaを選んでください。

OneDevが本当に他と異なる点

OneDev(執筆時点でv16.0.1)を1日動かしてみると、最初に気づくのはCIランナーを一度も別途デプロイしていないという点です。ビルドデーモンはOneDevサーバー自体の中で動くため、プラットフォームが起動した瞬間からCIが機能します。YAMLを一行も書かずにGUIでパイプラインを組み、Webターミナルでジョブをデバッグし、pushする前にコミットしていないローカルの変更に対してビルドをテストすることさえできます。これは、GiteaやForgejoが要求する「サーバーをインストールし、その後別途ランナーをインストールして登録する」という手順に比べて、運用面での明確な簡略化です。

ただし注意点があり、既存チームにとっては大きな問題になりますが、OneDevは独自のYAML方言を使用しています。それは ありません GitHub Actions互換ではありません。GitHub、Gitea、Forgejo向けに書いたワークフローはすべて、OneDevで動かすために書き直す必要があります。頼りにしている.github/workflowsファイル群があるなら、それは注釈程度ではなく、本物の移行コストです。GiteaとForgejoはどちらもGitHub Actionsのエコシステムを受け継いでいますが、その受け継ぎ方は同じではありません。Gitea ActionsはGitHub Actionsの代替として設計されているため、ほとんどのワークフローは変更なしで移行できます。Forgejoのランナーは実際には互換性がありますが、文書化されたギャップがあります。permissionsサブキーの欠落、continue-on-errorが無視される、OIDCの構文が異なる、といった点です。完全な移植性を前提とする前に、これらを確認してください。

OneDevが小規模なフォージにはない、もう1つの特徴がWeb UI内のコードインテリジェンスです。シンボル検索、定義へのジャンプ、参照の検索が、リポジトリをローカルにクローンすることなく、さまざまな言語(公式リストにはJava、JavaScript、C、C++、C#、Go、PHP、Pythonが含まれます)にわたって機能します。GiteaとForgejoにはこれに相当する機能が内蔵されていないため、外部ツールに頼ることになります。チームがブラウザ上でのコードレビューを頻繁に行うのであれば、これは純粋に嬉しい機能です。

さらに、ルールベースでタスクを自動で動かす完全自動化されたかんばん(カスタムの状態やフィールド、遷移ルールを含む)、送信者がアカウントを持たなくても受信メールをイシューに変換するサービスデスク、公開プロジェクト内での非公開イシューまで揃っています。要するにOneDevは、イシュートラッカーとCIシステムとコードブラウザとプロジェクトボードを、すべて1つにまとめようとしているのです。

パッケージレジストリについて、はっきりさせておくべき点が1つあります。OneDevには組み込みのレジストリがあり、その部分は明確です。その パッケージのチュートリアル はDocker、npm、NuGet、Maven、PyPI、RubyGemsを挙げており、現行の製品説明ではHelmにも言及しています。一方GiteaとForgejoは、Alpine、Arch、Cargo、Composer、Conan、Conda、Debian、Go、Helm、Maven、npm、NuGet、PyPI、RPM、RubyGems、Swift、Vagrantなど、依然としてはるかに幅広いパッケージ形式をカバーしています。チームがOneDevの限られたレジストリセットの外にあるパッケージ形式に依存している場合は、GiteaかForgejoを選ぶ方が安全です。

このセクションの要点: OneDevは1回のインストールで、内蔵CI、コードインテリジェンス、フル機能のPMスイートを手に入れられます。その代償として、GitHub Actionsのワークフローを書き直す必要があり、小さめのエコシステムを受け入れることになり、そして(次のセクションで扱うように)より多くのRAMを与える必要があります。

リソースコスト: それぞれが実際に必要とするもの

Idle RAM comparison showing Forgejo at about 180 MB and Gitea at about 200 MB as lightweight forges, versus OneDev at about 600 MB idle as an all-in-one platform, with VPS sizing guidance of 1 GB for a lean manual install and 4 GB or more for OneDev.

多くのチームにとってこの比較全体を左右する数値は、nodatools.comのテスト結果から来ています。それによると、OneDevのアイドル時のRAM使用量は約600 MBだったのに対し、Forgejoは約180 MBでした。これは3倍以上の差であり、負荷がかかるとさらに開きます。以下は彼らが測定した数値です nodatools.com's measured comparison、新規のVPSで実行します。

ツール現在のバージョンアイドル時のRAM(実測)負荷時のアクティブRAM(実測)公式の最小要件
Forgejov15.0.3 LTS約180 MB約320 MB512 MB
Gitea1.26.4約200 MB約350 MB512 MB
OneDev16.0.1約600 MB約950 MB2 GB

なぜこれほどの差が生まれるのでしょうか。OneDevは主にJavaで書かれているため、Go言語で書かれたGiteaやForgejoにはない、JVMのヒープによるオーバーヘッドを抱えています。それに加えて、OneDevはコードインテリジェンス機能のためにコードをインデックス化しており、この初回のインデックス作成が大量のメモリを消費します。私が最初に構築したときは、起動時のメモリスパイクが最も不安を感じさせる部分でしたが、それは定常状態ではありません。

プロのヒント: OneDevの起動時メモリ使用量に慌てないでください。起動直後はJVMのウォームアップと初回のコードインデックス構築のために一時的に高くなり、安定すればアイドル時の値に落ち着きます。とはいえ、アイドル時ではなく現実的な稼働時の数値を基準に計画してください。CIがジョブを実行している状態では、常に1〜2 GBを見込んでおくべきです。公式の最小要件が2 GBとされているのには理由があります。

サイジングの観点では、これはそのままVPSのティアに対応します。

  • Forgejo、またはGiteaの基本インストールで、CIランナーをそのマシンに置かない場合。 1 GB RAM / 1 vCPU is comfortable.
  • 同じサーバー上にCIランナーを持つForgejoまたはGitea。 ランナーに余裕を持たせるため、4 GB RAM / 2 vCPUに引き上げてください。
  • OneDev、基本インストール。 4 GB RAM is the practical floor. Go to 8 GB if code indexing is heavy or CI is busy.

つまり、コストの差は決して小さくありません。1 GBのサーバーで快適に動く軽量なgitサーバーと、4 GBを要求するOneDevインスタンスとでは、月々のVPS料金がほぼ2倍になります。個人開発者や小規模チームにとっては、「実質無料で運用できる」状態と、目に見える出費との違いになります。一方、内蔵のCIやPMを毎日活用する大規模チームにとっては、十分に見合う投資です。とはいえこれは正真正銘のトレードオフであり、OneDevのオーバーヘッドはJVMそのものであり、そのコストはJVM上で動くもの全てへの対価です。

Gitea, Forgejo、そして OneDev は、いずれもワンクリックでデプロイできます Cloudzy のマーケットプレイス。サイズを決めてしまえば、フォージを立ち上げるのはDockerと格闘する半日仕事ではなく、数分の作業になります。CIランナーやOneDevのコードインデックスを実行している場合、追加の余裕は Linux VPS にはrootアクセスが付属しており、JVMのヒープサイズやランナーの並列度を自分で調整できます。

Cloudzy特有の注意点が1つあります。Marketplaceのアプリカードは現在、Gitea、Forgejo、OneDevをいずれも2 GBのRAMから開始する設定になっています。上記の1 GBという推奨値は、ローカルのCIランナーを持たない、無駄のない手動インストールに当てはまるものです。Cloudzy Marketplace経由でデプロイする場合は、OS、データベース、パッケージの更新、バックグラウンドサービスに余裕を持たせるため、アプリカードの最小要件に従ってください。

どちらを選ぶべきか

表とトレードオフはすでにご覧いただいたので、3つすべてを実際に運用してきた立場から、読者のタイプ別にはっきりとした結論をお伝えします。

Forgejoを選ぶ Actions形式のCIを備えた、軽量でコミュニティ運営のフォージが欲しく、GitHub Actionsとのわずかなワークフローの違いを許容できる場合です。これはほとんどのチームに対する私のデフォルトの推奨です。Giteaと同等の基本的なgitホスティング機能を得られる上に、よりすっきりした非営利の運営体制、セキュリティ問題の公開開示、コピーレフトライセンス、そして3つの中で最も軽いRAM使用量が手に入ります。他を選ぶ特別な理由がないのであれば、これを選んでください。

Giteaを選ぶべきなのは、次の場合です 特にMITライセンス(ForgejoのGPL-3.0より寛容)、最大のフォージコミュニティとエコシステム、あるいはSSO、監査ログ、SLA付きの商用Enterpriseプランを求めている場合です。純粋なgitホスティング機能ではForgejoと互角なので、ライセンスや運営形態に対する好み、そして組織として問い合わせ先のベンダーが必要であれば有償サポートの選択肢によって選ぶことになります。

OneDevを選ぶべきなのは、次の場合です プロジェクト管理、CI、コードインテリジェンスが1回のインストールで揃っていることを望んでおり、ゼロから始める(移行すべき既存のGitHub Actionsワークフローがない)状況で、4 GB以上のサーバーを用意するRAMの予算がある場合です。Forgejoかonedevかという判断は、突き詰めれば次の問いに行き着きます。gitサーバーが欲しいのか、それともプラットフォームが欲しいのか。答えが「プラットフォームであり、自分でCIを組み立てたくない」なのであれば、OneDevのオーバーヘッドはそれに見合う価値があります。

見落としがちな判断材料が1つあります。Gitea/ForgejoファミリーとOneDevの間には移行パスがありません。データモデル、CI形式、スキーマがそれぞれ異なります。Forgejoで始めて後からOneDevを使いたくなった場合(あるいはその逆)、CI履歴とプロジェクト管理データを失う、APIベースのリポジトリ単位の移行を行うことになります。ですから、OneDevのオールインワンのアプローチに少しでも魅力を感じるなら、後から乗り換えるよりも最初からそこで始める方がはるかに安上がりです。GiteaとForgejoの間には移行パスが存在します(それが 移行経路 上記で説明済み)、軽量なフォージからOneDevへの一線を越えることは、後戻りできない、何かを失う移行になります。この点は18か月後ではなく、今の判断に織り込んでおいてください。

よくある質問

Giteaは今もオープンソースですか。

はい。Giteaのコア部分はMITライセンスであり、ユーザー数やリポジトリ数に制限なく無料でセルフホストできます。実務上の注意点はソースの公開度ではなくガバナンスにあります。Giteaは企業によって管理されており、CommitGoを通じたベンダー支援のEnterpriseプランがある一方、Forgejoはコミュニティによって運営される、Codeberg e.V.傘下のGPLライセンスのフォークです。ForgejoはGiteaの商用体制をOpen Coreと表現していますが、 Gitea/CommitGoはそのレッテルに異議を唱えています オープンソースのプロジェクト自体には独自(プロプライエタリ)のコードは含まれていないと述べています。つまりGiteaは今なお正真正銘のオープンソースですが、Forgejoと同じ意味でコミュニティによって運営されているわけではありません。

ForgejoはGiteaより優れていますか。

コアとなるgitホスティングに関しては、両者はほぼ同一です。ForgejoはGiteaからフォークし、同じベースを共有しています。Forgejoが異なるのは、ガバナンス(非営利のCodeberg e.V.)、ライセンス(GPL-3.0のコピーレフト対GiteaのMIT)、セキュリティ情報の開示(全員に公開対Giteaのエンタープライズ顧客優先ポリシー)です。「どちらが優れているか」は、これらの点があなたにとって重要かどうかに左右され、機能だけを見れば引き分けです。

OneDevにはどれくらいのRAMが必要ですか。

OneDevの公式の最小要件は2 GBのRAMです。nodatools.comのテストでは、アイドル時は約600 MB、負荷時は約950 MBに達しました。JVMのウォームアップとインデックス作成が完了するまでは、起動時にはさらに高くなることがありますが、CIが実際に稼働している状態では、常時1~2 GBを見込んでおくべきです。比較として、同じテストではForgejoとGiteaはアイドル時で約180~200 MBでした。

GiteaからOneDevへ、あるいはOneDevからForgejoへ移行できますか。

Gitea/ForgejoファミリーとOneDevの間に直接の移行パスは存在しません。データモデル、CI形式、スキーマがそれぞれ異なるため、移行にはAPIベースのリポジトリ単位の移行が必要になり、CIとプロジェクト管理の履歴は失われます。GiteaとForgejoの間には移行パスが存在します( 当社のGiteaからForgejoへの移行ガイド)。両者は系譜を共有しているためです。

OneDevはGitHub Actionsをサポートしていますか。

いいえ。OneDevは独自のYAML方言とGUIのパイプラインエディタを使用するため、GitHub、Gitea、Forgejo向けに書かれたワークフローは、それで動かすために書き直す必要があります。Gitea Actionsは代替として動作するよう設計されているため、既存のワークフローのほとんどは変更なしで動きます。Forgejoのランナーは実際には互換性がありますが、GitHub Actionsを正確に再現するようには設計されていません。完全な移植性を前提とする前に、公式のForgejoドキュメントで文書化された非互換性を確認してください。

Share

ブログの他の記事

読み進める。

デプロイの準備はできましたか? 月額2.48ドルから。

2008年から独立運営のクラウド。AMD EPYC、NVMe、40 Gbps。14日間返金保証。