安装 Forgejo 和 Git,创建 git 用户 [1]
本指南以 git.example.com 和 x.y.z 为示例。请根据实际情况替换为你的域名和所用的 Forgejo 版本。
首先按照 Forgejo 下载页面的说明,下载适合 CPU 架构的 Forgejo 二进制文件,并验证 GPG 签名。 [2]
接着将下载的 Forgejo 二进制文件复制到 /usr/local/bin/,重命名为 forgejo,并赋予可执行权限:
sudo cp forgejo-x.y.z-linux-amd64 /usr/local/bin/forgejo
sudo chmod 755 /usr/local/bin/forgejo
确保系统已安装 git 和 git-lfs。在 Debian GNU/Linux 上可以使用:
sudo apt install git git-lfs
在系统中创建 git 用户。Forgejo 将以该用户身份运行。默认通过 SSH 访问 git 时,该用户也是 URL 的一部分。例如 git clone git@git.example.com:YourOrg/YourRepo.git 中,@ 前面的 git 就是现在要创建的用户。在 Debian、Ubuntu 及其衍生发行版上,执行:
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git
对于不基于 Debian/Ubuntu 的 Linux 发行版,可改用以下命令;它至少应适用于 Fedora、CentOS 等 Red Hat 衍生发行版:
sudo groupadd --system git
sudo useradd --system --shell /bin/bash --comment 'Git Version Control' \
--gid git --home-dir /home/git --create-home git
创建 Forgejo 使用的目录 [3]
现在创建 Forgejo 所需的目录,并适当设置访问权限:
sudo mkdir /var/lib/forgejo
sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo
Forgejo 将在这个目录中存储数据,包括 Git 仓库。
sudo mkdir /etc/forgejo
sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo
这个目录用于存储 Forgejo 的配置文件 app.ini。初始安装时 Forgejo 需要有写入权限,但安装后可以改成对 Forgejo 只读,因为此后它不应再修改该文件。
可选:设置数据库 [4]
如果使用 sqlite 作为 Forgejo 数据库,这里不需要进行任何操作。
如果需要更强大的数据库,可以使用 MySQL/MariaDB 或 PostgreSQL。sqlite 看来足以支持至少 10 名用户,也可能适用于更多用户。
设置说明请参阅 Forgejo 的“数据库准备”指南。 [5]
为 Forgejo 安装 systemd 服务 [6]
Forgejo 提供 systemd 服务脚本。请将其下载到正确位置: [7]
sudo wget -O /etc/systemd/system/forgejo.service https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service
如果使用的不是 sqlite,而是 MySQL、MariaDB 或 PostgreSQL,则需要编辑 /etc/systemd/system/forgejo.service,取消对应 Wants= 和 After= 行的注释。否则应可以直接使用。
添加或修改 systemd 服务文件后,需要重新加载 systemd。
sudo systemctl daemon-reload
现在启用并启动 Forgejo 服务,以继续安装:
sudo systemctl enable forgejo.service
sudo systemctl start forgejo.service
通过网页配置 Forgejo [8]
在本地浏览器中打开 http://localhost:3000/,访问 Forgejo 网页界面。必要时将 localhost 替换为服务器的本地 IP 地址。
如果无法访问:
- 先查看下面第一条命令的输出,确认 forgejo 服务是否成功启动。如果显示错误,但下方日志不够完整、无法判断原因,可运行下面第二条命令,输出 Forgejo 记录的最近 100 行日志。
sudo systemctl status forgejo.servicesudo journalctl -n 100 --unit forgejo.service
你应当看到 Forgejo 的“Initial Configuration”(初始配置)页面。大多数设置应容易理解,以下是一些提示:
- 选择正确的数据库:SQLite3;如果在前面的“设置数据库”步骤中配置了其他数据库,就选择该数据库并填写相应选项。
- Server Domain 应为 git.example.com,或你实际使用的域名;Forgejo Base URL 应为 http://git.example.com:3000,假设你没有把 HTTP_PORT 从 3000 改为其他值。
- 查看 Server and Third-Party Service Settings,检查与你有关的服务器和第三方服务设置。
- 可以考虑立即通过 Administrator Account Settings 创建管理员账户;如果禁用了自主注册,这一点尤其有用。
- 大多数设置之后都可以在 /etc/forgejo/app.ini 中修改,不必过于担心。
完成配置后,点击 Install Forgejo。几秒后,如果已创建管理员账户,你会进入仪表盘;否则会看到登录/注册页面,可以创建账户后进入仪表盘。
到这里进展顺利,但还没有完全结束:仍需手动调整 app.ini 中的一些配置。
进一步配置 Forgejo 的 app.ini [9]
停止 forgejo 服务:
sudo systemctl stop forgejo.service
顺便把 /etc/forgejo/ 和 app.ini 设置为对 git 用户只读。Forgejo 在初始配置完成后不会再写入这些内容:
sudo chmod 750 /etc/forgejo && sudo chmod 640 /etc/forgejo/app.ini
现在以 root 身份编辑 /etc/forgejo/app.ini。
如果要处理许多大文件,建议进行以下修改:
-
Forgejo 支持通过网页界面向 Git 仓库上传文件。默认每个文件不超过 3MB,一次最多 5 个文件。要提高上限,在 [repository] 部分下添加 [repository.upload] 部分,设置 FILE_MAX_SIZE = 4095(4095MB,约 4GB)和 MAX_FILES = 20。配置大致如下:
... [repository] ROOT = /var/lib/forgejo/data/forgejo-repositories [repository.upload] ;; max size for files to the repo via web interface, in MB, ;; defaults to 3 (this sets a limit of about 4GB) FILE_MAX_SIZE = 4095 ;; by default 5 files can be uploaded at once, increase to 20 MAX_FILES = 20 [server] ...议题和拉取请求的附件也有类似限制,使用 [attachment] 部分中的 MAX_SIZE(默认 4MB)和 MAX_FILES(默认 5)设置。 [12]
-
默认情况下,LFS 数据上传在 20 分钟后过期。对于大文件、慢速连接或缓慢的 LFS 存储,这可能太短。git-lfs 似乎会自动重新开始上传,导致过程可能一直无法结束,并消耗大量流量。如果要通过 LFS 上传大文件,可以在 [server] 部分添加 LFS_HTTP_AUTH_EXPIRY = 180m,把限制提高到 180 分钟。
-
同样,各种 git 操作也有超时时间,可能太短。可以在 [server] 部分下面添加 [git.timeout] 部分,提高这些 git 操作的超时时间:
;; Git Operation timeout in seconds ;; increase the timeouts, so importing big repos (and presumably ;; pushing large files?) hopefully won't fail anymore [git.timeout] DEFAULT = 3600 ; Git operations default timeout seconds MIGRATE = 6000 ; Migrate external repositories timeout seconds MIRROR = 3000 ; Mirror external repositories timeout seconds CLONE = 3000 ; Git clone from internal repositories timeout seconds PULL = 3000 ; Git pull from internal repositories timeout seconds GC = 600 ; Git repository GC timeout seconds示例值为了说明而提高到原来的 10 倍。未必需要提高所有超时时间,尤其未必需要提高这么多。请根据实际性能要求评估并调整。
-
LFS 文件默认存储在文件系统的 /var/lib/forgejo/data/lfs 中。可以修改 [lfs] 部分中的 PATH = …,改存到其他位置,也可以配置 Forgejo 把文件存储到兼容 S3 的对象存储中。
-
如果要使用系统级 sendmail,可以如下修改 [mailer] 部分来启用邮件发送:
[mailer] ;; send mail with systemwide "sendmail" ENABLED = true PROTOCOL = sendmail FROM = "Forgejo Git" <noreply@yourdomain.com> -
Forgejo 默认监听端口 3000,可以使用 HTTP_PORT 改为 80,如下所示: [13]
[server] HTTP_PORT = 80
编辑完 app.ini 后,保存文件并重新启动 Forgejo 服务:
sudo systemctl start forgejo.service
可以点击 Forgejo 页面右上角的用户按钮“Profile and Settings”,依次进入 Site Administration 和 Configuration,然后在 Mailer Configuration 下输入你的邮件地址,点击 Send Testing Email,测试邮件发送。
使用 Forgejo 的一般提示 [14]
有时你可能希望或需要使用 Forgejo 命令行界面。请记住: [15]
- 需要以 git 用户身份运行,例如:
$ sudo -u git forgejo command --argument - 需要指定 Forgejo 工作路径:使用命令行选项 –work-path /var/lib/forgejo 或 -w /var/lib/forgejo,或者在调用 forgejo 前设置 FORGEJO_WORK_DIR 环境变量:
$ export FORGEJO_WORK_DIR=/var/lib/forgejo - 需要使用 –config /etc/forgejo/app.ini 或 -c /etc/forgejo/app.ini 指定配置文件 app.ini 的路径。
综合起来,命令可能如下:
$ sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user list
为方便使用,可以创建 /usr/local/bin/forgejo.sh,内容如下:
#!/bin/sh sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini "$@"并赋予可执行权限:
sudo chmod 755 /usr/local/bin/forgejo.sh现在,如果使用默认安装在 /var/lib/forgejo 中的系统级 Forgejo,可以在命令行使用下面的命令,代替前面较长的命令:
$ forgejo.sh admin user list
随时可以在 forgejo 及其子命令后添加 -h 或 –help,输出可用选项和子命令等使用说明。例如,查看命令行管理用户的可用子命令:
$ forgejo admin user -h











暂无评论内容