GitリポジトリをホスティングするものとしてGitHubは有名ですが、ローカルの環境にちょっとだけサービスを立てたいという場面もそこそこあるものです。このときの定番と言えば GitLab が候補に挙がりますが、他にもまだ候補となるサービスはあります。
以前は Gitea というものをオススメできるものとしていたのですが、最近少し事情が変わったようで、Giteaから派生した forgejo というものがあるようです。こちらはMITライセンスの元開発を続けた版との位置づけのようです。
Forgejo とは
GiteaからフォークしたMITライセンスで開発を続けているプロダクトです。Giteaが利潤追求を目的に「Gitea Limited」という企業を発足したところに起因して、開発者がフォークを始めたというのが発端のようです。
基本的にはGiteaにそっくりで、データの移行もできるように見えます。
Docker でサービスを立ててみる
いくつかのLinuxディストリビューション向けに、バイナリインストールができるようなマニュアルが用意されています。しかし、ここでは Docker コンテナとしてサービスを稼働させることにトライします。またデフォルトではSQLiteによるデータベースを使うようですが、小規模環境でも実用になるようにMySQLをデータベースとして使うようにしてみます。
Docker Composeによるサンプル記述もマニュアルに記載されています。が、ここではMySQL分も有効にした、以下のComposeファイルを用意しました。ひとまずこれで私は起動しましたが、実際の運用場面では適切に変更する必要があると思いますので、そのあたりはよしなによろしくお願い致します。
networks:
forgejo:
external: false
services:
forgejo:
image: codeberg.org/forgejo/forgejo:7.0.5-rootless
ports:
- "3000:3000"
- "10022:22"
environment:
USER_UID: 1000
USER_GID: 1000
TZ: Asia/Tokyo
FORGEJO__database__DB_TYPE: mysql
FORGEJO__database__HOST: forgejo-db:3306
FORGEJO__database__NAME: forgejo
FORGEJO__database__USER: forgejo
FORGEJO__database__PASSWD: forgejo-pw
networks:
- forgejo
volumes:
- ./forgejo:/data
depends_on:
- forgejo-db
forgejo-db:
image: mysql:8
expose:
- "3306"
environment:
MYSQL_ROOT_PASSWORD: forgejo
MYSQL_DATABASE: forgejo
MYSQL_USER: forgejo
MYSQL_PASSWORD: forgejo-pw
TZ: Asia/Tokyo
volumes:
- ./mysql:/var/lib/mysql
networks:
- forgejo
user: "1000:1000"
なお公式のDockerにインストールするためのマニュアルについては、 https://forgejo.org/docs/latest/admin/installation-docker/ に記載されています。
初回起動時
これで初回起動すると、サービスの設定画面が出現します。基本的には、上記に記した Compose ファイルの内容が反映されていますが、ssh ポートについてはその限りではありません。上記の Compose ファイルに従うのであれば、forgejoコンテナでは 22 番ポートにしておいて、外部からは 10022 で受け付けるという感じにします。
設定項目を埋めたら画面末尾のボタンを押して、インストールの続行・設定の完了を行います。
初回ユーザー登録
設定が完了すると、以下のような画面になります。ここで初回のユーザー登録をおこないます。サインアップのタブに変えて、ユーザーを作成しましょう。パスワードには8文字以上が必要になるなど条件があるので注意です。
アカウントが作成されると、以下のような画面に遷移します。
試しに稼働させた執筆時点の状況では、Gitea のサービスにそっくりです。
その他
Giteaはラズパイでもホスティングできる、という話題がありました。おそらくこのForgejoも同様にホスティング可能です。Giteaにも Gitea ActionsとあったようにForgejoにもActionsがあるようなので、小規模なCI/CDが簡単にできるようなのもよいですね。
これらについては、また試してみたいと思います。
コメント