このエントリでは、
UbuntuLinuxにForgejoをセットアップする手順を示します。
CI/CDを動かすため、Forgejo runnerもセットアップします。

Forgejo
https://forgejo.org/

Forgejo Actions administrator guide | Forgejo
https://forgejo.org/docs/next/admin/actions/

試した環境:

  • Ubuntu Linux 22.04.3
  • Forgejo 1.21.7
  • Forgejo runner 3.3.0
  • git 2.34.1
  • Docker 25.0.4

Gitのセットアップ

ForgejoにはGitが必要なので、
以下コマンドでインストールしておきます。

sudo apt install git

インストールできたかを、確認しておきます。

git --version

Forgejoのセットアップ

以下の手順に従って、Forgejoをセットアップします。

Get Forgejo | Forgejo
https://forgejo.org/download/

以下コマンドの通り、ユーザ・ディレクトリを用意します。

sudo useradd forgejo -d /var/lib/forgejo
sudo mkdir /var/lib/forgejo
sudo chown forgejo:forgejo /var/lib/forgejo

バイナリをダウンロード、GPG signatureの検証を行います。
(実際には、公式ドキュメントを参照して最新Versionで実施するのが良いと思います)

wget https://codeberg.org/forgejo/forgejo/releases/download/v1.21.7-0/forgejo-1.21.7-0-linux-amd64
gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
wget https://codeberg.org/forgejo/forgejo/releases/download/v1.21.7-0/forgejo-1.21.7-0-linux-amd64.asc
gpg --verify forgejo-1.21.7-0-linux-amd64.asc forgejo-1.21.7-0-linux-amd64

ダウンロードしたバイナリのユーザ・実行権限を設定、/var/lib/forgejoに配置します。

sudo mv forgejo-1.21.7-0-linux-amd64 /var/lib/forgejo/forgejo
sudo chown forgejo:forgejo /var/lib/forgejo/forgejo
sudo chmod 744 /var/lib/forgejo/forgejo

Forgejoを起動します。

sudo su - forgejo bash -c "/var/lib/forgejo/forgejo web"

起動したホストの3000番ポートにブラウザでアクセスすると、
初期設定が表示されるので、各項目を指定して初期設定を行います。

ここでは、データベースのタイプを「SQLite3」に変更して、
「Forgejoをインストール」をクリックします。

ここまでの手順を終えると、Forgejoの基本的な機能が使えるようになります。

最初に登録したユーザが管理者になるので、ユーザを登録しておきます。

Dockerのセットアップ

Forgejo runnerにはDockerが必要なので、
以下の手順に従ってインストールしておきます。

Install Docker Engine on Ubuntu | docker docs
https://docs.docker.com/engine/install/ubuntu/

以下コマンドでDokcerのリポジトリを準備します。

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

以下コマンドでDokcerをインストールします。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

インストールできたかを、確認しておきます。

docker --version

Forgejo runnerのセットアップ

以下に、Forgejo runnerの管理ガイドがあります。

Forgejo Actions administrator guide | Forgejo
https://forgejo.org/docs/latest/admin/actions/

管理ガイドの次の箇所に手順があるので、
これに従ってForgejo runnerをセットアップします。

Installation | Forgejo Actions administrator guide | Forgejo
https://forgejo.org/docs/latest/admin/actions/#installation

以下コマンドの通り、ユーザ・ディレクトリを用意します。

sudo useradd forgejo-runner -d /var/lib/forgejo-runner
sudo mkdir /var/lib/forgejo-runner
sudo chown forgejo-runner:forgejo-runner /var/lib/forgejo-runner

Dockerを利用できるように、dockerグループに所属させておきます。

sudo usermod -aG docker forgejo-runner

バイナリをダウンロード、GPG signatureの検証を行います。
(実際には、公式ドキュメントを参照して最新Versionで実施するのが良いと思います)

wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
wget -O forgejo-runner.asc https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64.asc
gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
gpg --verify forgejo-runner.asc forgejo-runner

ダウンロードしたバイナリのユーザ・実行権限を設定、/var/lib/forgejo-runnerに配置します。

sudo mv forgejo-runner /var/lib/forgejo-runner/forgejo-runner
sudo chown forgejo-runner:forgejo-runner /var/lib/forgejo-runner/forgejo-runner
sudo chmod 744 /var/lib/forgejo-runner/forgejo-runner

Forgejoにランナーを追加します。
Forgejoの実行しているホストの3000番ポートにブラウザでアクセスして、
管理者でサインイン、右上のメニューから「設定」、
左側メニューで「Actions」「ランナー」、
右上の「新しいランナーを作成」、
「REGISTRATION TOKEN」をコピーします。

以下のコマンドで、Forgejo RunnerをForgejoに登録します。
{TOKEN}部分は、先ほどの「REGISTRATION TOKEN」に置き換えます。

sudo su - forgejo-runner bash -c "/var/lib/forgejo-runner/forgejo-runner register --no-interactive --token {TOKEN} --name runner --instance http://127.0.0.1:3000"

コマンド実行後に、ブラウザの画面をリロードすると、
一覧に追加したランナーが表示されます。

Forgejo Runnerを起動します。

sudo su - forgejo-runner bash -c "/var/lib/forgejo-runner/forgejo-runner daemon"

適当にリポジトリを作成して、
設定の「Actionsを有効にする」をチェックした後に、
以下のファイルをpushするとActions(CI)が実行されます。

.forgejo/workflows/demo.yaml

on: [push]
jobs:
  test:
    runs-on: docker
    steps:
      - run: echo All Good

systemdでのサービス化

ここまでの手順でForgejoとForgejo runnerは使えるようになったので、
管理しやすくするために、systemdによるサービス化しておきます。

Forgejo, Forgejo runnerの設定ファイルを作ります。

/etc/systemd/system/forgejo.service

[Unit]
Description=Forgejo
After=syslog.target
After=network.target

[Service]
RestartSec=2s
Type=simple
User=forgejo
Group=forgejo
WorkingDirectory=~
ExecStart=/var/lib/forgejo/forgejo web
Restart=always

[Install]
WantedBy=multi-user.target

/etc/systemd/system/forgejo-runner.service

[Unit]
Description=Forgejo runner
After=syslog.target
After=network.target

[Service]
RestartSec=2s
Type=simple
User=forgejo-runner
Group=forgejo-runner
WorkingDirectory=~
ExecStart=/var/lib/forgejo-runner/forgejo-runner daemon
Restart=always

[Install]
WantedBy=multi-user.target

設定をリロード、サービスを開始します。

sudo systemctl daemon-reload
sudo systemctl enable forgejo
sudo systemctl enable forgejo-runner
sudo systemctl start forgejo
sudo systemctl start forgejo-runner

以上の手順で、ひとまずForgejoとForgejo runnerを動かす事ができました。
各種設定は、以下の管理ガイドを参照して設定します。

Forgejo administrator guide | Forgejo
https://forgejo.org/docs/latest/admin/

ちなみに、Forgejoの設定ファイルは、 このエントリの手順では /var/lib/forgejo/custom/conf/app.ini にあります。

以上。