転載・引用について

ユーザ用ツール

サイト用ツール


serviceapp:forgejo
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


serviceapp:forgejo [2023/11/20 03:35] (現在) – 作成 - 外部編集 127.0.0.1
行 1: 行 1:
 +====== Forgejo ======
 +[[https://forgejo.org/|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を起動するための設定
 +    * <code - rc.conf.local>
 +forgejo_enable="YES"
 +forgejo_home="/zdata/git"
 +forgejo_shared="/zdata/forgejo_work"
 +</code>
 +
 +なお、/usr/local/etc/rc.conf.d/forgejo を作成して、そこに ''forgejo_enable="YES"'' と記載しても良い。
 +
 +=== /usr/local/etc/rc.d/forgejo ===
 +現在のportsのforgejoに付属のservice scriptはちょっと問題があるので、修正した
 +
 +<code - 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"
 +</code>
 +
 +=== /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を作成する
 +    * <code>
 +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
 +</code>
 +
 +<code diff 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
 +</code>
 +
 +=== 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を受け付けるようになる
serviceapp/forgejo.txt · 最終更新: 2023/11/20 03:35 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki