【ITニュース解説】Self Hosting Forgejo
2025年09月07日に「Dev.to」が公開したITニュース「Self Hosting Forgejo」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Forgejoは、軽量でプライベートなGitソフトウェアフォージだ。GitHubのように自分のサーバーでソースコードを管理できる。本記事では、ForgejoをAnsibleでセルフホストし、Nginxで公開、各種設定やメンテナンスを行う手順を解説。リソース要件が低く、運用も容易だ。
ITニュース解説
Forgejoは、Gitを使ったソフトウェア開発プロジェクトを管理するための、軽量でプライベートなツールだ。これは、インターネット上でおなじみのGitHubのようなサービスを、自分自身で管理できる「あなた専用のGitHub」と考えるとわかりやすい。GitHubのように、ソースコードの管理、共同開発、変更履歴の追跡など、Gitの機能をフルに活用できる環境を、自分のサーバーに構築できるのが大きな特徴だ。自分のデータを完全に自分でコントロールしたい、プライバシーを重視したい、あるいは社内や特定のグループ内で閉じた開発環境を構築したい場合に、Forgejoの自己ホストは非常に有用な選択肢となる。
Forgejoが自己ホストに向いている理由の一つは、その手軽さにある。これはGo言語で開発されており、Forgejo自体が単一の実行可能ファイルとして提供される。そのため、他の複雑なソフトウェアをたくさんインストールする必要がなく、Forgejo本体だけで動作する。デフォルトでは、SQLiteというシンプルなデータベースが組み込まれているため、小規模な利用やユーザーが100人以下の場合であれば、追加で別のデータベースを準備・管理する手間も省ける。もちろん、より大規模な運用を見据えるなら、MariaDB、MySQL、PostgreSQLといった他の高性能なデータベースにも対応している。
現在、Forgejoのインスタンス間での直接的な連携は限られているが、将来的には「フェデレーション」という機能が導入される予定だ。これは、自分のForgejoインスタンスと他の人のインスタンスが連携できるようになる仕組みで、異なるインスタンス間でユーザーアカウントや公開アクティビティを共有し、互いに交流できるようになる。この機能は「ForgeFed」というプロトコルに基づいて開発が進められている。
実際にForgejoを自己ホストする手順は、Ansibleという自動化ツールを使うことで効率的に進められる。Ansibleは、複数のサーバーに対して同じ設定を自動で適用したり、ソフトウェアをインストールしたりするのに便利なツールだ。記事では、Forgejoの自己ホストを自動化するためのAnsibleプレイブックが提供されている。このプレイブックは、Red Hat系のLinuxディストリビューション、例えばFedora、RockyLinux、CentOS、AlmaLinuxなどで動作する。
Ansibleプレイブックを実行するには、まず自分のマシンにAnsibleをインストールする必要がある。その後、提供されているプレイブックをダウンロードし、いくつかの設定ファイルを編集する。具体的には、inventory.iniというファイルでForgejoをインストールしたいサーバーのIPアドレスやSSH接続用のユーザー名を設定する。次に、variables.yamlというファイルで、Forgejoのウェブアドレス(ベースURL)、ウェブインターフェースが利用するHTTPポート、SSH経由でのコードクローンに使うSSHポート、利用するForgejoのコンテナイメージのバージョン、そしてForgejoのデータが保存されるディレクトリといった、Forgejoの基本的な動作に関わる詳細な設定値を指定する。これらのファイルを適切に設定したら、Ansibleコマンドを実行することで、サーバーへの必要なパッケージのインストールからForgejoのセットアップまでの一連の作業が自動的に行われる。Forgejoは、Podmanというコンテナ技術とSystemdというシステム管理ツールを組み合わせて、安定して動作するコンテナとして構築される。
Forgejoがサーバー上で起動したら、次にインターネットからアクセスできるようにする設定が必要になる。これには通常、Nginxというウェブサーバーソフトウェアを「リバースプロキシ」として利用することが推奨される。リバースプロキシとは、外部からのアクセスを一旦受け取り、それをForgejoが動作している内部のポート(例えば、設定したHTTPポート3000)に転送する役割を持つ。これにより、Forgejoをインターネットに直接公開するのではなく、Nginxを間に挟むことで、セキュリティを高めたり、複数のウェブサービスを一つのドメインで公開したりといった柔軟な運用が可能になる。Nginxの設定ファイルを作成し、特定のドメインへのアクセスをForgejoに転送するように記述する。
さらに、ウェブサイトのセキュリティと信頼性を向上させるために、HTTPS(暗号化された通信)を設定することが不可欠だ。これにはCertbotというツールが非常に役立つ。CertbotはNginxと連携し、無料でSSL/TLS証明書を自動で取得・更新してくれる。これにより、あなたのForgejoインスタンスへのアクセスが暗号化され、安全な通信が確保される。
インストールが完了し、インターネットからアクセスできるようになったら、Forgejoの動作をさらに細かく調整するための設定を行う。主要な設定ファイルは/forgejo/gitea/conf/app.iniというパスに存在し、ここでForgejoのアプリケーション名、スローガン、ルートURL、ユーザー登録の可否、メール送信設定(例えば、パスワードリセットや通知のためのSMTPサーバー情報)などを調整できる。例えば、特定のユーザーだけに使わせたい場合は、ユーザー登録を無効に設定できる。これらの設定を変更した後は、Systemdを使ってForgejoサービスを再起動することで、変更が適用される。より詳細な設定オプションについては、Forgejoの公式ドキュメントにある「Configuration Cheat Sheet」を参照すると良い。
Forgejoを運用していく上で、定期的なメンテナンスも重要だ。バージョンアップは比較的簡単に行える。SSHでサーバーに接続し、Podmanコマンドを使ってForgejoの最新のコンテナイメージをダウンロードする。その後、Forgejoのコンテナを管理しているSystemdの設定ファイルを編集し、新しいイメージのバージョンを指定する。設定を更新したら、Systemdを再読み込みし、Forgejoサービスを再起動するだけで、新しいバージョンに切り替わる。
また、ユーザーの管理もコマンドラインから行える。例えば、管理者アカウントのパスワードを忘れてしまった場合や、複数のユーザーを一括で作成したい場合などに便利だ。podman psコマンドで実行中のForgejoコンテナのIDや名前を特定し、podman execコマンドを使ってコンテナ内部にシェルでアクセスできる。コンテナ内でforgejo adminコマンドを実行すると、ユーザーの作成、パスワードの変更、二段階認証(MFA)設定のリセットなど、さまざまな管理操作が可能になる。
Forgejoは、自己ホストを検討しているシステムエンジニアの卵にとって、非常に良い学習機会を提供してくれるツールだ。軽量でリソース要件が低く、自己完結型の設計であるため、余分な管理の負担が少ない。特に、SQLiteをデフォルトのデータベースとして利用できる点は、独立したデータベースサーバーを別途用意・管理する手間を省き、小規模な環境での運用を非常に楽にする。自分だけのGitソフトウェア開発基盤を構築し、データの主権を完全に手に入れたいと考えるならば、Forgejoの自己ホストは、始める価値のあるプロジェクトと言えるだろう。