今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

go-gitea/gitea

GitHub・GitLab・Bitbucketの代わりになる自前ホスト型のGit・CI/CDサービス

単一のGoバイナリを起動するだけで、GitHubやGitLabにあるようなIssue管理・パッケージレジストリ・CI/CDまでが自分のサーバー上で動き出します。既存のGitHub Actionsのワークフローファイルはそのまま使えるので、書き直す手間なく低スペックなサーバーやエッジデバイスに移設できるのを、その場で確認できます。ソースコードやCIの実行結果を外部クラウドに預けず、手元のインフラだけで完結させたいチームなら、今日中に試す価値があります。

01 / 概要
何をするものか一文で言うと
ひとことでGitHub・GitLab・Bitbucketの代わりになる自前ホスト型のGit・CI/CDサービス

Gitea は、Gitリポジトリのホスティング、コードレビュー、課題管理、Wiki、パッケージレジストリ、GitHub Actions互換のCI/CDまでを1つのソフトウェアにまとめた、自己ホスト型の開発プラットフォームです。Go言語で書かれており、Linux・macOS・Windowsなど幅広い環境で単一バイナリとして動作します。READMEには「painless self-hosted all-in-one software development service」と明記されています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

エントリーポイントは cmd/main.go で、urfave/cli/v3を使って web・admin・actions・doctor・dump などのサブコマンドに処理を振り分けます。cmd/admin.go や cmd/actions.go を見ると、各サブコマンドが models 層やservices層の関数を直接呼び出す構成だとわかります。フロントエンドはVue・TypeScriptで書かれ、pnpmとwebpackでビルドされたアセットが public/assets に置かれ、バイナリにbindataとして埋め込まれます。Dockerfileは2段階ビルドで、frontend-buildステージでpnpm installとmake frontendを実行し、build-envステージでmake backendによりGoバイナリを生成します。実行時イメージはs6-svscanでgiteaプロセスとopensshを監視するs6構成になっています(docker/root/etc/s6配下)。go.modには blevesearch、xorm系ORM相当のDBドライバ、meilisearch、prometheusクライアントなど多数の依存が含まれ、検索・メトリクス・複数DB対応の作り込みがうかがえます。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    まずDockerfileを見ると、frontend-buildとbuild-envの2段階でpnpm installとmake backendが実行されるため、ビルドにはGo1.27とNode系ツールが必要だとわかります。

  2. STEP 02

    docker pullやビルド後にコンテナを起動すると、docker/root/etc/s6の設定に従いs6-svscanがgiteaプロセスとopensshを同時に監視し、ポート22と3000が公開されます。

  3. STEP 03

    初回アクセス時はGiteaのインストールウィザード画面が表示され、DB接続情報や管理者アカウントを入力する必要があります(custom/conf/app.example.iniが設定の雛形になります)。

  4. STEP 04

    cmd/admin.goのnewUserCommandやnewAuthCommandから、CLI経由でもユーザー作成や認証ソース(LDAP・OAuth・SMTP)の追加ができることが確認できます。

  5. STEP 05

    cmd/actions.goのgenerate-runner-tokenコマンドを使うと、GitHub Actions互換のランナーを登録するためのトークンを発行できます。

  6. STEP 06

    開発モードでは.air.tomlの設定に従い、air経由でGoファイル変更時にmake backendが自動再実行され、ホットリロード開発ができます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

ビルドすると、Git・SSH・Web UI・Actions・パッケージレジストリを一体化した単一のgiteaバイナリまたはDockerイメージが手に入ります。起動後はブラウザからリポジトリ作成、Issue・PR管理、GitHub Actions互換ワークフローの実行、npm・Maven・Dockerレジストリ相当のパッケージ公開までを1つの管理画面で行えます。CLI(cmd/以下)を使えば、ユーザー管理や認証ソース設定、ランナートークン発行などの運用作業も自動化できます。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

go.modの依存が数百件規模で、フロントエンドビルドにpnpm、バックエンドビルドにGo1.27toolchainが必要なため、ビルド環境の準備自体に一定の手間がかかります。

02

本番運用では、SQLiteだけでなくMySQL・PostgreSQL・MSSQLなど外部DBの設定が前提になっている箇所が多く、custom/conf/app.example.iniの設定項目を理解する必要があります。

03

Dockerイメージはrootとrootless版の2種類が用意されており、権限モデルの違いを把握してから選ぶ必要があります。

04

READMEやDockerfileから機能と構成の全体像は把握できますが、実際のWeb UIの挙動やActionsランナーとの連携動作は、ソースコード読解だけでは細部まで確認しきれません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

GitHub・GitLabのような機能を自社サーバーに完全に持ち込みたいチームや、軽量な単一バイナリでGitホスティングを運用したい個人・小規模組織に向いています。cmd/以下のCLI実装やDockerfile・s6構成、go.modの依存構成から、機能範囲とビルド・運用の仕組みは高い精度で把握できます。ただし実際のUI操作感やActionsランナーとの結合部分の細かな挙動までは、提供された資料だけでは断定できない部分が残ります。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する