ソースコードを複数人で書いていると、「最新のファイルはどれか」「誰がいつ、どこを直したのか」という悩みが必ず出てきます。この悩みを解決する仕組みが Git で、Git で管理したコードを置き、メンバーで共有する場所が「Git ホスティングサービス」です。Gitea は、その場所を自分たちのサーバーに用意するためのソフトウェアです。

Gitea は、自分たちを「セルフホスト型で、すべてを一つにまとめた開発サービス」と説明しています。コードの保管だけでなく、変更内容のレビュー、課題の管理、自動テストの実行、成果物の配布までを、一つの画面とひとつのサービスで扱えます。この記事では、Gitea が何をするものなのか、何に向いていて、何を引き受ける必要があるのかを順に整理します。

動く場所

自分たちのサーバーで動かすサービスです。利用者のデータも自分たちの手元にあります。

できること

リポジトリ、プルリクエスト、課題管理、Wiki、CI/CD、パッケージ管理です。

軽さ

導入と保守が容易であることを特徴に掲げており、データベースを用意しなくても動き始められます。

ライセンス

MIT ライセンスのオープンソースです。

自分で動かすということは、自分で守るということ

最初に、導入前に知っておきたい負担から書きます。Gitea はセルフホスト型です。サービスを動かすサーバーを用意し、起動し続け、更新し、壊れたときに戻せるようにするのは、利用する側の仕事になります。

具体的には、次の三つが日常の作業として発生します。

  • バックアップを取る仕事です。 ソースコードは組織の財産であり、失われると取り戻せません。Gitea のバックアップは、サービスを止めたうえで専用のコマンドを実行する形が基本です。取り方と戻し方は、バックアップとリストアで詳しく扱います。
  • 更新を続ける仕事です。 新しいバージョンが出たら、変更点を確認したうえで入れ替えます。マイナーバージョンをまたぐ更新ではデータベースの構造も書き換わるため、事前のバックアップが前提です。進め方はアップグレードの進め方にまとめています。
  • 実行環境を信頼できるものに保つ仕事です。 Gitea Actions のようにジョブを別の実行役(ランナー)に任せる機能では、信頼できないランナーを使わないことが重要だと明記されています。サーバーの管理が一か所に集まる分、その一か所の安全に責任を持つことになります。

クラウド上の既成サービスを使えば、これらの作業は提供側が担ってくれます。Gitea を選ぶということは、その手間と引き換えに、データの置き場所・機能の使い方・費用の構造を自分たちで決める道を選ぶことです。そこで次に、その見返りが何なのかを見ていきます。

コードから配布まで、一つの画面で完結する

Gitea が扱う領域は、リポジトリの閲覧だけにとどまりません。ドキュメントでは、次のような機能が挙げられています。

領域 できること
コードホスティング リポジトリ、コミット履歴、ブランチ、タグの管理
コードレビュー プルリクエストと、AGit ワークフローによるレビュー
課題管理 課題(イシュー)、マイルストーン、ラベル、プロジェクトボード
協働 Wiki、チーム単位の権限管理
CI/CD Gitea Actions(GitHub Actions と互換性のあるワークフロー)
成果物の配布 npm、Maven、コンテナなど、多くの形式に対応したパッケージレジストリ
セキュリティ 権限管理、アクセス制御リスト、監査ログ

この表の中身が一つのサービスにまとまっていることには、実務上の意味があります。たとえば、課題に書かれた不具合の報告から修正のブランチを作り、プルリクエストでレビューを受け、マージされたらワークフローが自動でテストとビルドを行い、できあがったコンテナイメージを同じサービスのレジストリに登録する、という流れが、サービスを行き来せずに完結します。ツールごとにアカウントや権限を作り直す必要がありません。

権限の考え方も一貫しています。リポジトリの各機能には「読む」「書く」といった水準が定められ、チーム単位でまとめて割り当てられます。メンバーの入れ替わりがあっても、チームの所属を変えるだけで済みます。この仕組みは、組織とチームで権限を設計するで具体例とともに取り上げます。

小さなサーバーでも動き出せる理由

Gitea は Go 言語で作られています。Go で書かれたプログラムは、実行に必要なものが一つのファイルにまとまりやすく、対応する環境が広いのが特徴です。Gitea のリポジトリには、Linux、macOS、FreeBSD や OpenBSD、Windows といった OS と、x86、amd64、ARM、RISC-V 64、PowerPC といった CPU に対応していると記載されています。

そのため、大きなサーバーを持たない組織でも導入しやすくなっています。Raspberry Pi のような ARM の小型機でも、事務所の片隅にある古い PC でも、同じソフトウェアが動きます。バイナリ(実行ファイル)で導入する場合に必要なのは、Git 2.0 以上と、使うデータベースの準備だけです。データベースは、何も設定しなければ SQLite が使われます。SQLite は別のサービスを立ち上げる必要がなく、試用や少人数での利用には手軽です。

導入の方法も選べます。バイナリを置いて起動する方法、Docker のイメージを使う方法があり、まず試すだけなら Docker が最短です。手順はDocker Compose で Gitea を導入するで、設定ファイルの全体を示します。

軽く動くことは、運用の負担を下げる効果もあります。必要なリソースが小さければ、専用のサーバーを新たに調達する理由が減り、既存の環境に同居させやすくなります。先に挙げた「自分で守る」負担を、無理のない範囲に収めるための土台になっているのです。

MIT ライセンスと、複数言語の画面

Gitea は MIT ライセンスのオープンソースです。MIT ライセンスは、利用・改変・再配布を広く認める、条件の少ないライセンスとして知られています。社内での利用に追加の費用は発生せず、ソースコードも公開されているため、どのような仕組みで動いているのかを自分たちで確認できます。

もうひとつ、利用者にとって大きいのが多言語対応です。Gitea は画面を複数の言語で表示できる作りになっており、メンバーが使い慣れた言語で操作できます。開発に慣れていない人が加わる場面でも、画面の言葉が母語であることは、最初のつまずきを減らします。

どんな組織に向いているか

ここまでの内容を踏まえると、Gitea が力を発揮するのは、次のような状況です。

向いている状況

  • ソースコードやドキュメントを、自分たちの管理下のサーバーに置きたい
  • 少人数から中規模のチームで、リポジトリ・レビュー・CI をまとめて使いたい
  • 小さなサーバーや既存の環境で、手軽に動かしたい
  • 既存の GitHub 向けのワークフローの考え方を、そのまま活かしたい

慎重に考えたい状況

  • サーバーの運用や、バックアップの手順を担当できる人がいない
  • 利用者の多さに合わせた、大規模な構成の設計が必要になる
  • SQLite のまま、多くの利用者が同時に使い続けようとしている

最後の「SQLite のまま多くの利用者が使う」という点には注意が必要です。ドキュメントは、データベースの種類は最初の導入時に選ぶものであり、SQLite は規模が大きくなる場合に向かないと述べています。別の種類のデータベースへ変換する作業も、十分に検証された手順ではないと明記されています。使う人数が増えそうなら、最初から MySQL や PostgreSQL を選ぶのが安全です。選び方はデータベースの選び方で整理しています。

Gitea を構成する部品を知っておく

導入を考えるときは、Gitea が何と何で成り立っているのかを、先に頭に入れておくと見通しがよくなります。ドキュメントの説明をたどると、次の部品が見えてきます。

  • Gitea 本体です。 Web の画面と、Git の通信を受け付けるプログラムです。HTTP の通信用のポートと、SSH の通信用のポートの二つを使います。Docker の例では、画面が 3000 番、SSH がコンテナ内の 22 番です。
  • データベースです。 利用者、組織、課題、プルリクエストの情報など、リポジトリの中身以外のデータを保管します。
  • リポジトリのディレクトリです。 Git のデータそのものが保存される場所です。バックアップの対象に、リポジトリのディレクトリが独立して含まれていることからも、データベースとは別に管理されていると分かります。
  • データのディレクトリです。 添付ファイル、アバター、LFS のデータなどが入ります。設定の APP_DATA_PATH で場所が決まります。
  • 設定ファイル app.ini です。 動作に関する設定をまとめたファイルです。環境変数で上書きすることもできます。
  • ランナーです。 Gitea Actions のジョブを実行する、別のプログラムです。本体とは別のマシンに置くこともできます。
  • 外部のストレージです。 設定すれば、S3 や MinIO のような外部のストレージにデータを置けます。更新のときのバックアップの対象に、外部のストレージも含まれることが、ドキュメントに書かれています。

部品が分かれていることは、運用の面で意味を持ちます。バックアップでは、データベース、リポジトリ、データ、設定のどれが欠けても、完全には戻せません。更新では、データベースの構造が書き換わります。ランナーは、本体と別に信頼を考えます。この記事のあとに並ぶ導入、バックアップ、更新、自動化の各記事は、どれもこの部品のどこを扱っているのかを意識すると、理解しやすくなります。

導入した組織の、ある一日を想像する

機能の一覧だけでは、実際の使い心地が思い浮かびにくいものです。ここでは、Gitea を使う小さな開発チームの一日を、想像上の例として描いてみます。実在の組織の話ではなく、機能の関係を理解するための例です。

朝、担当者が課題の一覧を開き、直す予定の不具合を一つ選びます。課題には、不具合の内容と、再現する手順が書かれています。担当者は、その課題をもとに作業用のブランチを作り、修正をコミットして push します。

昼前に、プルリクエストを出します。タイトルの先頭には WIP: を付け、途中経過であることを示します。チームの仲間が画面を開き、変更の方向性についてコメントを残します。担当者はコメントを受けて追加のコミットを送り、仕上がった段階で、WIP: を外します。

プルリクエストが出された時点で、ワークフローが自動で動き、テストが実行されます。結果は、プルリクエストの画面で確認できます。担当の仲間は、テストが通っていることを見たうえで、差分を読み、承認します。マージされたあとは、ビルドの成果物が、パッケージとして登録されます。

この一日の中で、利用者は画面を行き来していません。課題、ブランチ、プルリクエスト、自動テスト、成果物の登録が、同じサービスの上でつながっています。ひとつの流れの中で、誰が、いつ、何をしたのかが記録として残り、あとから振り返れることも、運営する側にとっては大きな利点です。

もちろん、これは理想的な流れの一例です。実際には、チームの規模や、扱うものの性質によって、必要な機能は変わります。すべてを一度に使いこなそうとせず、まずはリポジトリとプルリクエストから始め、必要に応じて自動化や成果物の管理を足していく進め方が、無理がありません。

手元で動かして確かめるところから

Gitea を知るいちばん確かな方法は、実際に動かしてみることです。Docker が使える環境なら、設定ファイルを一つ書いて起動するだけで、数分でブラウザーから初期設定の画面を開けます。テスト用のリポジトリを一つ作り、ファイルを push して、プルリクエストを作る。そこまで体験すれば、普段使っているサービスとの違いや、自分たちの運用に合うかどうかが具体的に見えてきます。

自分で運用する負担は確かにあります。一方で、データの置き場所を自分で決められること、機能が一つのサービスにそろっていること、小さな環境でも動くことは、多くの組織にとって大きな利点です。まずは試用の環境を作り、次の記事で導入の手順を確認してみてください。この記事の内容は、2026年11月15日時点のドキュメントに基づいています。