序
このたび、はねずさんが校正やってくれるというので、共同作業環境としてForgejoを建てた。
こちらはプライベートなので公開はしないが、Forgejo構築と運営の話をしておこう。
Forgejoとは
Forgejoは(GitLabのような)セルフホスト可能なGitホスティングプラットフォームソフトウェアで、GogsのフォークであるGiteaのフォーク。
CodebergはForgejoをカスタマイズしたものを使っているらしい。
Goで書かれている。
非常にコンパクトに動作させることが可能。
構築
ForgejoはバイナリとDockerが用意されているが、よほど特別な理由がなければバイナリ推奨の感じ。 実際、私が試したところバイナリのほうが良かった。
バイナリのサイズは100MB程度と小さい。
まず前提として公式のInstallationに従うものとし、この節ではあくまで補足に留める。
Forgejoバイナリは/usr/local/bin/forgejoであることが想定されている。
これは大人しく従ったほうが良い。
Forgejoが使うディレクトリは/etc/forgejoと/var/lib/forgejo。
gitユーザーでアクセスする。
Database Preparationの節だが、sqliteを使う場合は必要ない。 sqliteは10ユーザー以下推奨らしい。 sqliteが使えるのは素晴らしい長所。
HTTPポートは初期設定で設定できるのだが、初期状態では3000番ポートで起動するため、3000番ポートを開けておく必要あり。
初期起動時に/etc/forgejo/app.iniが生える。ここをいじる機会は割とある。
ここで設定するドメインやポートは、UI表示上の意味もあるが、揃えないとうまく機能しない。 SSHのポートはホストのsshdのポートである。 ForgejoがSSHサーバーをlistenしたりはしない。
Archlinuxではgitユーザーはgitパッケージで生えるが、ホームディレクトリを/home/gitに変更することと、ログインシェルを/bin/bashに変更することが必要。
git:x:971:971:git daemon user:/home/git:/bin/bash
ここは本当はgitユーザーを流用しないほうがいいと思う。目的が違うので。
gitユーザーを使わない場合は、まずapp.iniでRUN_USERを指定
RUN_USER = forgejoユーザーを作る
groupadd -g 2001 forgejo
useradd -u 2001 -g 2001 -m -s /bin/bash -r forgejoパーミッションの変更
chown -R forgejo:forgejo /etc/forgejo /var/lib/forgejoSystemdユニットはgitユーザー前提になっているので、これも全部直しておく。
追加の設定
app.iniは記載量が少なく何が設定できるのかわかりにくいが、フルで記載されたものがリポジトリに含まれており、チートシートもある。
SSHでRSAを禁止する:
[ssh.minimum_key_sizes]
; Define allowed algorithms and their minimum key length (use -1 to disable a type)
ED25519 = 256
ECDSA = 256
RSA = -1
DSA = -1パスワードを最低16文字、小文字・大文字・数字を必須にする:
[security]
MIN_PASSWORD_LENGTH = 16
PASSWORD_COMPLEXITY = lower,upper,digitデフォルトのデフォルトをmasterに
[repository]
DEFAULT_BRANCH = master曖昧な文字
!に対して曖昧な文字だと警告してくる。
意図的なら無視しろと言うが、無視する手段は用意されていない。
また、「エスケープ」を押すとio is not iterableというエラーになる。
負荷
私の環境だと消費メモリは200MB以下。非常に軽い。
感想
個人的には共同作業ではGitHubは相当使いにくいと思っていて、かといってGitLabは進め方の点で良くないと思う。 このあたりが一番快適なのはBitBucketだ。
ForgejoはGitHubやGitLabより良いと思う。
UIの見た目はGitLabに似ているが、構成はGitHubに近い。 最大単位は組織(またはユーザー)で、その下がリポジトリ。 「プロジェクト」という機能があるが、これはissue等をまとめたりする機能。
リポジトリ別でWikiがある。 「曖昧文字」問題で使い勝手はいまいちだけど、Wikiがあること自体は普通に便利。 deploy手順とか、contribute手順とかをまとめておける。
リリースのほかにパッケージという機能がある。
プルリクエストの画面はGitHubと似た感じ。 diffはわずかにForgejoのほうが見やすいと思う。 レビューワークフローも多少使いやすい。 でも、BitBucketのようにコードありきの形式のほうが好きだなぁ。
エクスプローラーはインスタンス全体から検索するものなので、そんなに使いやすくはない。
でもまぁ、GitHubより使いやすいし、欲しい機能はだいたいあるからとても良いと思う。 これで200MBで済むなら超良い。sqliteも含めてコンパクトでリソースも使わないので、私は相当高く評価している。