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 ,见: