課題:GitHubやGitLabが唯一の選択肢ではなくなった時
チーム内でコードを管理したいけれど、GitHub Enterpriseの高額なコストが気になりませんか?あるいは、2GB RAMのVPSにGitLabをインストールして、リソース不足でシステムがフリーズしてしまった苦い経験はないでしょうか?私自身、スタートアップでデータのセキュリティを強化する必要があった際、インフラ予算が限られている中で同じようなジレンマに陥ったことがあります。
軽量さが売りのセルフホスト型Gitといえば、以前はGiteaが一番人気でした。しかし、プロジェクトの商業化が進む中で、コミュニティは「決別」を選択しました。そうして誕生したのが、透明性を重視した完全オープンソースのフォーク版Forgejoです。すでにGiteaを使っている方なら、Forgejoへの移行は新しい服を着替えるような感覚で、より大きな安心感を得られるはずです。
解決策を探し始めた当初、私はあえてスペックの低いVPSにForgejoをデプロイしてみました。その結果、パフォーマンスの良さに衝撃を受けました。ここでは、このシステムを導入する際に得られた実体験に基づいたノウハウを共有します。
Forgejoの核心概念
Forgejoとは?
Forgejo(フォージョと発音 /for-‘dʒe-jo/)は、セルフホスト型のGit管理プラットフォームです. Giteaのソースコードを100%継承していますが、営利目的ではなくコミュニティ主導で運営されています。Forgejoは、特定の組織がこの自由なソフトウェアの開発の方向性を支配したり制限したりしないことを保証するために生まれました。
なぜGiteaやGitLabではなくForgejoを選ぶのか?
- 超低メモリ消費: Raspberry Piでもサクサク動作します。実際、アイドル時のメモリ使用量はわずか60〜100MB程度で、GitLabの10分の1以下です。
- 一瞬でデプロイ: 実行ファイル1つ、またはDockerコンテナ1つで準備完了です。
- 馴染みのあるUI: GitHubに非常に近いレイアウトです。私のチームの新人メンバーも、5分もかからずに使い方を覚え、コードのプッシュを始められました。
- トラッキングなし: 商用版によく見られるユーザー行動の追跡コードを完全に排除しており、セキュリティパッチの適用も非常に迅速です。
実践:Docker ComposeによるForgejoのインストール
Dockerを使うのが最も手っ取り早く、クリーンな方法です。データベースのインストールやOS上の複雑な環境設定に悩まされる必要はありません。
1. 環境の準備
DockerがインストールされたUbuntuサーバーが必要です。もしサーバーがまだ「さら」の状態なら、以下のコマンドを実行してください:
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
2. Docker Compose設定ファイルの作成
後でバックアップしやすいように、すべてを1つのディレクトリにまとめましょう:
mkdir forgejo-server && cd forgejo-server
nano docker-compose.yml
以下のコードをファイルに貼り付けます。ここでは手軽なSQLiteを使用します。チームが50人以上の大規模になる場合は、より負荷に強いPostgreSQLへの変更を検討してください。
version: "3"
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:latest
container_name: forgejo
restart: always
networks:
- forgejo
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:22"
environment:
- USER_UID=1000
- USER_GID=1000
ヒント: GitのSSHポートを2222に設定しています。これにより、サーバーへのリモートアクセスに使用するデフォルトの22番ポートとの衝突を避けることができます。
3. Forgejoの起動
コマンド1つでサーバーを起動します:
docker-compose up -d
次に、ブラウザを開き、http://あなたのサーバーIP:3000 にアクセスしてください。Forgejoのウェルカム画面がすぐに表示されます。
4. Web UIでのクイック設定
このステップでは、以下の点に注意してください:
- データベースタイプ: 小規模なプロジェクトならSQLite3のままでOKです。
- サーバーURL: IPアドレスまたはドメインを入力します(例:git.my-lab.com)。
- SSHポート: 2222を入力します(先ほどのDockerファイルの設定と合わせます)。
- 管理者アカウント: このステップで必ず作成してください。空欄にすると、最初にサイトに登録した人が自動的に管理者になってしまいます!
実践経験:ForgejoでのGit Flowের運用
私の8人のチームでは、Forgejoへの移行により、ケアレスミスによるマージコンフリクトが60%減少しました。その秘訣はProtected Branches(保護されたブランチ)機能にあります。
mainブランチをロックし、直接のプッシュを禁止しました。すべての変更はプルリクエスト(PR)を経由する必要があります。ForgejoのPRインターフェースは非常に見やすく、コードの各行に対して直接レビューやコメントが可能です。そのおかげでオンラインのコードレビューが非常に効率的になり、ジュニアメンバーの成長も早まりました。
私たちのチームで運用している標準フロー:
developブランチからfeature/新機能ブランチを切り出す。- 実装が完了したら
developに向けてPRを作成する。 - 最低1人の他のメンバーがレビューし、承認(Approve)する。
- テストのために
developへマージする。
大きなメリットは、ForgejoにイシュートラッカーとWikiが標準で組み込まれていることです。複雑なプラグインを追加することなく、タスク管理をスムーズに行えます。
結論
専用のGitサーバーを構築することは、噂ほど難しくありません。Forgejoはリソースを節約するだけでなく、知的財産を完全に自分たちの手で管理できる安心感をもたらします。スタートアップやDevOpsエンジニアにとって、独自のForgejoインスタンスを運用することは、Dockerやソースコード管理を深く理解するための最高の練習台になるでしょう。
機能性とスピードの完璧なバランスを求めているなら、Forgejoは今最も安全な選択肢です。迷わず今すぐインストールしてみてください。なぜもっと早く使わなかったのかと驚くはずです!

