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を受け付けるようになる
serviceapp/forgejo.txt · 最終更新: 2023/11/20 03:35 by 127.0.0.1