Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Self Hosting Forgejo

2025年09月17日に「Dev.to」が公開したITニュース「Self Hosting Forgejo」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Forgejoは、GitHubのようにソースコードを管理するGitソフトウェアを自分で運用できる軽量サービスだ。データ管理を完全に自前で行いたいSE初心者向けに、Ansibleで簡単にサーバーへ導入し、Nginxで公開する方法や、CLIでのユーザー管理など、運用・保守のポイントを解説する。低リソースで運用でき、メンテナンスも容易だ。

出典: Self Hosting Forgejo | Dev.to公開日:

ITニュース解説

Forgejoは、Gitを使ったソフトウェア開発プロジェクトを管理するためのシステム、「Gitソフトウェアフォージ」として知られるツールのひとつである。これは、多くの人が利用するGitHubのようなサービスを、自分でサーバーを用意して運用(セルフホスト)できるというものだ。Forgejoをセルフホストすることで、開発プロジェクトのデータやコードを完全に自分の管理下に置くことができ、プライバシーとデータの主権を確保できる点が大きなメリットとなる。

Forgejoは、軽量で運用が容易な点が特徴である。その理由は、Go言語というプログラミング言語で作られた単一の実行ファイル(バイナリ)として提供されるため、他の多くの複雑な依存ソフトウェアを別途インストールする必要がないからだ。データベースについても、デフォルトでSQLiteというファイルベースのシンプルなデータベースを内蔵しているため、別途データベースサーバーを構築・管理する手間が省ける。もちろん、MariaDB、MySQL、PostgreSQLといったより大規模なデータベースにも対応しており、利用規模や要件に応じて選択できる。特にユーザー数が100人未満の小規模な環境であれば、SQLiteで十分に機能する。

現状、Forgejoのインスタンス(自分で構築したForgejoのシステム)同士の連携は限定的で、異なるインスタンス間でユーザーが交流したり、リポジトリに「いいね」を付けたりするためには、それぞれのインスタンスにアカウントを作成する必要がある。しかし、この問題は「フェデレーション」という新しい機能によって解決されようとしている。フェデレーションとは、異なるForgejoインスタンスが相互に連携し、ユーザーが自分のインスタンスから他のインスタンスの公開活動を見たり、交流したりできるようになる仕組みだ。この連携プロトコルはForgeFedと呼ばれ、将来的にForgejoの利用体験を大きく向上させるものと期待されている。

Forgejoのセルフホスティングは、Ansibleという自動化ツールを使うことで効率的に行える。Ansibleは、サーバーの設定やソフトウェアのインストールといった作業を、あらかじめ書かれた「プレイブック」という手順書に従って自動で実行してくれるツールだ。記事では、Red Hat系のLinuxディストリビューション(Fedora、RockyLinux、CentOS、AlmaLinuxなど)で動作するAnsibleプレイブックが提供されている。

セルフホスティングの手順は次のようになる。まず、ForgejoをインストールするサーバーにAnsibleを導入する。次に、inventory.iniというファイルにサーバーのIPアドレスとSSH接続用のユーザー情報を設定し、variables.yamlというファイルにForgejoのベースURL、HTTP/SSHポート、コンテナイメージのバージョン、データ保存ディレクトリなどの必要な値を指定する。これらの設定ファイルを準備したら、Ansibleプレイブックを実行するだけで、Forgejoのインストールと基本的な設定が自動で行われる。Forgejoは、Podmanというコンテナ技術を使って隔離された環境で実行され、SystemdというLinuxのサービス管理システムによって起動や停止が管理される。

Forgejoをインターネットに公開するには、NginxというWebサーバーをリバースプロキシとして設定することが推奨される。リバースプロキシとは、インターネットからのアクセスをいったん受け止め、適切なサーバー(この場合はForgejoが動作しているローカルポート)に転送する中継役のことだ。これにより、セキュリティを向上させたり、複数のWebサービスを一つのドメインで運用したりすることが可能になる。Nginxの設定ファイルを作成し、Forgejoへのアクセスを転送するように構成する。さらに、Certbotというツールを使ってHTTPS(SSL/TLS)証明書を簡単に取得・設定し、Webサイトの通信を暗号化することが重要だ。これにより、ユーザーとForgejo間のデータ送受信が安全に行われる。

Forgejoのインストールが完了したら、app.iniという設定ファイルを編集して、さらに詳細な設定を行う必要がある。ここでは、アプリケーション名、サイトのスローガン、ベースURL、SSHドメインなどのサーバー設定に加え、ユーザー登録の可否やメール送信設定などを調整する。例えば、クローズドな環境で運用する場合は、新規ユーザー登録を無効に設定できる。メール設定を行えば、パスワードリセットや通知などの機能が利用可能になる。設定ファイルを変更した後は、systemctl restart forgejoコマンドでForgejoサービスを再起動し、変更を反映させる。もし、内蔵のSQLiteではなく別のデータベースを利用したい場合は、公式ドキュメントに詳しい準備手順が記載されている。また、Anubisというツールを使って、ボットからのアクセスやインデックス作成を防ぎ、Forgejoインスタンスを保護することもできる。

Forgejoのメンテナンス作業も比較的簡単である。新しいバージョンにアップグレードする場合、ホスティングサーバーにSSHで接続し、最新のForgejoコンテナイメージをダウンロードする。その後、Systemdでコンテナを管理している設定ファイル(/etc/containers/systemd/forgejo.container)内のイメージ名を更新し、Systemdの設定をリロードしてForgejoサービスを再起動するだけで、アップグレードが完了する。

ユーザー管理についても、Web管理画面だけでなく、コマンドラインインターフェース(CLI)を使って行える。もし管理者アカウントのパスワードを忘れてしまった場合や、プログラム的にユーザーを操作したい場合は、Forgejoコンテナ内に入り、forgejo admin userコマンドを利用して、新しいユーザーの作成、パスワードの変更、ユーザーの削除、アクセストークンの生成、二段階認証のリセットなどが行える。これは緊急時や自動化が必要な場合に非常に有用な機能だ。

まとめとして、Forgejoはセルフホストに適したGitソフトウェアフォージであり、その導入と運用は非常にシンプルである。リソース要件が低く、特にSQLiteをデフォルトで利用できるため、追加のデータベースサーバー管理の負担が少なく、中小規模のデプロイには最適な選択肢となる。簡単で、低コスト、かつ自分のデータを完全にコントロールできる環境を求めるシステムエンジニア初心者にとって、Forgejoのセルフホスティングは魅力的な選択肢といえるだろう。

関連コンテンツ

関連IT用語