跳过正文

Forgejo

··
目录

Docker
#

以下是 compose.yaml 文件示例:

networks:
  forgejo:
    external: false

services:
  server:
    image: codeberg.org/forgejo/forgejo:15
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - forgejo
    volumes:
      - ./forgejo:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - '3000:3000'
      - '222:22'

如果 codeberg.org 无法访问,您可以将每个提及 codeberg.org 替换为 data.forgejo.org 。

3000 是网页登陆端口,222 是 ssh 端口。

请结合实际情况进行修改

请注意,该卷的所有者应为配置文件中指定的 UID/GID 对应的用户/组。如果没有为卷设置正确的权限,容器可能无法启动。

配置
#

对 Forgejo 配置文件的任何更改都应在 custom/conf/app.ini 或任何相应位置进行。从发行版安装时,通常可在 /etc/forgejo/app.ini 找到。

注意:无法使用环境变量来删除现有值,必须通过编辑 app.ini 文件来完成。

注意:需要完全重启才能使 Forgejo 配置更改生效。

电子邮件设置
#

https://forgejo.org/docs/latest/admin/setup/email/

实例提交签名
#

https://forgejo.org/docs/latest/admin/advanced/signing/

为了让 Forgejo 对提交进行签名,它必须知道如何以及何时对提交进行签名。

Forgejo 提供两种签名提交的格式:GPG 和 SSH。如果满足 SSH 的要求,强烈建议使用 SSH 而不是 GPG。

我们这里选择使用 SSH。首先需要一个专用的 OpenSSH 密钥对来进行签名。至于配置,示例如下:

[repository.signing]

...

FORMAT = ssh
SIGNING_KEY = /absolute/path/to/public/ssh/key.pub
SIGNING_NAME = "forgejo.org Instance"
SIGNING_EMAIL = "noreply@forgejo.org"

SIGNING_KEY 的值必须是公钥的绝对路径,其中私钥必须位于该路径中,且不带.pub后缀。

设置完 SSH 实例签名密钥,则可以通过 API 路由获取 SSH 公钥,/api/v1/signing-key.ssh

注意:由于本文是通过 docker 安装的 foegejo,因此可能还需要将包含 ssh 密钥的文件夹挂载上去。另外,注意文件及文件夹权限的问题,forgejo 可能无法读取。

推荐设置和提示
#

https://forgejo.org/docs/latest/admin/setup/recommendations/

反向代理
#

以 Caddy 为例:

对于 HTTPS :

git.example.com {
  reverse_proxy 127.0.0.1:3000
}

对于带有子路径的 HTTPS:

example.com {
  route /code/* {
    uri strip_prefix /code
    reverse_proxy 127.0.0.1:3000
  }
}

请务必将 Forgejo ROOT_URL 配置键设置为带有子路径的 URL,否则 Forgejo 生成的链接将失效。

升级
#

从 X 升级到 X+1 (例如从 9 升级到 10 ) 需要手动操作和人工验证。但是,可以使用 X 标签 (例如10 ) 自动获取最新的次要版本。

有时,你可能需要执行 forgejo 命令行,你需要以 git 用户运行,对于 docker 安装的 forgejo,可能类似于以下命令:

docker exec -it -u git forgejo forgejo admin user -h

实践
#

ssh 不显示未知指纹警告
#

可参考:

https://nichijou.pages.dev/notes/setup-git/

总的来说,将 forgejo 的 ssh 公钥找到,按照格式添加 ssh 密钥条目即可。 可以使用 ssh-keyscan -p port host 命令并对比,对比成功后将输出写入 known_hosts 即可。

非标准情况
#

如果 ssh 端口是非标准端口,以及密钥文件路径是非标准路径,还需要配置 ssh ,见:

https://nichijou.pages.dev/notes/openssh/

作者
星空
美柑、小暗、菈菈、梦梦、娜娜、唯,你们带我走吧😭