転載・引用について

ユーザ用ツール

サイト用ツール


serviceapp:forgejo

Forgejo

ForgejoはGiteaからforkしたGitHUBのような機能を持つGit Repository管理WebUIシステムである

Giteaは非常に便利なのだが、商用の方向に舵を切ったため、開発者の一部がforkしてForgejoがreleaseされた。

Install

Forgejoはgoで記述されている。

現在の段階ではpkgでは導入できないが、開発中のportsを見つけたのでそれをりようしてみる。

forgejoはGiteaのforkなので、Binaryを作成したらそのままGiteaと同じように利用できる

必要なPackage

  • git, nginx(今回はnginx-devel), forgejo

設定

必要な設定を記載する

/etc/rc.conf.local

  • forgejoを起動するための設定
    • rc.conf.local
      forgejo_enable="YES"
      forgejo_home="/zdata/git"
      forgejo_shared="/zdata/forgejo_work"

なお、/usr/local/etc/rc.conf.d/forgejo を作成して、そこに forgejo_enable=“YES” と記載しても良い。

/usr/local/etc/rc.d/forgejo

現在のportsのforgejoに付属のservice scriptはちょっと問題があるので、修正した

forgejo
#!/bin/sh

# PROVIDE: forgejo
# REQUIRE: NETWORKING SYSLOG
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable forgejo:
#
#forgejo_enable="YES"

. /etc/rc.subr

name="forgejo"
rcvar="forgejo_enable"

load_rc_config $name

: ${forgejo_user:="git"}
: ${forgejo_enable:="NO"}
: ${forgejo_facility:="daemon"}
: ${forgejo_priority:="debug"}
: ${forgejo_shared:="/usr/local/share/${name}"}
: ${forgejo_custom:="/usr/local/etc/${name}"}

command="/usr/local/sbin/${name} web"
procname="/usr/local/sbin/${name}"
githome="$(eval echo ~${forgejo_user})"
: ${forgejo_home:="${githome}"}

pidfile="/var/run/${name}.pid"

start_cmd="${name}_start"

forgejo_start() {
        for d in /var/db/forgejo /var/log/forgejo; do
                if [ ! -e "$d" ]; then
                        mkdir "$d"
                        chown ${forgejo_user} "$d"
                fi
        done
        /usr/sbin/daemon -S -l ${forgejo_facility} -s ${forgejo_priority} -T  ${name} \
                -u ${forgejo_user} -p ${pidfile} \
                /usr/bin/env -i \
                "GITEA_WORK_DIR=${forgejo_shared}" \
                "GITEA_CUSTOM=${forgejo_custom}" \
                "HOME=${forgejo_home}" \
                "PATH=/usr/local/bin:${PATH}" \
                "USER=${forgejo_user}" \
                $command
}

run_rc_command "$1"

/usr/local/etc/forgejo/conf/app.conf

/usr/local/etc/forgejo/conf/app.confにforgejoの設定を記述する。

  • defaultではDBにSQLiteを利用するが、今回はすでにPostgreSQL Serverが動いているので、DBはそれを利用する。
  • defaultで待ち受けは3000/TCPを利用するので、そのまま流用する
  • Data用のDirectoryは、容量を40Gで作成した。FreeBSD VMに認識された時点で device nameはada1(xbd1) になったので、ここにZFSでData用FSを作成する
    • gpart destroy -F ada1
      gpart create -s gpt ada1
      gpart add -a 4k -t freebsd-zfs -l ada1 ada1
      zpool create -O atime=off -O compression=lz4 -O normalization=formD zdata gpt/ada1
      mkdir /zdata/forgejo
      mkdir /zdata/git
      mkdir /zdata/forgejo_work
      chown git:git /zdata/forgejo* /zdata/git
app.ini.diff
bb-dweb01# cat app.ini.diff
*** app.ini.sample      Sun Nov 19 21:56:44 2023
--- app.ini     Mon Nov 20 02:58:34 2023
***************
*** 29,44 ****
  RUN_USER = git
 
  [database]
! DB_TYPE  = sqlite3
! HOST     = 127.0.0.1:3306
  NAME     = forgejo
! PASSWD   =
! PATH     = /var/db/forgejo/forgejo.db
! SSL_MODE = disable
  USER     = root
 
  [indexer]
! ISSUE_INDEXER_PATH = /var/db/forgejo/indexers/issues.bleve
 
  [log]
  LEVEL     = Info
--- 29,52 ----
  RUN_USER = git
 
  [database]
! #DB_TYPE  = sqlite3
! #HOST     = 127.0.0.1:3306
! #NAME     = forgejo
! #PASSWD   =
! #PATH     = /var/db/forgejo/forgejo.db
! #SSL_MODE = disable
! #USER     = root
! DB_TYPE  = postgres
! HOST     = 127.0.0.1:5432     # can use socket e.g. /var/run/postgresql/
  NAME     = forgejo
! PASSWD   =
! SSL_MODE = disable    # either "disable" (default), "require", or "verify-full"
  USER     = root
+ SCHEMA =
 
  [indexer]
! #ISSUE_INDEXER_PATH = /var/db/forgejo/indexers/issues.bleve
! ISSUE_INDEXER_PATH = /zdata/forgejo/indexers/issues.bleve
 
  [log]
  LEVEL     = Info
***************
*** 46,58 ****
  ROOT_PATH = /var/log/forgejo
 
  [mailer]
! ENABLED = false
 
  [oauth2]
  JWT_SECRET = CHANGE_ME
 
  [picture]
! AVATAR_UPLOAD_PATH      = /var/db/forgejo/data/avatars
  DISABLE_GRAVATAR        = true
  ENABLE_FEDERATED_AVATAR = false
 
--- 54,70 ----
  ROOT_PATH = /var/log/forgejo
 
  [mailer]
! #ENABLED = false
! ENABLED  = true
! PROTOCOL = sendmail
! FROM     = "Forgejo Git" <noreply@seirios.org>
 
  [oauth2]
  JWT_SECRET = CHANGE_ME
 
  [picture]
! #AVATAR_UPLOAD_PATH      = /var/db/forgejo/data/avatars
! AVATAR_UPLOAD_PATH      = /zdata/forgejo/data/avatars
  DISABLE_GRAVATAR        = true
  ENABLE_FEDERATED_AVATAR = false
 
***************
*** 63,69 ****
  SCRIPT_TYPE = sh
 
  [repository.upload]
! TEMP_PATH = /var/db/forgejo/data/tmp/uploads
 
  [security]
  INSTALL_LOCK   = true
--- 75,84 ----
  SCRIPT_TYPE = sh
 
  [repository.upload]
! #TEMP_PATH = /var/db/forgejo/data/tmp/uploads
! TEMP_PATH = /zdata/forgejo/data/tmp/uploads
! FILE_MAX_SIZE = 4095
! MAX_FILES = 20
 
  [security]
  INSTALL_LOCK   = true
***************
*** 72,81 ****
 
  [session]
  PROVIDER        = file
! PROVIDER_CONFIG = /var/db/forgejo/data/sessions
 
  [server]
! APP_DATA_PATH = /var/db/forgejo/data
  DISABLE_SSH   = false
  DOMAIN        = localhost
  HTTP_ADDR     = 127.0.0.1
--- 87,98 ----
 
  [session]
  PROVIDER        = file
! #PROVIDER_CONFIG = /var/db/forgejo/data/sessions
! PROVIDER_CONFIG = /zdata/forgejo/data/sessions
 
  [server]
! #APP_DATA_PATH = /var/db/forgejo/data
! APP_DATA_PATH = /zdata/forgejo/data
  DISABLE_SSH   = false
  DOMAIN        = localhost
  HTTP_ADDR     = 127.0.0.1
***************
*** 91,93 ****
--- 108,118 ----
  ENABLE_NOTIFY_MAIL     = false
  REGISTER_EMAIL_CONFIRM = false
  REQUIRE_SIGNIN_VIEW    = false
+
+ [git.timeout]
+ DEFAULT = 3600 # Git operations default timeout seconds
+ MIGRATE = 7200 # Migrate external repositories timeout seconds
+ MIRROR  = 3600 # Mirror external repositories timeout seconds
+ CLONE   = 3600 # Git clone from internal repositories timeout seconds
+ PULL    = 3600 # Git pull from internal repositories timeout seconds
+ GC      = 900  # Git repository GC timeout seconds

PostgreSQL

  • PostgreSQLにlogin
    • sudo -u postgres psql
  • Roleを作成
    • CREATE ROLE forgejo WITH LOGIN PASSWORD 'LoginPassword Secret';
  • DBを作成
    • CREATE DATABASE forgejodb WITH OWNER forgejo TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
  • ~postgres/pg_hba.conf
    • forgejo serverのアドレスから、forgejoにforgejodbへの接続を許可する

forgejo serverを開始する

  • service forgejo start

これで、forgejoのサービスが起動し、localhostの3000/TCPでHTTP Requestを受け付けるようになる

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
serviceapp/forgejo.txt · 最終更新: 2023/11/20 03:30 by seirios

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki