Gitホスティングプラットフォーム Forgejoを建てる
Live With Linux::server
- TOP
- Articles
- Live With Linux
- Gitホスティングプラットフォーム Forgejoを建てる
序
このたび、はねずさんが校正やってくれるというので、共同作業環境として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/forgejo
Systemdユニットは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も含めてコンパクトでリソースも使わないので、私は相当高く評価している。