From 1e3e4d18aede698dfd36cbee83bfb60a6cbed83d Mon Sep 17 00:00:00 2001 From: yinxue <2643126914@qq.com> Date: Tue, 29 Jul 2025 15:15:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=83=A8=E5=88=86config-?= =?UTF-8?q?cheat=E5=87=BA=E7=8E=B0bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vitepress/config.mts | 38 +- .../administration/adding-legal-pages.md | 34 + .../document/administration/authentication.md | 301 ++++ .../administration/backup-and-restore.md | 146 ++ docs/document/administration/cmd-embedded.md | 93 ++ docs/document/administration/command-line.md | 534 +++++++ .../administration/config-cheat-sheet.md | 1384 +++++++++++++++++ .../administration/customizing-gitea.md | 83 + docs/document/administration/email-setup.md | 77 + .../administration/environment-variables.md | 49 + .../administration/external-renderers.md | 194 +++ .../document/administration/fail2ban-setup.md | 86 + .../administration/git-lfs-support.md | 24 + docs/document/administration/https-support.md | 89 ++ .../document/administration/logging-config.md | 263 ++++ .../document/administration/mail-templates.md | 254 +++ docs/document/administration/repo-indexer.md | 50 + .../administration/reverse-proxies.md | 391 +++++ .../search-engines-indexation.md | 30 + docs/document/administration/signing.md | 137 ++ 20 files changed, 4238 insertions(+), 19 deletions(-) create mode 100644 docs/document/administration/adding-legal-pages.md create mode 100644 docs/document/administration/authentication.md create mode 100644 docs/document/administration/backup-and-restore.md create mode 100644 docs/document/administration/cmd-embedded.md create mode 100644 docs/document/administration/command-line.md create mode 100644 docs/document/administration/config-cheat-sheet.md create mode 100644 docs/document/administration/customizing-gitea.md create mode 100644 docs/document/administration/email-setup.md create mode 100644 docs/document/administration/environment-variables.md create mode 100644 docs/document/administration/external-renderers.md create mode 100644 docs/document/administration/fail2ban-setup.md create mode 100644 docs/document/administration/git-lfs-support.md create mode 100644 docs/document/administration/https-support.md create mode 100644 docs/document/administration/logging-config.md create mode 100644 docs/document/administration/mail-templates.md create mode 100644 docs/document/administration/repo-indexer.md create mode 100644 docs/document/administration/reverse-proxies.md create mode 100644 docs/document/administration/search-engines-indexation.md create mode 100644 docs/document/administration/signing.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 6384007..5aefb63 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -62,25 +62,25 @@ export default defineConfig({ collapsible: true, // 使整个组可折叠 collapsed: true, // 默认展开 items: [ - { text: '命令行', link: 'https://docs.gitea.com/zh-cn/administration/command-line' }, - { text: '认证', link: 'https://docs.gitea.com/zh-cn/administration/authentication' }, - { text: '环境变量清单', link: 'https://docs.gitea.com/zh-cn/administration/environment-variables' }, - { text: '备份与恢复', link: 'https://docs.gitea.com/zh-cn/administration/backup-and-restore' }, - { text: 'Email 设置', link: 'https://docs.gitea.com/zh-cn/administration/email-setup' }, - { text: 'Git LFS 设置', link: 'https://docs.gitea.com/zh-cn/administration/git-lfs-setup' }, - { text: 'HTTPS配置', link: 'https://docs.gitea.com/zh-cn/administration/https-setup' }, - { text: '设置 Fail2ban', link: 'https://docs.gitea.com/zh-cn/administration/fail2ban-setup' }, - { text: '反向代理', link: 'https://docs.gitea.com/zh-cn/administration/reverse-proxies' }, - { text: '嵌入资源提取工具', link: 'https://docs.gitea.com/zh-cn/administration/cmd-embedded' }, - { text: '配置说明', link: 'https://docs.gitea.com/zh-cn/administration/config-cheat-sheet' }, - { text: '日志配置', link: 'https://docs.gitea.com/zh-cn/administration/logging-config' }, - { text: '邮件模板', link: 'https://docs.gitea.com/zh-cn/administration/mail-templates' }, - { text: '仓库索引器', link: 'https://docs.gitea.com/zh-cn/administration/repo-indexer' }, - { text: 'GPG 提交签名', link: 'https://docs.gitea.com/zh-cn/administration/signing' }, - { text: '外部渲染器', link: 'https://docs.gitea.com/zh-cn/administration/external-renderers' }, - { text: '搜索引擎索引', link: 'https://docs.gitea.com/zh-cn/administration/search-engines-indexation' }, - { text: '自定义 Gitea 配置', link: 'https://docs.gitea.com/zh-cn/administration/customizing-gitea' }, - { text: '添加法律页面', link: 'https://docs.gitea.com/zh-cn/administration/adding-legal-pages' } + { text: '命令行', link: '/document/administration/command-line.md' }, + { text: '认证', link: '/document/administration/authentication.md' }, + { text: '环境变量清单', link: '/document/administration/environment-variables.md' }, + { text: '备份与恢复', link: '/document/administration/backup-and-restore.md' }, + { text: 'Email设置', link: '/document/administration/email-setup.md' }, + { text: 'Git LFS设置', link: '/document/administration/git-lfs-support.md' }, + { text: 'HTTPS配置', link: '/document/administration/https-support.md' }, + { text: '设置Fail2ban', link: '/document/administration/fail2ban-setup.md' }, + { text: '反向代理', link: '/document/administration/reverse-proxies.md' }, + { text: '嵌入资源提取工具', link: '/document/administration/cmd-embedded.md' }, + { text: '配置说明', link: '/document/administration/config-cheat-sheet.md' }, + { text: '日志配置', link: '/document/administration/logging-config.md' }, + { text: '邮件模板', link: '/document/administration/mail-templates.md' }, + { text: '仓库索引器', link: '/document/administration/repo-indexer.md' }, + { text: 'GPG提交签名', link: '/document/administration/signing.md' }, + { text: '外部渲染器', link: '/document/administration/external-renderers.md' }, + { text: '搜索引擎索引', link: '/document/administration/search-engines-indexation.md' }, + { text: '自定义Gitea配置', link: '/document/administration/customizing-gitea.md' }, + { text: '添加法律页面', link: '/document/administration/adding-legal-pages.md' } ] } as any, { diff --git a/docs/document/administration/adding-legal-pages.md b/docs/document/administration/adding-legal-pages.md new file mode 100644 index 0000000..2649e79 --- /dev/null +++ b/docs/document/administration/adding-legal-pages.md @@ -0,0 +1,34 @@ +--- +date: "2023-05-23T09:00:00+08:00" +slug: adding-legal-pages +sidebar_position: 110 + +aliases: + - /zh-cn/adding-legal-pages +--- + +# 添加法律页面 + +一些法域(例如欧盟)要求在网站上添加特定的法律页面(例如隐私政策)。按照以下步骤将它们添加到你的 Gitea 实例中。 + +## 获取页面 + +Gitea 源代码附带了示例页面,位于 `contrib/legal` 目录中。将它们复制到 `custom/public/assets/` 目录下。例如,如果要添加隐私政策: + +``` +wget -O /path/to/custom/public/assets/privacy.html https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/legal/privacy.html.sample +``` + +现在,你需要编辑该页面以满足你的需求。特别是,你必须更改电子邮件地址、网址以及与 "Your Gitea Instance" 相关的引用,以匹配你的情况。 + +请务必不要放置会暗示 Gitea 项目对你的服务器负责的一般服务条款或隐私声明。 + +## 使其可见 + +创建或追加到 `/path/to/custom/templates/custom/extra_links_footer.tmpl` 文件中: + +```go +隐私政策 +``` + +重启 Gitea 以查看更改。 diff --git a/docs/document/administration/authentication.md b/docs/document/administration/authentication.md new file mode 100644 index 0000000..c7fdd37 --- /dev/null +++ b/docs/document/administration/authentication.md @@ -0,0 +1,301 @@ +--- +date: "2016-12-01T16:00:00+02:00" +slug: "authentication" +sidebar_position: 10 +aliases: + - /zh-cn/authentication +--- + +# 认证 + +## 轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP) + +通过 BindDN 的 LDAP 和简单认证方式 LDAP 共享以下字段: + +- 认证名称 **(必选)** + + - 分配给新授权方法的名称。 + +- 主机名 **(必选)** + + - LDAP 服务的主机地址. + - 例如:`mydomain.com` + +- 端口号 **(必选)** + + - LDAP 服务的端口号. + - 例如: LDAP `389`/ LDAPs `636` + +- 安全协议 (可选) + + - 连接 LDAP 服务器时是否使用 TLS 协议。 + +- 管理员过滤规则 (可选) + + - 一个 LDAP 过滤器,用于指定哪些用户应该被赋予管理员特权。如果用户帐户符合过滤器条件,则该用户将被授予管理员权限。 + - 示例:`(objectClass=adminAccount)` + - 适用于 Microsoft Active Directory(AD)的示例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org` + +- 用户名属性(可选) + + - 用户 LDAP 记录中包含用户名称的属性。在第一次成功登录后,将使用指定的属性值作为新的 Gitea 账户用户名。若留空,则使用登录表单上提供的用户名。 + - 当提供的登录名与多个属性匹配时,这一选项非常有用,但是只有一个特定属性应该用于 Gitea 账户名称,请参阅"用户过滤器"。 + - 示例:uid + - 适用于 Microsoft Active Directory(AD)的示例:`sAMAccountName` + +- 名字属性(可选) + + - 用户 LDAP 记录中包含用户名字的属性。将用于填充他们的账户信息。 + - 示例:givenName + +- 姓氏属性(可选) + + - 用户 LDAP 记录中包含用户姓氏的属性。将用于填充他们的账户信息。 + - 示例:`sn` + +- 电子邮件属性 **(必选)** + - 用户 LDAP 记录中包含用户电子邮件地址的属性。将用于填充他们的账户信息。 + - 示例:`mail` + +### LDAP(via BindDN) + +需要额外设置以下字段: + +- 绑定 DN (可选) + + - 搜索用户时绑定到 LDAP 服务器的 DN。这可以留空以执行匿名搜索。 + - 示例: `cn=Search,dc=mydomain,dc=com` + +- 绑定密码 (可选) + + - 上述指定的 Bind DN(绑定区别名)的密码,如果有的话。注意:该密码在服务器上使用 SECRET_KEY 进行加密存储。仍然建议确保 Bind DN 具有尽可能少的权限。 + +- 用户搜索基准 **(必选)** + + - 这是用于搜索用户帐户的 LDAP 基础路径. + - 示例: `ou=Users,dc=mydomain,dc=com` + +- 用户过滤规则 **(必选)** + - LDAP 过滤器声明如何查找试图进行身份验证的用户记录 + `%[1]s`匹配参数将替换为登录表单中给出的登录名 + - 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))` + - 示例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))` + - 如需多次替换,应使用 `%[1]s`,例如在将提供的登录名与多个属性(如用户标识符、电子邮件甚至电话号码)进行匹配时。 + - 示例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))` +- 启用用户同步 + - 这个选项启用了一个周期性任务,用于将 Gitea 用户与 LDAP 服务器进行同步。默认的同步周期是每 24 小时, + 但您可以在 app.ini 文件中进行更改。 + 有关此部分的详细说明,请参阅[sample + app.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini) + 的*cron.sync_external_users* 部分的注释。前面提到的*User Search Base*和*User Filter* + 设置将限制哪些用户可以使用 Gitea 以及哪些用户将被同步。 + 在初始运行任务时,将根据给定的设置创建所有与 LDAP 匹配的用户,因此在使用大型企业 LDAP 目录时需要小心。 + +### LDAP(simple auth) + +需要额外设置以下字段: + +- 用户 DN **(必选)** + + - 用作用户 DN 的模板。匹配参数 `%s` 将替换为登录表单中的登录名。 + - 示例: `cn=%s,ou=Users,dc=mydomain,dc=com` + - 示例: `uid=%s,ou=Users,dc=mydomain,dc=com` + +- 用户搜索基准 (可选) + + - 用户搜索基准声明哪些用户帐户将被搜索. + - 示例: `ou=Users,dc=mydomain,dc=com` + +- 用户过滤规则 **(必选)** + - LDAP 过滤器声明何时允许用户登录 + `%[1]s`匹配参数将替换为登录表单中给出的登录名。 + - 示例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))` + - 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))` + +### 使用 LDAP 验证分组成员 + +使用以下字段: + +- 群组搜索基础 DN(可选) + + - 组使用的 LDAP DN。 + - 示例: `ou=group,dc=mydomain,dc=com` + +- 组名过滤器 (可选) + + - LDAP 过滤器,声明如何在上述 DN 中查找有效组。 + - 示例: `(|(cn=gitea_users)(cn=admins))` + +- 组中的用户属性 (可选) + + - 组中列出了哪个用户的 LDAP 属性。 + - 示例: `uid` + +- 用户组属性 (可选) + - 哪个组的 LDAP 属性包含一个高于用户属性名称的数组。 + - 示例: `memberUid` + +## 可插拔式认证模块(Pluggable Authentication Module,PAM) + +这个过程启用了 PAM(Pluggable Authentication Modules)认证。用户仍然可以通过用户管理手动添加到系统中。 +PAM 提供了一种机制,通过对用户进行 PAM 认证来自动将其添加到当前数据库中。为了与普通的 Linux 密码一起使用, +运行 Gitea 的用户还必须具有对`/etc/shadow`的读取权限,以便在使用公钥登录时检查账户的有效性。 + +**注意**:如果用户已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕过登录检查系统。因此, +如果您希望禁用使用 PAM 进行身份验证的用户,应该在 Gitea 中手动禁用该账户,使用内置的用户管理功能。 + +1. 配置和安装准备. + - 建议您创建一个管理用户. + - 建议取消自动注册. +1. 一旦数据库已初始化完成,使用新创建的管理员账户登录. +1. 导航至用户设置(右上角的图标),然后选择 + `Site Administration` -> `Authentication Sources`, 并选择 + `Add Authentication Source`. +1. 填写字段如下: + - 认证类型:`PAM`。 + - 名称:任何有效的值都可以,如果您愿意,可以使用"System Authentication"。 + - PAM 服务名称:从/etc/pam.d/目录下选择适用于所需认证的正确文件[^1]。 + - PAM 电子邮件域:用户认证时要附加的电子邮件后缀。例如,如果登录系统期望一个名为 gituse 的用户, + 并且将此字段设置为 mail.com,那么 Gitea 在验证一个 GIT 实例的用户时将期望 user emai 字段为gituser@mail.com[^2]。 + +**Note**: PAM 支持通过[build-time flags](installation/from-source.md#build)添加, +而官方提供的二进制文件通常不会默认启用此功能。PAM 需要确保系统上有必要的 libpam 动态库,并且编译器可以访问必要的 PAM 开发头文件。 + +[^1]: + 例如,在 Debian "Bullseye"上使用标准 Linux 登录,可以使用`common-session-noninteractive`。这个值对于其他版本的 Debian, + 包括 Ubuntu 和 Mint,可能也是有效的,请查阅您所使用发行版的文档以确认。 + +[^2]: **PAM 的必选项** 请注意:在上面的示例中,用户将作为`gituser`而不是`gituser@mail.com`登录到 Gitea 的 Web 界面。 + +## 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP) + +此选项允许 Gitea 以 Gitea 用户身份登录 SMTP 主机。请设置以下字段: + +- 身份验证名称 **(必选)** + + - 分配给新授权方法的名称 + +- SMTP 验证类型 **(必选)** + + - 用于连接 SMTP 主机的验证类型,plain 或 login + +- 主机名 **(必选)** + + - SMTP 服务的主机地址 + - 例如:`smtp.mydomain.com` + +- 端口号 **(必选)** + + - SMTP 服务的端口号 + - 例如: `587` + +- 允许的域名 + + - 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登录 + 限制哪些域可以登录。 + - 示例: `gitea.com,mydomain.com,mydomain2.com` + +- 强制使用 SMTPS + - 默认情况下将使用 SMTPS 连接到端口 465.如果您希望将 smtp 用于其他端口,自行设置 + - 否则,如果服务器提供' STARTTLS '扩展名,则将使用此扩展名 +- 跳过 TLS 验证 + - 禁用 TLS 验证身份. +- 该认证源处于激活状态 + - 启用或禁用此身份验证源 + +## FreeIPA + +- 要使用 FreeIPA 凭据登录 Gitea,需要为 Gitea 创建一个绑定帐户。 + 创建一个绑定帐户: +- 在 FreeIPA 服务器上创建一个 gitea.ldif 文件,并将`dc=example,dc=com`替换为您的`dn`,然后提供一个适当安全的密码。 + + ```sh + dn: uid=gitea,cn=sysaccounts,cn=etc,dc=example,dc=com + changetype: add + objectclass: account + objectclass: simplesecurityobject + uid: gitea + userPassword: secure password + passwordExpirationTime: 20380119031407Z + nsIdleTimeout: 0 + ``` + +- 导入 LDIF 文件(如果需要,请将 localhost 更改为 IPA 服务器)。系统会提示您输入 Directory Manager 的密码。: + + ```sh + ldapmodify -h localhost -p 389 -x -D \ + "cn=Directory Manager" -W -f gitea.ldif + ``` + +- 为`gitea_users`添加 IPA 组: + + ```sh + ipa group-add --desc="Gitea Users" gitea_users + ``` + +- **提示**:对于 IPA 凭证错误,运行' kinit admin '并提供域管理帐户密码. +- 以管理员身份登录 Gitea,点击 Admin Panel 下的`Authentication`。然后单击`Add New Source`并填写详细信息,更改所有适当的地方。 + +## SPNEGO with SSPI (Kerberos/NTLM, for Windows only) + +Gitea 支持通过 Windows 内置的安全支持提供程序接口(Security Support Provider Interface,SSPI)实现 SPNEGO 单点登录认证(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 仅在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。 + +在激活 SSPI 单点登录认证(SSO)之前,您需要准备您的环境: + +- 在 Active Directory 中创建一个单独的用户账户,gitea.exe 进程将在该账户下运行(例如,在 domain.local 域下创建一个名为 user 的账户: +- 为运行 gitea.exe 的主机创建一个服务主体名称(Service Principal Name,SPN),其类别为 HTTP: + + - 以特权域用户(例如域管理员)的身份启动“命令提示符”或“PowerShell”。 + - 运行下面的命令,将 host.domain.local 替换为 Web 应用程序将运行的服务器的完全限定域名(FQDN),将 domain\user 替换为在前一步中创建的账户名称: + + ```sh + setspn -A HTTP/host.domain.local domain\user + ``` + +在遵循上述步骤之前,请确保您按照以下流程进行操作: + +1. 用之前创建的用户登录(如果已经登录,请先注销)。 +2. 确保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`设置为 Web 应用程序将运行的服务器的完全限定域名(FQDN),与之前创建服务主体名称时使用的一致(例如,`host.domain.local`)。 +3. 启动 Web 服务器(运行 `gitea.exe web`)。 +4. 在 `Site Administration -> Authentication Sources` 中添加一个 `SPNEGO with SSPI` 认证源,以启用 SSPI 认证。 +5. 在域中的客户端计算机上,使用任何域用户登录(与运行`gitea.exe`的服务器不同)。 +6. 如果您使用 Chrome 或 Edge 浏览器,请将 Web 应用程序的 URL 添加到“本地站点”(`Internet选项 -> 安全 -> 本地站点 -> 站点`)。 +7. 启动 Chrome 或 Edge 浏览器,导航到 Gitea 的 FQDN URL(例如,`http://host.domain.local:3000`)。 +8. 在控制面板中点击“Sign In”按钮,然后选择 SSPI,将会自动使用当前登录到计算机的用户进行登录。 +9. 如果无法正常工作,请确保: + - 您不是在运行`gitea.exe`的同一台服务器上运行 Web 浏览器。应该在与服务器不同的域加入计算机(客户端)上运行 Web 浏览器。如果客户端和服务器都在同一台计算机上运行,则 NTLM 将优先于 Kerberos。 + - 主机上只有一个`HTTP/...`的 SPN。 + - SPN 中只包含主机名,不包含端口号。 + - 将 Web 应用程序的 URL 添加到"本地站点"。 + - 服务器和客户端的时钟差异不超过 5 分钟(取决于组策略)。 + - 在 Internet Explorer 中启用了"集成 Windows 身份验证"(在"高级设置"下)。 + +遵循这些步骤,您应该能够成功启用和使用 SSPI 单点登录认证(SSO)。 + +## 反向代理认证 + +Gitea 支持通过读取反向代理传递的 HTTP 头中的登录名或者 email 地址来支持反向代理来认证。默认是不启用的,你可以用以下配置启用。 + +```ini +[service] +ENABLE_REVERSE_PROXY_AUTHENTICATION = true +``` + +默认的登录用户名的 HTTP 头是 `X-WEBAUTH-USER`,你可以通过修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果用户不存在,可以自动创建用户,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。 + +默认的登录用户 Email 的 HTTP 头是 `X-WEBAUTH-EMAIL`,你可以通过修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 来变更它。如果用户不存在,可以自动创建用户,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。你也可以通过修改 `ENABLE_REVERSE_PROXY_EMAIL` 来启用或停用这个 HTTP 头。 + +如果设置了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`,则用户的全名会从 `X-WEBAUTH-FULLNAME` 读取,这样在自动创建用户时将使用这个字段作为用户全名,你也可以通过修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 来变更 HTTP 头。 + +你也可以通过修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加强安全性,默认值是 `127.0.0.0/8,::1/128`。 通过 `REVERSE_PROXY_LIMIT`, 可以设置最多信任几级反向代理。 + +你可以通过以下配置为 API 启用此认证方法: + +```ini +[service] +ENABLE_REVERSE_PROXY_AUTHENTICATION_API = true +``` + +:::note +当此方法用于 API 时,反向代理负责处理 CSRF 保护。 +::: diff --git a/docs/document/administration/backup-and-restore.md b/docs/document/administration/backup-and-restore.md new file mode 100644 index 0000000..73ce7c6 --- /dev/null +++ b/docs/document/administration/backup-and-restore.md @@ -0,0 +1,146 @@ +--- +date: "2018-06-06T09:33:00+08:00" +slug: "backup-and-restore" +sidebar_position: 11 + +aliases: + - /zh-cn/backup-and-restore +--- + +# 备份与恢复 + +Gitea 已经实现了 `dump` 命令可以用来备份所有需要的文件到一个 zip 压缩文件。该压缩文件可以被用来进行数据恢复。 + +## 备份一致性 + +为了确保 Gitea 实例的一致性,在备份期间必须关闭它。 + +Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都会发生变化。例如,当迁移正在进行时,在数据库中创建一个事务,而 Git 仓库正在被复制。如果备份发生在迁移的中间,Git 仓库可能是不完整的,尽管数据库声称它是完整的,因为它是在之后被转储的。避免这种竞争条件的唯一方法是在备份期间停止 Gitea 实例。 + +## 备份命令 (`dump`) + +先转到 git 用户的权限: `su git`. 再 Gitea 目录运行 `./gitea dump`。一般会显示类似如下的输出: + +``` +2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:09 Dumping local repositories.../home/git/gitea-repositories +2016/12/27 22:32:22 Dumping database... +2016/12/27 22:32:22 Packing dump files... +2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip +``` + +最后生成的 `gitea-dump-1482906742.zip` 文件将会包含如下内容: + +- `app.ini` - 如果原先存储在默认的 custom/ 目录之外,则是配置文件的可选副本 +- `custom/` - 所有保存在 `custom/` 目录下的配置和自定义的文件。 +- `data/` - 数据目录(APP_DATA_PATH),如果使用文件会话,则不包括会话。该目录包括 `attachments`、`avatars`、`lfs`、`indexers`、如果使用 SQLite 则包括 SQLite 文件。 +- `repos/` - 仓库目录的完整副本。 +- `gitea-db.sql` - 数据库 dump 出来的 SQL。 +- `log/` - Logs 文件,如果用作迁移不是必须的。 + +中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 `--tempdir` 参数,或者用 `TMPDIR` 环境变量。 + +## 备份数据库 + +`gitea dump` 创建的 SQL 转储使用 XORM,Gitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转储工具。使用 XORM 转储数据库时仍然存在一些问题,可能会导致在尝试恢复时出现问题。 + +```sh +# mysql +mysqldump -u$USER -p$PASS --database $DATABASE > gitea-db.sql +# postgres +pg_dump -U $USER $DATABASE > gitea-db.sql +``` + +### 使用 Docker (`dump`) + +在使用 Docker 时,使用 `dump` 命令有一些注意事项。 + +必须以 `gitea/conf/app.ini` 中指定的 `RUN_USER = ` 执行该命令;并且,为了让备份文件夹的压缩过程能够顺利执行,`docker exec` 命令必须在 `--tempdir` 内部执行。 + +示例: + +```none +docker exec -u -it -w <--tempdir> $(docker ps -qf 'name=^$') bash -c '/usr/local/bin/gitea dump -c ' +``` + +\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 环境的临时目录;如果您没有指定自定义的 `--tempdir`,那么 Gitea 将使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。对于 `--tempdir`,请相应调整您的 `docker exec` 命令选项。 + +结果应该是一个文件,存储在指定的 `--tempdir` 中,类似于:`gitea-dump-1482906742.zip` + +## 恢复命令 (`restore`) + +当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。 + +例如: + +```sh +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +mv app.ini /etc/gitea/conf/app.ini +mv data/* /var/lib/gitea/data/ +mv log/* /var/lib/gitea/log/ +mv repos/* /var/lib/gitea/gitea-repositories/ +chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea + +# mysql +mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE Docker),或者 Gitea 安装到了与之前安装不同的目录,则需要重新生成仓库 Git 钩子。 + +在 Gitea 运行时,并从 Gitea 二进制文件所在的目录执行:`./gitea admin regenerate hooks` + +这样可以确保仓库 Git 钩子中的应用程序和配置文件路径与当前安装一致。如果这些路径没有更新,仓库的 `push` 操作将失败。 + +### 使用 Docker (`restore`) + +在基于 Docker 的 Gitea 实例中,也没有恢复命令的支持。恢复过程与前面描述的步骤相同,但路径不同。 + +示例: + +```sh +# 在容器中打开 bash 会话 +docker exec --user git -it 2a83b293548e bash +# 在容器内解压您的备份文件 +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +# 恢复 Gitea 数据 +mv data/* /data/gitea +# 恢复仓库本身 +mv repos/* /data/git/gitea-repositories/ +# 调整文件权限 +chown -R git:git /data +# 重新生成 Git 钩子 +/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks +``` + +Gitea 容器中的默认用户是 `git`(1000:1000)。请用您的 Gitea 容器 ID 或名称替换 `2a83b293548e`。 + +### 使用 Docker-rootless (`restore`) + +在 Docker-rootless 容器中的恢复工作流程只是要使用的目录不同: + +```sh +# 在容器中打开 bash 会话 +docker exec --user git -it 2a83b293548e bash +# 在容器内解压您的备份文件 +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +# 恢复 app.ini +mv data/conf/app.ini /etc/gitea/app.ini +# 恢复 Gitea 数据 +mv data/* /var/lib/gitea +# 恢复仓库本身 +mv repos/* /var/lib/gitea/git/gitea-repositories +# 调整文件权限 +chown -R git:git /etc/gitea/app.ini /var/lib/gitea +# 重新生成 Git 钩子 +/usr/local/bin/gitea -c '/etc/gitea/app.ini' admin regenerate hooks +``` diff --git a/docs/document/administration/cmd-embedded.md b/docs/document/administration/cmd-embedded.md new file mode 100644 index 0000000..a2d2dc7 --- /dev/null +++ b/docs/document/administration/cmd-embedded.md @@ -0,0 +1,93 @@ +--- +date: "2023-05-23T09:00:00+08:00" +slug: "cmd-embedded" +sidebar_position: 20 + +aliases: + - /zh-cn/cmd-embedded +--- + +# 嵌入资源提取工具 + +Gitea 的可执行文件包含了运行所需的所有资源:模板、图片、样式表和翻译文件。你可以通过在 `custom` 目录下的相应路径中放置替换文件来覆盖其中的任何资源(详见 [自定义 Gitea 配置](../administration/customizing-gitea.md))。 + +要获取嵌入资源的副本以进行编辑,可以使用 CLI 中的 `embedded` 命令,通过操作系统的 shell 执行。 + +**注意:** 嵌入资源提取工具包含在 Gitea 1.12 及以上版本中。 + +## 资源列表 + +要列出嵌入在 Gitea 可执行文件中的资源,请使用以下语法: + +```sh +gitea embedded list [--include-vendored] [patterns...] +``` + +`--include-vendored` 标志使命令包括被供应的文件,这些文件通常被排除在外;即来自外部库的文件,这些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。 + +可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作为其 glob 语法。以下是一些示例: + +- 列出所有模板文件,无论在哪个虚拟目录下:`**.tmpl` +- 列出所有邮件模板文件:`templates/mail/**.tmpl` + 列出 `public/assets/img` 目录下的所有文件:`public/assets/img/**` + +不要忘记为模式使用引号,因为空格、`*` 和其他字符可能对命令行解释器有特殊含义。 + +如果未提供模式,则列出所有文件。 + +### 示例:列出所有嵌入文件 + +列出所有路径中包含 `openid` 的嵌入文件: + +```sh +$ gitea embedded list '**openid**' +public/assets/img/auth/openid_connect.svg +public/assets/img/openid-16x16.png +templates/user/auth/finalize_openid.tmpl +templates/user/auth/signin_openid.tmpl +templates/user/auth/signup_openid_connect.tmpl +templates/user/auth/signup_openid_navbar.tmpl +templates/user/auth/signup_openid_register.tmpl +templates/user/settings/security_openid.tmpl +``` + +## 提取资源 + +要提取嵌入在 Gitea 可执行文件中的资源,请使用以下语法: + +```sh +gitea [--config {file}] embedded extract [--destination {dir}|--custom] [--overwrite|--rename] [--include-vendored] {patterns...} +``` + +`--config` 选项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此选项仅在使用 `--custom` 标志时使用。 + +`--destination` 选项用于指定提取文件的目标目录。默认为当前目录。 + +`--custom` 标志告知 Gitea 直接将文件提取到 `custom` 目录中。为使其正常工作,该命令需要知道 `app.ini` 配置文件的位置(通过 `--config` 指定),并且根据配置的不同,需要从 Gitea 通常启动的目录运行。有关详细信息,请参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md)。 + +`--overwrite` 标志允许覆盖目标目录中的任何现有文件。 + +`--rename` 标志告知 Gitea 将目标目录中的任何现有文件重命名为 `filename.bak`。之前的 `.bak` 文件将被覆盖。 + +至少需要提供一个文件搜索模式;有关模式的语法和示例,请参阅上述 `list` 子命令。 + +### 重要提示 + +请确保**只提取需要自定义的文件**。位于 `custom` 目录中的文件不会受到 Gitea 的升级过程的影响。当 Gitea 升级到新版本(通过替换可执行文件)时,许多嵌入文件将发生变化。Gitea 将尊重并使用在 `custom` 目录中找到的任何文件,即使这些文件是旧的和不兼容的。 + +### 示例:提取邮件模板 + +将邮件模板提取到临时目录: + +```sh +$ mkdir tempdir +$ gitea embedded extract --destination tempdir 'templates/mail/**.tmpl' +Extracting to tempdir: +tempdir/templates/mail/auth/activate.tmpl +tempdir/templates/mail/auth/activate_email.tmpl +tempdir/templates/mail/auth/register_notify.tmpl +tempdir/templates/mail/auth/reset_passwd.tmpl +tempdir/templates/mail/issue/assigned.tmpl +tempdir/templates/mail/issue/default.tmpl +tempdir/templates/mail/notify/collaborator.tmpl +``` diff --git a/docs/document/administration/command-line.md b/docs/document/administration/command-line.md new file mode 100644 index 0000000..e7a563c --- /dev/null +++ b/docs/document/administration/command-line.md @@ -0,0 +1,534 @@ +--- +date: "2023-05-23T09:00:00+08:00" +slug: "command-line" +sidebar_position: 1 + +aliases: + - /zh-cn/command-line +--- + +# 命令行 + +## 用法 + +`gitea [全局选项] 命令 [命令或全局选项] [参数...]` + +## 全局选项 + +所有全局选项均可被放置在命令级别。 + +- `--help`,`-h`:显示帮助文本并退出。可选。 +- `--version`,`-v`:显示版本信息并退出。可选。 (示例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。 +- `--custom-path path`,`-C path`:Gitea 自定义文件夹的路径。可选。 (默认值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。 +- `--config path`,`-c path`:Gitea 配置文件的路径。可选。 (默认值:`custom`/conf/app.ini)。 +- `--work-path path`,`-w path`:Gitea 的 `AppWorkPath`。可选。 (默认值:LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`) + +注意:默认的 custom-path、config 和 work-path 也可以在构建时更改(如果需要)。 + +## 命令 + +### web + +启动服务器: + +- 选项: + - `--port number`,`-p number`:端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。 + - `--install-port number`:运行安装页面的端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。 + - `--pid path`,`-P path`:Pid 文件的路径。可选。 + - `--quiet`,`-q`:只在控制台上输出 Fatal 日志,用于在设置日志之前发出的日志。 + - `--verbose`:在控制台上输出跟踪日志,用于在设置日志之前发出的日志。 +- 示例: + - `gitea web` + - `gitea web --port 80` + - `gitea web --config /etc/gitea.ini --pid /some/custom/gitea.pid` +- 注意: + - Gitea 不应以 root 用户身份运行。要绑定到低于 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新执行此操作。 + +### admin + +管理员操作: + +- 命令: + - `user`: + - `list`: + - 选项: + - `--admin`:仅列出管理员用户。可选。 + - 描述:列出所有现有用户。 + - 示例: + - `gitea admin user list` + - `delete`: + - 选项: + - `--email`:要删除的用户的电子邮件。 + - `--username`:要删除的用户的用户名。 + - `--id`:要删除的用户的 ID。 + - 必须提供 `--id`、`--username` 或 `--email` 中的一个。如果提供多个,则所有条件必须匹配。 + - 示例: + - `gitea admin user delete --id 1` + - `create`: + - 选项: + - `--name value`:用户名。必填。自 Gitea 1.9.0 版本起,请改用 `--username` 标志。 + - `--username value`:用户名。必填。Gitea 1.9.0 新增。 + - `--password value`:密码。必填。 + - `--email value`:邮箱。必填。 + - `--admin`:如果提供此选项,将创建一个管理员用户。可选。 + - `--access-token`:如果提供,将为用户创建访问令牌。可选。(默认值:false)。 + - `--must-change-password`:如果提供,创建的用户将在初始登录后需要选择一个新密码。可选。(默认值:true)。 + - `--random-password`:如果提供,将使用随机生成的密码作为创建用户的密码。`--password` 的值将被忽略。可选。 + - `--random-password-length`:如果提供,将用于配置随机生成密码的长度。可选。(默认值:12) + - 示例: + - `gitea admin user create --username myname --password asecurepassword --email me@example.com` + - `change-password`: + - 选项: + - `--username value`,`-u value`:用户名。必填。 + - `--password value`,`-p value`:新密码。必填。 + - 示例: + - `gitea admin user change-password --username myname --password asecurepassword` + - `must-change-password`: + - 参数: + - `[username...]`:需要更改密码的用户 + - 选项: + - `--all`,`-A`:强制所有用户更改密码 + - `--exclude username`,`-e username`:排除给定的用户。可以多次设置。 + - `--unset`:撤销对给定用户的强制密码更改 + - `regenerate`: + - 选项: + - `hooks`:重新生成所有仓库的 Git Hooks。 + - `keys`:重新生成 authorized_keys 文件。 + - 示例: + - `gitea admin regenerate hooks` + - `gitea admin regenerate keys` + - `auth`: + - `list`: + - 描述:列出所有存在的外部认证源。 + - 示例: + - `gitea admin auth list` + - `delete`: + - 选项: + - `--id`:要删除的源的 ID。必填。 + - 示例: + - `gitea admin auth delete --id 1` + - `add-oauth`: + - 选项: + - `--name`:应用程序名称。 + - `--provider`:OAuth2 提供者。 + - `--key`:客户端 ID(Key)。 + - `--secret`:客户端密钥。 + - `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。 + - `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。 + - `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。 + - `--custom-auth-url`:使用自定义授权 URL(GitLab/GitHub 的选项)。 + - `--custom-token-url`:使用自定义令牌 URL(GitLab/GitHub 的选项)。 + - `--custom-profile-url`:使用自定义配置文件 URL(GitLab/GitHub 的选项)。 + - `--custom-email-url`:使用自定义电子邮件 URL(GitHub 的选项)。 + - `--icon-url`:OAuth2 登录源的自定义图标 URL。 + - `--skip-local-2fa`:允许源覆盖本地 2FA。(可选) + - `--scopes`:请求此 OAuth2 源的附加范围。(可选) + - `--required-claim-name`:必须设置的声明名称,以允许用户使用此源登录。(可选) + - `--required-claim-value`:必须设置的声明值,以允许用户使用此源登录。(可选) + - `--group-claim-name`:提供此源的组名的声明名称。(可选) + - `--admin-group`:管理员用户的组声明值。(可选) + - `--restricted-group`:受限用户的组声明值。(可选) + - `--group-team-map`:组与组织团队之间的 JSON 映射。(可选) + - `--group-team-map-removal`:根据组自动激活团队成员资格的删除。(可选) + - 示例: + - `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE` + - `update-oauth`: + - 选项: + - `--id`:要更新的源的 ID。必填。 + - `--name`:应用程序名称。 + - `--provider`:OAuth2 提供者。 + - `--key`:客户端 ID(Key)。 + - `--secret`:客户端密钥。 + - `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。 + - `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。 + - `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。 + - `--custom-auth-url`:使用自定义授权 URL(GitLab/GitHub 的选项)。 + - `--custom-token-url`:使用自定义令牌 URL(GitLab/GitHub 的选项)。 + - `--custom-profile-url`:使用自定义配置文件 URL(GitLab/GitHub 的选项)。 + - `--custom-email-url`:使用自定义电子邮件 URL(GitHub 的选项)。 + - `--icon-url`:OAuth2 登录源的自定义图标 URL。 + - `--skip-local-2fa`:允许源覆盖本地 2FA。(可选) + - `--scopes`:请求此 OAuth2 源的附加范围。 + - `--required-claim-name`:必须设置的声明名称,以允许用户使用此源登录。(可选) + - `--required-claim-value`:必须设置的声明值,以允许用户使用此源登录。(可选) + - `--group-claim-name`:提供此源的组名的声明名称。(可选) + - `--admin-group`:管理员用户的组声明值。(可选) + - `--restricted-group`:受限用户的组声明值。(可选) + - 示例: + - `gitea admin auth update-oauth --id 1 --name external-github-updated` + - `add-smtp`: + - 选项: + - `--name`:应用程序名称。必填。 + - `--auth-type`:SMTP 认证类型(PLAIN/LOGIN/CRAM-MD5)。默认为 PLAIN。 + - `--host`:SMTP 主机。必填。 + - `--port`:SMTP 端口。必填。 + - `--force-smtps`:SMTPS 始终在端口 465 上使用。设置此选项以强制在其他端口上使用 SMTPS。 + - `--skip-verify`:跳过 TLS 验证。 + - `--helo-hostname`:发送 HELO 时使用的主机名。留空以发送当前主机名。 + - `--disable-helo`:禁用 SMTP helo。 + - `--allowed-domains`:留空以允许所有域。使用逗号(',')分隔多个域。 + - `--skip-local-2fa`:跳过 2FA 登录。 + - `--active`:启用此认证源。 + 备注: + `--force-smtps`、`--skip-verify`、`--disable-helo`、`--skip-local-2fs` 和 `--active` 选项可以采用以下形式使用: + - `--option`、`--option=true` 以启用选项 + - `--option=false` 以禁用选项 + 如果未指定这些选项,则在 `update-smtp` 中不会更改值,或者在 `add-smtp` 中将使用默认的 `false` 值。 + - 示例: + - `gitea admin auth add-smtp --name ldap --host smtp.mydomain.org --port 587 --skip-verify --active` + - `update-smtp`: + - 选项: + - `--id`:要更新的源的 ID。必填。 + - 其他选项与 `add-smtp` 共享 + - 示例: + - `gitea admin auth update-smtp --id 1 --host smtp.mydomain.org --port 587 --skip-verify=false` + - `gitea admin auth update-smtp --id 1 --active=false` + - `add-ldap`:添加新的 LDAP(通过 Bind DN)认证源 + - 选项: + - `--name value`:认证名称。必填。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。必填。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。必填。 + - `--port value`:连接到 LDAP 服务器时使用的端口。必填。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。必填。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。必填。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。必填。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。 + - `--bind-password value`:绑定 DN 的密码(如果有)。 + - `--attributes-in-bind`:在绑定 DN 上下文中获取属性。 + - `--synchronize-users`:启用用户同步。 + - `--page-size value`:搜索页面大小。 + - 示例: + - `gitea admin auth add-ldap --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-search-base "ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))" --email-attribute mail` + - `update-ldap`:更新现有的 LDAP(通过 Bind DN)认证源 + - 选项: + - `--id value`:认证源的 ID。必填。 + - `--name value`:认证名称。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。 + - `--port value`:连接到 LDAP 服务器时使用的端口。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。 + - `--bind-password value`:绑定 DN 的密码(如果有)。 + - `--attributes-in-bind`:在绑定 DN 上下文中获取属性。 + - `--synchronize-users`:启用用户同步。 + - `--page-size value`:搜索页面大小。 + - 示例: + - `gitea admin auth update-ldap --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + - `add-ldap-simple`:添加新的 LDAP(简单身份验证)认证源 + - 选项: + - `--name value`:认证名称。必填。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。必填。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。必填。 + - `--port value`:连接到 LDAP 服务器时使用的端口。必填。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。必填。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。必填。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--user-dn value`:用户的 DN。必填。 + - 示例: + - `gitea admin auth add-ldap-simple --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-dn "cn=%s,ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(cn=%s))" --email-attribute mail` + - `update-ldap-simple`:更新现有的 LDAP(简单身份验证)认证源 + - 选项: + - `--id value`:认证源的 ID。必填。 + - `--name value`:认证名称。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。 + - `--port value`:连接到 LDAP 服务器时使用的端口。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--user-dn value`:用户的 DN。 + - 示例: + - `gitea admin auth update-ldap-simple --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap-simple --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + +### cert + +生成自签名的 SSL 证书。将输出到当前目录下的`cert.pem`和`key.pem`文件中,并且会覆盖任何现有文件。 + +- 选项: + - `--host value`:逗号分隔的主机名和 IP 地址列表,此证书适用于这些主机。支持使用通配符。必填。 + - `--ecdsa-curve value`:用于生成密钥的 ECDSA 曲线。可选。有效选项为 P224、P256、P384、P521。 + - `--rsa-bits value`:要生成的 RSA 密钥的大小。可选。如果设置了--ecdsa-curve,则忽略此选项。(默认值:3072)。 + - `--start-date value`:证书的创建日期。可选。(格式:`Jan 1 15:04:05 2011`)。 + - `--duration value`:证书有效期。可选。(默认值:8760h0m0s) + - `--ca`:如果提供此选项,则证书将生成自己的证书颁发机构。可选。 +- 示例: + - `gitea cert --host git.example.com,example.com,www.example.com --ca` + +### dump + +将所有文件和数据库导出到一个 zip 文件中。输出文件将保存在当前目录下,类似于`gitea-dump-1482906742.zip`。 + +- 选项: + - `--file name`,`-f name`:指定要创建的导出文件的名称。可选。(默认值:gitea-dump-[timestamp].zip)。 + - `--tempdir path`,`-t path`:指定临时目录的路径。可选。(默认值:/tmp)。 + - `--skip-repository`,`-R`:跳过仓库的导出。可选。 + - `--skip-custom-dir`:跳过自定义目录的导出。可选。 + - `--skip-lfs-data`:跳过 LFS 数据的导出。可选。 + - `--skip-attachment-data`:跳过附件数据的导出。可选。 + - `--skip-package-data`:跳过包数据的导出。可选。 + - `--skip-log`:跳过日志数据的导出。可选。 + - `--database`,`-d`:指定数据库的 SQL 语法。可选。 + - `--verbose`,`-V`:如果提供此选项,显示附加详细信息。可选。 + - `--type`:设置导出的格式。可选。(默认值:zip) +- 示例: + - `gitea dump` + - `gitea dump --verbose` + +### generate + +用于在配置文件中生成随机值和令牌。对于自动部署时生成值非常有用。 + +- 命令: + - `secret`: + - 选项: + - `INTERNAL_TOKEN`: 用于内部 API 调用身份验证的令牌。 + - `JWT_SECRET`: 用于 LFS 和 OAUTH2 JWT 身份验证的密钥(LFS_JWT_SECRET 是此选项的别名,用于向后兼容)。 + - `SECRET_KEY`: 全局密钥。 + - 示例: + - `gitea generate secret INTERNAL_TOKEN` + - `gitea generate secret JWT_SECRET` + - `gitea generate secret SECRET_KEY` + +### keys + +提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中进行配置: + +```ini +... +# -e 的值和 AuthorizedKeysCommandUser 应与运行 Gitea 的用户名匹配 +AuthorizedKeysCommandUser git +AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k +``` + +该命令将返回适用于提供的密钥的合适 authorized_keys 行。您还应在 `app.ini` 的 `[server]` 部分设置值 `SSH_CREATE_AUTHORIZED_KEYS_FILE=false`。 + +注意: opensshd 要求 Gitea 程序由 root 拥有,并且不可由组或其他人写入。程序必须使用绝对路径指定。 +注意: Gitea 必须在运行此命令时处于运行状态才能成功。 + +### migrate + +迁移数据库。该命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。 + +### doctor check + +对 Gitea 实例进行诊断,可以修复一些可修复的问题。 +默认只运行部分检查,额外的检查可以参考: + +- `gitea doctor check --list` - 列出所有可用的检查 +- `gitea doctor check --all` - 运行所有可用的检查 +- `gitea doctor check --default` - 运行默认的检查 +- `gitea doctor check --run [check(s),]...` - 运行指定的名字的检查 + +有些问题可以通过设置 `--fix` 选项进行自动修复。 +额外的日志可以通过 `--log-file=...` 进行设置。 + +#### doctor recreate-table + +有时,在迁移时,旧的列和默认值可能会在数据库模式中保持不变。这可能会导致警告,如下所示: + +``` +2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0 +``` + +您可以通过以下方式让 Gitea 重新创建这些表,并将旧数据复制到新表中,并适当设置默认值: + +``` +gitea doctor recreate-table user +``` + +您可以使用以下方式让 Gitea 重新创建多个表: + +``` +gitea doctor recreate-table table1 table2 ... +``` + +如果您希望 Gitea 重新创建所有表,请直接调用: + +``` +gitea doctor recreate-table +``` + +强烈建议在运行这些命令之前备份您的数据库。 + +### doctor convert + +将现有的 MySQL 数据库从 utf8 转换为 utf8mb4,或者把 MSSQL 数据库从 varchar 转换为 nvarchar。 + +### manager + +管理运行中的服务器操作: + +- 命令: + - `shutdown`: 优雅地关闭运行中的进程 + - `restart`: 优雅地重新启动运行中的进程(对于 Windows 服务器尚未实现) + - `flush-queues`: 刷新运行中的进程中的队列 + - 选项: + - `--timeout value`: 刷新过程的超时时间(默认值: 1m0s) + - `--non-blocking`: 设置为 true,以在返回之前不等待刷新完成 + - `logging`: 调整日志命令 + - 命令: + - `pause`: 暂停日志记录 + - 注意: + - 如果日志级别低于此级别,日志级别将被临时提升为 INFO。 + - Gitea 将在一定程度上缓冲日志,并在超过该点后丢弃日志。 + - `resume`: 恢复日志记录 + - `release-and-reopen`: 使 Gitea 释放和重新打开用于日志记录的文件和连接(相当于向 Gitea 发送 SIGUSR1 信号)。 + - `remove name`: 删除指定的日志记录器 + - 选项: + - `--group group`, `-g group`: 从中删除子记录器的组(默认为`default`) + - `add`: 添加日志记录器 + - 命令: + - `console`: 添加控制台日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--stderr`: 将控制台日志输出到 stderr - 仅适用于控制台 + - `file`: 添加文件日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--filename value`, `-f value`: 日志记录器的文件名 + - `--rotate`, `-r`: 轮转日志 + - `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节为单位) + - `--daily`, `-d`: 每天轮转日志 + - `--max-days value`, `-D value`: 保留的每日日志的最大数量 + - `--compress`, `-z`: 压缩轮转的日志 + - `--compression-level value`, `-Z value`: 使用的压缩级别 + - `conn`: 添加网络连接日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--reconnect-on-message`, `-R`: 对于每个消息重新连接主机 + - `--reconnect`, `-r`: 连接中断时重新连接主机 + - `--protocol value`, `-P value`: 设置要使用的协议:tcp、unix 或 udp(默认为 tcp) + - `--address value`, `-a value`: 要连接到的主机地址和端口(默认为:7020) + - `smtp`: 添加 SMTP 日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--username value`, `-u value`: 邮件服务器用户名 + - `--password value`, `-P value`: 邮件服务器密码 + - `--host value`, `-H value`: 邮件服务器主机(默认为: 127.0.0.1:25) + - `--send-to value`, `-s value`: 要发送到的电子邮件地址 + - `--subject value`, `-S value`: 发送电子邮件的主题标题 + - `processes`: 显示 Gitea 进程和 Goroutine 信息 + - 选项: + - `--flat`: 以平面表格形式显示进程,而不是树形结构 + - `--no-system`: 不显示系统进程 + - `--stacktraces`: 显示与进程关联的 Goroutine 的堆栈跟踪 + - `--json`: 输出为 JSON 格式 + - `--cancel PID`: 向具有 PID 的进程发送取消命令(仅适用于非系统进程) + +### dump-repo + +`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转储存储库数据: + +- 选项: + - `--git_service service`:Git 服务,可以是 `git`、`github`、`gitea`、`gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此选项。 + - `--repo_dir dir`,`-r dir`:存储数据的存储库目录路径。 + - `--clone_addr addr`:将被克隆的 URL,目前可以是 git/github/gitea/gitlab 的 http/https URL。例如:https://github.com/lunny/tango.git + - `--auth_username lunny`:访问 `clone_addr` 的用户名。 + - `--auth_password `:访问 `clone_addr` 的密码。 + - `--auth_token `:访问 `clone_addr` 的个人令牌。 + - `--owner_name lunny`:如果非空,数据将存储在具有所有者名称的目录中。 + - `--repo_name tango`:如果非空,数据将存储在具有存储库名称的目录中。 + - `--units `:要迁移的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。 + +### restore-repo + +`restore-repo` 从磁盘目录中还原存储库数据: + +- 选项: + - `--repo_dir dir`,`-r dir`:还原数据的存储库目录路径。 + - `--owner_name lunny`:还原目标所有者名称。 + - `--repo_name tango`:还原目标存储库名称。 + - `--units `:要还原的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。 + +### actions generate-runner-token + +生成一个供 Runner 使用的新令牌,用于向服务器注册。 + +- 选项: + - `--scope {owner}[/{repo}]`,`-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示该 Runner 可用于所有仓库,但你也可以将其限制为特定的仓库或所有者。 + +要注册全局 Runner: + +``` +gitea actions generate-runner-token +``` + +要注册特定组织的 Runner,例如 `org`: + +``` +gitea actions generate-runner-token -s org +``` + +要注册特定仓库的 Runner,例如 `username/test-repo`: + +``` +gitea actions generate-runner-token -s username/test-repo +``` diff --git a/docs/document/administration/config-cheat-sheet.md b/docs/document/administration/config-cheat-sheet.md new file mode 100644 index 0000000..46826d7 --- /dev/null +++ b/docs/document/administration/config-cheat-sheet.md @@ -0,0 +1,1384 @@ +--- +date: "2016-12-26T16:00:00+02:00" +slug: "config-cheat-sheet" +sidebar_position: 30 + +aliases: + - /zh-cn/config-cheat-sheet +--- + +# 配置说明 + +这是针对 Gitea 配置文件的说明, +你可以了解 Gitea 的强大配置。 + +需要说明的是,你的所有改变请修改 `custom/conf/app.ini` 文件而不是源文件。 +如果是从发行版本完成的安装, +配置文件的路径为`/etc/gitea/conf/app.ini`。 + +所有默认值可以通过 [app.example.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini) 查看到。 +标注了 :exclamation: 的配置项表明除非你真的理解这个配置项的意义,否则最好使用默认值。 + +包含`#`或者`;`的变量必须使用引号( `` ` `` 或者 `"` )包裹,否则会被解析为注释。 + +本文档使用以下约定: + +- `[section].FOO_BAR` 或 `[section]FOO_BAR`: 一个位于 INI 文件 `[section]` 段中的配置项。 +- `FooBar`: 这是一个 Gitea 内部变量,不是一个配置项,仅用于描述相关逻辑。 +- `$FOO_BAR`: 这是一个环境变量,Gitea 可能会使用它的值,但是它不能直接用于配置文件中。 +- `{FOO_BAR}/something` 或 `{FooBar}/something`: 这个值会默认使用配置项 `FOO_BAR` 或者内部变量 `FooBar`。 + +**注意:** 修改完配置文件后,需要重启 Gitea 服务才能生效。 + +## 使用环境变量配置 Gitea + +我们提供了 [environment-to-ini](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini) 工具 +来帮助通过环境变量生成 Gitea 的 `app.ini` 配置文件。 + +## 默认配置 (非`app.ini`配置文件) + +这些值取决于环境,但构成了许多值的基础。当运行 `gitea help`或启动时,它们将 +作为默认配置的一部分进行报告。它们在那里发出的顺序略有不同,但我们将按照设置的顺序在这里列出。 + +- _`AppPath`_: Gitea 二进制可执行文件的绝对路径 +- _`AppWorkPath`_: Gitea 可执行文件的工作目录。 该配置可以通过以下几种方式设置,优先级依次递减: + - `app.ini`中的`WORK_PATH`配置项 + - 启动 Gitea 时的`--work-path`命令行参数 + - `$GITEA_WORK_DIR`环境变量 + - 在编译时设置的内置值(参见从源代码编译) + - 默认为 _`AppPath`_ 的目录 + - 如果上述任何路径为相对路径,将自动解析为相对于 _`AppPath`_ 目录的绝对路径 +- _`CustomPath`_: 这是用于自定义模板和其他选项的基础目录。 + 它是通过使用以下层次结构中的第一个设置的内容来确定的: + - 通过传递给二进制文件的`--custom-path`标志 + - 环境变量 `$GITEA_CUSTOM` + - 在构建时设置的内置值(参见从源代码构建) + - 否则,默认为 _`AppWorkPath`_`/custom` + - 如果上述任何路径是相对路径,则会相对于 _`AppWorkPath`_ 目录进行处理, + 使其变为绝对路径。 +- _`CustomConf`_: 这是指向`app.ini`文件的路径。 + - 这是指向`app.ini`文件的路径。 + - 在构建时设置的内置值(参见从源代码构建) + - 否则,默认为 _`CustomPath`_`/conf/app.ini` + - 如果上述任何路径是相对路径,则会相对于*`CustomPath`*目录进行处理。 + +此外,还有*`StaticRootPath`*,可以在构建时设置为内置值,否则将默认为 _`AppWorkPath`_。 + +## Overall (`DEFAULT`) + +- `APP_NAME`: **Gitea: Git with a cup of tea** 应用名称,在网页的标题中显示。 +- `RUN_USER`: **_current OS username_/`$USER`/`$USERNAME` e.g. git**: 运行 Gitea 的用户, + 应当是一个专用的系统账户(非用户使用,推荐创建一个专用的`git`用户). 如果在你自己的个人电脑使用改成你自己的用户名。 + 该配置如果设置不正确,Gitea 可能崩溃。 +- `RUN_MODE`: **prod**: 应用的运行模式,对运行性能和问题排除有影响: `dev` 或者 `prod`,默认为 `prod`。 `dev`模式有助于开发和问题排查, 除设置为`dev` 外,均被视为 `prod`. +- `WORK_PATH`: **_the-work-path_**: 工作目录, 前文有提及. + +## 仓库 (`repository`) + +- `ROOT`: **`{APP_DATA_PATH}/gitea-repositories`**: 存放 git 工程的根目录,建议填绝对路径。 + 相对路径将被解析为**`{AppWorkPath}/{ROOT}`**. +- `SCRIPT_TYPE`: **bash**: 服务器支持的 Shell 类型,通常是`bash`, + 但有些服务器也有可能是`sh`。 +- `DETECTED_CHARSETS_ORDER`: **UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr**: 检测到的字符集的决定性顺序 - 如果检测到的字符集具有相等的置信度,则优先选择列表中较早出现的字符集,而不是较晚出现的字符集。添加“defaults”将会将未命名的字符集放置在该点。 +- `ANSI_CHARSET`: **_empty_**: 默认的 ANSI 字符集,用于覆盖非 UTF-8 字符集。 +- `FORCE_PRIVATE`: **false**: 强制使每个新仓库变为私有。 +- `DEFAULT_PRIVATE`: **last**: 创建新仓库时默认为私有:`last`, `private`, `public`。 +- `DEFAULT_PUSH_CREATE_PRIVATE`: **true**: 使用推送创建新仓库时默认为私有。 +- `MAX_CREATION_LIMIT`: **-1**: 每个用户的全局仓库创建上限, + `-1` 代表无限制. +- `PREFERRED_LICENSES`: **Apache License 2.0,MIT License**: 要放置在列表顶部的指定许可证。 + 名称必须与 options/license 或 custom/options/license 中的文件名匹配。 +- `DISABLE_HTTP_GIT`: **false**: 禁用 HTTP 协议与仓库进行 + 交互的能力。 +- `USE_COMPAT_SSH_URI`: **false**: 当使用默认的 SSH 端口时,强制使用 ssh://克隆 URL, + 而不是 scp-style uri。 +- `GO_GET_CLONE_URL_PROTOCOL`: **https**: 用于 "go get" 请求的值,返回仓库的 URL 作为 https 或 ssh, + 默认为 https。 +- `ACCESS_CONTROL_ALLOW_ORIGIN`: **_empty_**:用于 Access-Control-Allow-Origin 标头的值, + 默认不提供。 + 警告:如果您不提供正确的值,这可能对您的网站造成危害。 +- `DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH`: **false**: 如果非默认分支上的提交将问题标记为已关闭,则关闭该问题。 +- `ENABLE_PUSH_CREATE_USER`: **false**: 允许用户将本地存储库推送到 Gitea,并为用户自动创建它们。 +- `ENABLE_PUSH_CREATE_ORG`: **false**: 允许用户将本地存储库推送到 Gitea,并为组织自动创建它们。 +- `DISABLED_REPO_UNITS`: **_empty_**: 逗号分隔的全局禁用的仓库单元列表。允许的值是:: \[repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki, repo.projects, repo.packages, repo.actions\] +- `DEFAULT_REPO_UNITS`: **repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,repo.actions**: 逗号分隔的默认新仓库单元列表。允许的值是:: \[repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki, repo.projects, repo.packages, repo.actions\]. 注意:目前无法停用代码和发布。如果您指定了默认的仓库单元,您仍应将它们列出以保持未来的兼容性。外部 wiki 和问题跟踪器不能默认启用,因为它需要额外的设置。禁用的仓库单元将不会添加到新的仓库中,无论它是否在默认列表中。 +- `DEFAULT_FORK_REPO_UNITS`: **repo.code,repo.pulls**: 逗号分隔的默认分叉仓库单元列表。允许的值和规则与`DEFAULT_REPO_UNITS`相同。 +- `DEFAULT_MIRROR_REPO_UNITS`: **repo.code,repo.releases,repo.issues,repo.wiki,repo.projects,repo.packages**: 逗号分隔的默认镜像仓库单元列表。允许的值和规则与`DEFAULT_REPO_UNITS`相同。 +- `DEFAULT_TEMPLATE_REPO_UNITS`: **repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages**: 逗号分隔的默认模板仓库单元列表。允许的值和规则与`DEFAULT_REPO_UNITS`相同。 +- `PREFIX_ARCHIVE_FILES`: **true**: 通过将存档文件放置在以仓库命名的目录中来添加前缀。 +- `DISABLE_MIGRATIONS`: **false**: 禁用迁移功能。 +- `DISABLE_STARS`: **false**: 禁用点赞功能。 +- `DEFAULT_BRANCH`: **main**: 所有仓库的默认分支名称。 +- `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: 允许非管理员用户认领未被认领的仓库。 +- `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: 允许非管理员用户删除未被认领的仓库。 +- `DISABLE_DOWNLOAD_SOURCE_ARCHIVES`: **false**: 不允许从用户界面下载源代码存档文件。 +- `ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT`: **true**: 允许无限制得派生仓库。 + +### 仓库 - 编辑器 (`repository.editor`) + +- `LINE_WRAP_EXTENSIONS`: **.txt,.md,.markdown,.mdown,.mkd,.livemd,**: 在 Monaco 编辑器中应该换行的文件扩展名列表。用逗号分隔扩展名。要对没有扩展名的文件进行换行,只需放置一个逗号。 +- `PREVIEWABLE_FILE_MODES`: **markdown**: 具有预览 API 的有效文件模式,例如 `api/v1/markdown`。用逗号分隔各个值。如果文件扩展名不匹配,编辑模式下的预览选项卡将不会显示。 + +### 仓库 - 合并请求 (`repository.pull-request`) + +- `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: 在拉取请求标题中用于标记工作正在进行中的前缀列表。 + 这些前缀在不区分大小写的情况下进行匹配。 +- `CLOSE_KEYWORDS`: **close**, **closes**, **closed**, **fix**, **fixes**, **fixed**, **resolve**, **resolves**, **resolved**: 在拉取请求评论中用于自动关闭相关问题的关键词列表。 +- `REOPEN_KEYWORDS`: **reopen**, **reopens**, **reopened**: 在拉取请求评论中用于自动重新打开相关问题的 + 关键词列表。 +- `DEFAULT_MERGE_STYLE`: **merge**: 设置创建仓库的默认合并方式,可选: `merge`, `rebase`, `rebase-merge`, `squash`, `fast-forward-only` +- `DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT`: **50**: 在默认合并消息中,对于`squash`提交,最多包括此数量的提交。设置为 -1 以包括所有提交。 +- `DEFAULT_MERGE_MESSAGE_SIZE`: **5120**: 在默认的合并消息中,对于`squash`提交,限制提交消息的大小。设置为 `-1`以取消限制。仅在`POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES`为`true`时使用。 +- `DEFAULT_MERGE_MESSAGE_ALL_AUTHORS`: **false**: 在默认合并消息中,对于`squash`提交,遍历所有提交以包括所有作者的`Co-authored-by`,否则仅使用限定列表中的作者。 +- `DEFAULT_MERGE_MESSAGE_MAX_APPROVERS`: **10**:在默认合并消息中,限制列出的审批者数量为`Reviewed-by`:。设置为 `-1` 以包括所有审批者。 +- `DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY`: **true**: 在默认合并消息中,仅包括官方允许审查的审批者。 +- `POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES`: **false**: 在默认的 squash 合并消息中,包括构成拉取请求的所有提交的提交消息。 +- `ADD_CO_COMMITTER_TRAILERS`: **true**: 如果提交者与作者不匹配,在合并提交消息中添加`co-authored-by`和`co-committed-by`标记。 +- `TEST_CONFLICTING_PATCHES_WITH_GIT_APPLY`:使用三方合并方法测试`PR Patch`以发现是否存在冲突。如果此设置`true`,将使用`git apply`重新测试冲突的`PR Pathch` - 这是 1.18(和之前版本)中的先前行为,但效率相对较低。如果发现需要此设置,请报告。 + +### 仓库 - 工单 (`repository.issue`) + +- `LOCK_REASONS`: **Too heated,Off-topic,Resolved,Spam**: 合并请求或工单被锁定的原因列表。 +- `MAX_PINNED`: **3**: 每个仓库的最大可固定工单数量。设置为 0 禁用固定工单。 + +### 仓库 - 文件上传 (`repository.upload`) + +- `ENABLED`: **true**: 是否启用仓库文件上传。 +- `TEMP_PATH`: **data/tmp/uploads**: 文件上传的临时保存路径(在 Gitea 重启的时候该目录会被清空)。 +- `ALLOWED_TYPES`: **_empty_**: 以逗号分割的列表,代表支持上传的文件类型。(`.zip`), mime 类型 (`text/plain`) or 通配符类型 (`image/*`, `audio/*`, `video/*`). 为空或者 `*/*`代表允许所有类型文件。 +- `FILE_MAX_SIZE`: **50**: 每个文件的最大大小(MB)。 +- `MAX_FILES`: **5**: 每次上传的最大文件数。 + +### 仓库 - 版本发布 (`repository.release`) + +- `ALLOWED_TYPES`: **_empty_**: 允许发布的文件类型列表,用逗号分隔 。如压缩包类型(`.zip`), mime 类型 (`text/plain`) ,也支持通配符 (`image/*`, `audio/*`, `video/*`)。 空值或者 `*/*` 代表允许所有类型。 +- `DEFAULT_PAGING_NUM`: **10**: 默认的发布版本页面分页大小 +- 关于版本发布相关的附件设置,详见`附件`部分。 + +### 仓库 - Signing (`repository.signing`) + +- `SIGNING_KEY`: **default**: \[none, KEYID, default \]: 用于签名的密钥 +- `SIGNING_NAME` & `SIGNING_EMAIL`: 如果`SIGNING_KEY`提供了一个 KEYID,将使用这些作为签名者的姓名和电子邮件地址。这些应与密钥的公开姓名和电子邮件地址相匹配。 +- `INITIAL_COMMIT`: **always**: \[never, pubkey, twofa, always\]: 签名初始提交。 + - `never`: 永不签名 + - `pubkey`: 仅在用户具有公钥时签名 + - `twofa`: 仅在用户使用双因素身份验证登录时签名 + - `always`: 始终签名 + - 除了 never 和 always 之外的选项可以组合为逗号分隔的列表。 +- `DEFAULT_TRUST_MODEL`: **collaborator**: \[collaborator, committer, collaboratorcommitter\]: 用于验证提交的默认信任模型。 + - `collaborator`: 信任协作者密钥签名的签名。 + - `committer`: 信任与提交者匹配的签名(这与 GitHub 匹配,并会强制 Gitea 签名的提交具有 Gitea 作为提交者)。 + - `collaboratorcommitter`: 信任与提交者匹配的协作者密钥签名的签名。 +- `WIKI`: **never**: \[never, pubkey, twofa, always, parentsigned\]: 对 wiki 提交进行签名。 +- `CRUD_ACTIONS`: **pubkey, twofa, parentsigned**: \[never, pubkey, twofa, parentsigned, always\]: 对 CRUD 操作进行签名。 + - 与上面相同的选项,增加了: + - `parentsigned`: 仅在父提交进行了签名时才进行签名。 +- `MERGES`: **pubkey, twofa, basesigned, commitssigned**: \[never, pubkey, twofa, approved, basesigned, commitssigned, always\]: 对合并操作进行签名。 + - `approved`: 仅对已批准的合并操作进行签名,适用于受保护的分支。 + - `basesigned`: 仅在基础仓库的父提交进行了签名时才进行签名。 + - `headsigned`: 仅在头分支的头提交进行了签名时才进行签名。 + - `commitssigned`: 仅在头分支中的所有提交到合并点都进行了签名时才进行签名。 + +### 仓库 - Local (`repository.local`) + +- `LOCAL_COPY_PATH`: **tmp/local-repo**:临时本地仓库副本的路径。默认为 tmp/local-repo(内容在 Gitea 重新启动时被删除) + +### 仓库 - MIME type mapping (`repository.mimetype_mapping`) + +配置用于根据可下载文件的文件扩展名设置预期的 MIME 类型。配置以键值对的形式呈现,文件扩展名以`.`开头。 + +以下配置在下载具有`.apk`文件扩展名的文件时设置`Content-Type: application/vnd.android.package-archive`头部。 + +```ini +.apk=application/vnd.android.package-archive +``` + +## 跨域 (`cors`) + +- `ENABLED`: **false**: 启用 CORS 头部(默认禁用) +- `ALLOW_DOMAIN`: **\***: 允许请求的域名列表 +- `METHODS`: **GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS**: 允许发起的请求方式列表 +- `MAX_AGE`: **10m**: 缓存响应的最大时间 +- `ALLOW_CREDENTIALS`: **false**: 允许带有凭据的请求 +- `HEADERS`: **Content-Type,User-Agent**: 允许请求携带的头部 +- `X_FRAME_OPTIONS`: **SAMEORIGIN**: 详见 `X-Frame-Options`HTTP 头部. + +## 界面 (`ui`) + +- `EXPLORE_PAGING_NUM`: **20**: 探索页面每页显示的仓库数量。 +- `ISSUE_PAGING_NUM`: **20**: 工单页面每页显示的工单数量。 +- `MEMBERS_PAGING_NUM`: **20**: 组织成员页面每页显示的成员数量。 +- `FEED_MAX_COMMIT_NUM`: **5**: 活动流页面显示的最大提交数量。 +- `FEED_PAGING_NUM`: **20**: 活动流页面显示的最大活动数量。 +- `SITEMAP_PAGING_NUM`: **20**: 在单个子 SiteMap 中显示的项数。 +- `GRAPH_MAX_COMMIT_NUM`: **100**: 提交图中显示的最大 commit 数量。 +- `CODE_COMMENT_LINES`: **4**: 在代码评论中能够显示的最大代码行数。 +- `DEFAULT_THEME`: **gitea-auto**: 在 Gitea 安装时候设置的默认主题,自定义的主题可以通过 `{CustomPath}/public/assets/css/theme-*.css` 提供。 +- `SHOW_USER_EMAIL`: **true**: 用户的电子邮件是否应该显示在`Explore Users`页面中。 +- `THEMES`: **_empty_**: 所有可用的主题(由 `{CustomPath}/public/assets/css/theme-*.css` 提供)。允许用户选择个性化的主题, +- `MAX_DISPLAY_FILE_SIZE`: **8388608**: 能够显示文件的最大大小(默认为 8MiB)。 +- `REACTIONS`: 用户可以在问题(Issue)、Pull Request(PR)以及评论中选择的所有可选的反应。 + 这些值可以是表情符号别名(例如::smile:)或 Unicode 表情符号。 + 对于自定义的反应,在 public/assets/img/emoji/ 目录下添加一个紧密裁剪的正方形图像,文件名为 reaction_name.png。 +- `CUSTOM_EMOJIS`: **gitea, codeberg, gitlab, git, github, gogs**: 不在 utf8 标准中定义的额外表情符号。 + 默认情况下,我们支持 Gitea 表情符号(:gitea:)。要添加更多表情符号,请将它们复制到 public/assets/img/emoji/ 目录下, + 并将其添加到此配置中。 +- `DEFAULT_SHOW_FULL_NAME`: **false**: 是否在可能的情况下显示用户的全名。如果没有设置全名,则将使用用户名。 +- `SEARCH_REPO_DESCRIPTION`: **true**: 是否在探索页面上的仓库搜索中搜索描述。 +- `ONLY_SHOW_RELEVANT_REPOS`: **false** 在没有指定关键字并使用默认排序时,是否仅在探索页面上显示相关的仓库。 + 如果一个仓库是分叉或者没有元数据(没有描述、图标、主题),则被视为不相关的仓库。 + +### 界面 - 管理员 (`ui.admin`) + +- `USER_PAGING_NUM`: **50**: 单页显示的用户数量。 +- `REPO_PAGING_NUM`: **50**: 单页显示的仓库数量。 +- `NOTICE_PAGING_NUM`: **25**: 单页显示的通知数量。 +- `ORG_PAGING_NUM`: **50**: 单页显示的组织数量。 + +### 界面 - 用户 (`ui.user`) + +- `REPO_PAGING_NUM`: **15**: 单页显示的仓库数量。 +- `ORG_PAGING_NUM`: **15**: 个人信息页展示的组织数量。 + +### 界面 - 元信息 (`ui.meta`) + +- `AUTHOR`: **Gitea - Git with a cup of tea**: 主页的作者元标签。 +- `DESCRIPTION`: **Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go**: 主页的描述元标签。 +- `KEYWORDS`: **go,git,self-hosted,gitea**: 首页关键词元标签。 + +### 界面 - 通知 (`ui.notification`) + +- `MIN_TIMEOUT`: **10s**: 这些选项控制通知端点定期轮询以更新通知计数。在页面加载后,通知计数将在` MIN_TIMEOUT`之后进行检查。如果通知计数未更改,超时时间将按照`TIMEOUT_STEP`增加到`MAX_TIMEOUT`。将 `MIN_TIMEOUT`设置为 -1 以关闭该功能。 +- `MAX_TIMEOUT`: **60s**. +- `TIMEOUT_STEP`: **10s**. +- `EVENT_SOURCE_UPDATE_TIME`: **10s**: 该设置确定了查询数据库以更新通知计数的频率。如果浏览器客户端支持`EventSource`和`SharedWorker`,则优先使用`SharedWorker`而不是轮询通知端点。将其设置为 -1 可以禁用 `EventSource`。 + +### 界面 - SVG Images (`ui.svg`) + +- `ENABLE_RENDER`: **true**: 是否将 SVG 文件呈现为图像。如果禁用了 SVG 渲染,SVG 文件将显示为文本,无法作为图像嵌入到 Markdown 文件中。 + +### 界面 - CSV Files (`ui.csv`) + +- `MAX_FILE_SIZE`: **524288** (512kb): 以字节为单位允许将 CSV 文件呈现为表格的最大文件大小(将其设置为 0 表示没有限制)。 +- `MAX_ROWS`: **2500** : 最大允许的 CSV 文件行数。 (设置为 0 不限制) + +## Markdown (`markdown`) + +- `ENABLE_HARD_LINE_BREAK_IN_COMMENTS`: **true**: 在评论中将软换行符呈现为硬换行符, + 这意味着段落之间的单个换行符将导致换行, + 并且不需要在段落后添加尾随空格来强制换行。 +- `ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS`: **false**: 在文档中将软换行符呈现为硬换行符, + 这意味着段落之间的单个换行符将导致换行, + 并且不需要在段落后添加尾随空格来强制换行。 +- `CUSTOM_URL_SCHEMES`: 使用逗号分隔的列表(ftp、git、svn)来指示要在 Markdown 中呈现的附加 URL 超链接。 + 以 http 和 https 开头的 URL 始终显示。 + 如果此条目为空,则允许所有 URL 方案。 +- `FILE_EXTENSIONS`: **.md,.markdown,.mdown,.mkd,.livemd**: 应呈现/编辑为 Markdown 的文件扩展名列表。使用逗号分隔扩展名。要将没有任何扩展名的文件呈现为 Markdown,请只需放置一个逗号。 +- `ENABLE_MATH`: **true**: 启用对`\(...\)`, `\[...\]`, `$...$`和`$$...$$` 作为数学块的检测。 + +## 服务器 (`server`) + +- `APP_DATA_PATH`: **_`AppWorkPath`_/data**: 这是存储数据的默认根路径。 +- `PROTOCOL`: **http**: \[http, https, fcgi, http+unix, fcgi+unix\] +- `USE_PROXY_PROTOCOL`: **false**: 在连接中预期`PROXY`协议头。 +- `PROXY_PROTOCOL_TLS_BRIDGING`: **false**: 协议为 https 时,在`TLS`协商后预期`PROXY`协议头。 +- `PROXY_PROTOCOL_HEADER_TIMEOUT`: **5s**: 等待`PROXY`协议头的超时时间(设置为`0`表示没有超时)。 +- `PROXY_PROTOCOL_ACCEPT_UNKNOWN`: **false**:接受带有未知类型的`PROXY`协议头。 +- `DOMAIN`: **localhost**: 此服务器的域名。 +- `ROOT_URL`: **`{PROTOCOL}://{DOMAIN}:{HTTP_PORT}/`**: + 覆盖自动生成的公共 URL。 + 这个选项用于内部 URL 和外部 URL 不匹配的情况(例如 Gitea 运行在反向代理后)。 +- `PUBLIC_URL_DETECTION`: **`legacy`**: 控制如何生成公共 URL。 + 虽然它的默认值是 "legacy"(避免影响老的用户),大多数实例都应当使用 "auto" 行为,尤其是 Gitea 实例需要在容器网络中被访问的场景。 + - "legacy": 当 "X-Forwarded-Proto" 请求头存在的时候,使用 "Host" 请求头生成公共 URL,否则使用 "ROOT_URL"。 + - "auto": 总是使用 "Host" 请求头生成公共 URL,如果 "X-Forwarded-Proto" 请求头存在也会使用它。如果没有 "Host" 请求头则使用 "ROOT_URL"。 +- `STATIC_URL_PREFIX`: **_empty_**: + 覆盖此选项以从不同的 URL 请求静态资源。 + 这包括 CSS 文件、图片、JS 文件和 Web 字体。 + 头像图片是动态资源,仍由 Gitea 提供。 + 选项可以是不同的路径,例如`/static`, 也可以是另一个域,例如`https://cdn.example.com`. + 请求会变成 `{ROOT_URL}/static/assets/css/index.css` 或 `https://cdn.example.com/assets/css/index.css` + 静态文件位于 Gitea 源代码仓库的`public/`目录中。 + 您可以将`STATIC_URL_PREFIX`请求代理到 Gitea 服务器以提供静态资源,或者将手动构建的 Gitea 资源从 `$GITEA_BUILD/public`复制到静态位置,例如`/var/www/assets`。确保`$STATIC_URL_PREFIX/assets/css/index.css`指向`/var/www/assets/css/index.css`。 + +- `HTTP_ADDR`: **0.0.0.0**: HTTP 监听地址。 + - 如果 `PROTOCOL` 设置为 `fcgi`,Gitea 将在由 + `HTTP_ADDR` 和 `HTTP_PORT` 配置设置定义的 TCP 套接字上监听 FastCGI 请求。 + - 如果 `PROTOCOL` 设置为 `http+unix` 或 `fcgi+unix`,则应该是要使用的 Unix 套接字文件的名称。相对路径将相对于 _`AppWorkPath`_ 被转换为绝对路径。 +- `HTTP_PORT`: **3000**: HTTP 监听端口。 + - 如果 `PROTOCOL` 设置为 `fcgi`,Gitea 将在由 `HTTP_ADDR` 和 `HTTP_PORT` + 配置设置定义的 TCP 套接字上监听 FastCGI 请求。 +- `UNIX_SOCKET_PERMISSION`: **666**: Unix 套接字的权限。 +- `LOCAL_ROOT_URL`: **`{PROTOCOL}://{HTTP_ADDR}:{HTTP_PORT}/`**: + 用于访问网络服务的 Gitea 工作器(例如 SSH 更新)的本地(DMZ)URL。 + 在大多数情况下,您不需要更改默认值。 + 仅在您的 SSH 服务器节点与 HTTP 节点不同的情况下才修改它。对于不同的协议,默认值不同。如果 `PROTOCOL` + 是 `http+unix`,则默认值为 `http://unix/`。如果 `PROTOCOL` 是 `fcgi` 或 `fcgi+unix`,则默认值为 + `{PROTOCOL}://{HTTP_ADDR}:{HTTP_PORT}/`。如果监听在 `0.0.0.0`,则默认值为 + `{PROTOCOL}://localhost:{HTTP_PORT}/`, + 否则默认值为 `{PROTOCOL}://{HTTP_ADDR}:{HTTP_PORT}/`。 +- `LOCAL_USE_PROXY_PROTOCOL`: **`{USE_PROXY_PROTOCOL}`**: 在进行本地连接时传递 PROXY 协议头。 + 如果本地连接将经过代理,请将其设置为 false。 +- `PER_WRITE_TIMEOUT`: **30s**: 连接的任何写操作的超时时间。(将其设置为 -1 + 以禁用所有超时。) +- `PER_WRITE_PER_KB_TIMEOUT`: **10s**: 连接每写入 1 KB 的超时时间。 +- `DISABLE_SSH`: **false**: 当 SSH 不可用时禁用 SSH 功能。 +- `START_SSH_SERVER`: **false**: 启用时,使用内置的 SSH 服务器。 +- `SSH_SERVER_USE_PROXY_PROTOCOL`: **false**: 在与内置 SSH 服务器建立连接时,期望 PROXY 协议头。 +- `BUILTIN_SSH_SERVER_USER`: **`{RUN_USER}`**: 用于内置 SSH 服务器的用户名。 +- `SSH_USER`: **BUILTIN_SSH_SERVER_USER**: 在克隆 URL 中显示的 SSH 用户名。 + 如果设置为 `(DOER_USERNAME)`,将使用当前登录用户名作为克隆用的 SSH 用户名。 + 此配置项仅为自己配置 SSH 反向代理的高级用户准备, + 大多数用户应当把它留空,或者按需修改 `BUILTIN_SSH_SERVER_USER`。 +- `SSH_DOMAIN`: **`{DOMAIN}`**: 此服务器的域名,用于显示的克隆 URL。 +- `SSH_PORT`: **22**: 显示在克隆 URL 中的 SSH 端口。 +- `SSH_LISTEN_HOST`: **0.0.0.0**: 内置 SSH 服务器的监听地址。 +- `SSH_LISTEN_PORT`: **`{SSH_PORT}`**: 内置 SSH 服务器的端口。 +- `SSH_ROOT_PATH`: **~/.ssh**: SSH 目录的根路径。 +- `SSH_CREATE_AUTHORIZED_KEYS_FILE`: **true**: 当 Gitea 不使用内置 SSH 服务器时,默认情况下 Gitea 会创建一个 authorized_keys 文件。如果您打算使用 AuthorizedKeysCommand 功能,您应该关闭此选项。 +- `SSH_AUTHORIZED_KEYS_BACKUP`: **false**: 在重写所有密钥时启用 SSH 授权密钥备份,默认值为 false。 +- `SSH_TRUSTED_USER_CA_KEYS`: **_empty_**: 指定信任的证书颁发机构的公钥,用于对用户证书进行身份验证。多个密钥应以逗号分隔。例如 `ssh- ` 或 `ssh- , ssh- `。有关详细信息,请参阅 `sshd` 配置手册中的 `TrustedUserCAKeys` 部分。当为空时,不会创建文件,并且 `SSH_AUTHORIZED_PRINCIPALS_ALLOW` 默认为 `off`。 +- `SSH_TRUSTED_USER_CA_KEYS_FILENAME`: **`RUN_USER`/.ssh/gitea-trusted-user-ca-keys.pem**: Gitea 将管理的 `TrustedUserCaKeys` 文件的绝对路径。如果您正在运行自己的 SSH 服务器,并且想要使用 Gitea 管理的文件,您还需要修改您的 `sshd_config` 来指向此文件。官方的 Docker 映像将自动工作,无需进一步配置。 +- `SSH_AUTHORIZED_PRINCIPALS_ALLOW`: **off** 或 **username, email**: \[off, username, email, anything\]:指定允许用户用作 principal 的值。当设置为 `anything` 时,对 principal 字符串不执行任何检查。当设置为 `off` 时,不允许设置授权的 principal。 +- `SSH_CREATE_AUTHORIZED_PRINCIPALS_FILE`: **false/true**: 当 Gitea 不使用内置 SSH 服务器且 `SSH_AUTHORIZED_PRINCIPALS_ALLOW` 不为 `off` 时,默认情况下 Gitea 会创建一个 authorized_principals 文件。 +- `SSH_AUTHORIZED_PRINCIPALS_BACKUP`: **false/true**: 在重写所有密钥时启用 SSH 授权 principal 备份,默认值为 true(如果 `SSH_AUTHORIZED_PRINCIPALS_ALLOW` 不为 `off`)。 +- `SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE`: **`{{.AppPath}} --config={{.CustomConf}} serv key-{{.Key.ID}}`**: 设置用于传递授权密钥的命令模板。可能的密钥是:AppPath、AppWorkPath、CustomConf、CustomPath、Key,其中 Key 是 `models/asymkey.PublicKey`,其他是 shellquoted 字符串。 +- `SSH_SERVER_CIPHERS`: **chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com**: 对于内置的 SSH 服务器,选择支持的 SSH 连接的加密方法,对于系统 SSH,此设置无效。 +- `SSH_SERVER_KEY_EXCHANGES`: **curve25519-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1**: 对于内置 SSH 服务器,选择支持的 SSH 连接的密钥交换算法,对于系统 SSH,此设置无效。 +- `SSH_SERVER_MACS`: **hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1**: 对于内置 SSH 服务器,选择支持的 SSH 连接的 MAC 算法,对于系统 SSH,此设置无效。 +- `SSH_SERVER_HOST_KEYS`: **ssh/gitea.rsa, ssh/gogs.rsa**: 对于内置 SSH 服务器,选择要提供为主机密钥的密钥对。私钥应在 `SSH_SERVER_HOST_KEY` 中,公钥在 `SSH_SERVER_HOST_KEY.pub` 中。相对路径会相对于 `APP_DATA_PATH` 转为绝对路径。如果不存在密钥,将为您创建一个 4096 位的 RSA 密钥。 +- `SSH_KEY_TEST_PATH`: **/tmp**: 在使用 `ssh-keygen` 测试公共 SSH 密钥时要在其中创建临时文件的目录,默认为系统临时目录。 +- `SSH_KEYGEN_PATH`: **_empty_**: 使用 `ssh-keygen` 解析公共 SSH 密钥。该值将传递给 shell。默认情况下,Gitea 会自行进行解析。 +- `SSH_EXPOSE_ANONYMOUS`: **false**: 启用将 SSH 克隆 URL 暴露给匿名访问者,默认为 false。 +- `SSH_PER_WRITE_TIMEOUT`: **30s**: 对 SSH 连接的任何写入设置超时。(将其设置为 -1 可以禁用所有超时。) +- `SSH_PER_WRITE_PER_KB_TIMEOUT`: **10s**: 对写入 SSH 连接的每 KB 设置超时。 +- `MINIMUM_KEY_SIZE_CHECK`: **true**: 指示是否检查最小密钥大小与相应类型。 +- `OFFLINE_MODE`: **true**: 禁用 CDN 用于静态文件和 Gravatar 用于个人资料图片。 +- `CERT_FILE`: **https/cert.pem**: 用于 HTTPS 的证书文件路径。在链接时,服务器证书必须首先出现,然后是中间 CA 证书(如果有)。如果 `ENABLE_ACME=true`,则此设置会被忽略。路径相对于 `CUSTOM_PATH`。 +- `KEY_FILE`: **https/key.pem**: 用于 HTTPS 的密钥文件路径。如果 `ENABLE_ACME=true`,则此设置会被忽略。路径相对于 `CUSTOM_PATH`。 +- `STATIC_ROOT_PATH`: **_`StaticRootPath`_**: 模板和静态文件路径的上一级。 +- `APP_DATA_PATH`: **data**(在 Docker 上为 **/data/gitea**):应用程序数据的默认路径。相对路径会相对于 _`AppWorkPath`_ 转为绝对路径。 +- `STATIC_CACHE_TIME`: **6h**: 对 `custom/`、`public/` 和所有上传的头像的静态资源的 Web 浏览器缓存时间。请注意,在 `RUN_MODE` 为 "dev" 时,此缓存会被禁用。 +- `ENABLE_GZIP`: **false**: 为运行时生成的内容启用 gzip 压缩,静态资源除外。 +- `ENABLE_PPROF`: **false**: 应用程序分析(内存和 CPU)。对于 "web" 命令,它会在 `localhost:6060` 上监听。对于 "serv" 命令,它会将数据转储到磁盘上的 `PPROF_DATA_PATH` 中,文件名为 `(cpuprofile|memprofile)__`。 +- `PPROF_DATA_PATH`: **_`AppWorkPath`_/data/tmp/pprof**: `PPROF_DATA_PATH`,当您将 Gitea 作为服务启动时,请使用绝对路径。 +- `LANDING_PAGE`: **home**: 未经身份验证用户的登录页面 \[home, explore, organizations, login, **custom**]。其中 custom 可以是任何 URL,例如 "/org/repo" 或甚至是 `https://anotherwebsite.com`。 +- `LFS_START_SERVER`: **false**: 启用 Git LFS 支持。 +- `LFS_CONTENT_PATH`: **`{APP_DATA_PATH}/lfs`**: 默认的 LFS 内容路径(如果它在本地存储中)。**已弃用**,请使用 `[lfs]` 中的设置。 +- `LFS_JWT_SECRET`: **_empty_**: LFS 身份验证密钥,将其更改为唯一的字符串。你可以通过 Gitea 子命令来生成此字符串。转到 [Command Line](administration/command-line.md#generate)。 +- `LFS_JWT_SECRET_URI`: **_empty_**: 代替在配置中定义 LFS_JWT_SECRET,可以使用此配置选项为 Gitea 提供包含密钥的文件的路径(示例值:`file:/etc/gitea/lfs_jwt_secret`)。 +- `LFS_HTTP_AUTH_EXPIRY`: **24h**: LFS 身份验证的有效期,以 time.Duration 表示,超过此期限的推送可能会失败。 +- `LFS_MAX_FILE_SIZE`: **0**: 允许的最大 LFS 文件大小(以字节为单位,设置为 0 为无限制)。 +- `LFS_LOCKS_PAGING_NUM`: **50**: 每页返回的最大 LFS 锁定数。 +- `REDIRECT_OTHER_PORT`: **false**: 如果为 true 并且 `PROTOCOL` 为 https,则允许将 http 请求重定向到 Gitea 监听的 https 端口的 `PORT_TO_REDIRECT`。 +- `REDIRECTOR_USE_PROXY_PROTOCOL`: **`{USE_PROXY_PROTOCOL}`**: 在连接到 https 重定向器时,需要 PROXY 协议头。 +- `PORT_TO_REDIRECT`: **80**: http 重定向服务监听的端口。当 `REDIRECT_OTHER_PORT` 为 true 时使用。 +- `SSL_MIN_VERSION`: **TLSv1.2**: 设置最低支持的 SSL 版本。 +- `SSL_MAX_VERSION`: **_empty_**: 设置最大支持的 SSL 版本。 +- `SSL_CURVE_PREFERENCES`: **X25519,P256**: 设置首选的曲线。 +- `SSL_CIPHER_SUITES`: **ecdhe_ecdsa_with_aes_256_gcm_sha384,ecdhe_rsa_with_aes_256_gcm_sha384,ecdhe_ecdsa_with_aes_128_gcm_sha256,ecdhe_rsa_with_aes_128_gcm_sha256,ecdhe_ecdsa_with_chacha20_poly1305,ecdhe_rsa_with_chacha20_poly1305**: 设置首选的密码套件。 + - 如果没有对 AES 套件的硬件支持,默认情况下,ChaCha 套件将优先于 AES 套件。 + - 根据 Go 1.18 的支持的套件有: + - TLS 1.0 - 1.2 套件 + - "rsa_with_rc4_128_sha" + - "rsa_with_3des_ede_cbc_sha" + - "rsa_with_aes_128_cbc_sha" + - "rsa_with_aes_256_cbc_sha" + - "rsa_with_aes_128_cbc_sha256" + - "rsa_with_aes_128_gcm_sha256" + - "rsa_with_aes_256_gcm_sha384" + - "ecdhe_ecdsa_with_rc4_128_sha" + - "ecdhe_ecdsa_with_aes_128_cbc_sha" + - "ecdhe_ecdsa_with_aes_256_cbc_sha" + - "ecdhe_rsa_with_rc4_128_sha" + - "ecdhe_rsa_with_3des_ede_cbc_sha" + - "ecdhe_rsa_with_aes_128_cbc_sha" + - "ecdhe_rsa_with_aes_256_cbc_sha" + - "ecdhe_ecdsa_with_aes_128_cbc_sha256" + - "ecdhe_rsa_with_aes_128_cbc_sha256" + - "ecdhe_rsa_with_aes_128_gcm_sha256" + - "ecdhe_ecdsa_with_aes_128_gcm_sha256" + - "ecdhe_rsa_with_aes_256_gcm_sha384" + - "ecdhe_ecdsa_with_aes_256_gcm_sha384" + - "ecdhe_rsa_with_chacha20_poly1305_sha256" + - "ecdhe_ecdsa_with_chacha20_poly1305_sha256" + - TLS 1.3 套件 + - "aes_128_gcm_sha256" + - "aes_256_gcm_sha384" + - "chacha20_poly1305_sha256" + - 别名 + - "ecdhe_rsa_with_chacha20_poly1305" 是 "ecdhe_rsa_with_chacha20_poly1305_sha256" 的别名 + - "ecdhe_ecdsa_with_chacha20_poly1305" 是 "ecdhe_ecdsa_with_chacha20_poly1305_sha256" 的别名 +- `ENABLE_ACME`: **false**: 通过 ACME 能力的证书颁发机构(CA)服务器(默认为 Let's Encrypt)启用自动证书管理的标志。如果启用,将忽略 `CERT_FILE` 和 `KEY_FILE`,并且 CA 必须将 `DOMAIN` 解析为此 Gitea 服务器。确保设置了 DNS 记录,并且端口 `80` 或端口 `443` 可以被 CA 服务器访问(默认情况下是公共互联网),并重定向到相应的端口 `PORT_TO_REDIRECT` 或 `HTTP_PORT`。 +- `ACME_URL`: **_empty_**: CA 的 ACME 目录 URL,例如自托管的 [smallstep CA 服务器](https://github.com/smallstep/certificates),它可以是 `https://ca.example.com/acme/acme/directory`。如果留空,默认使用 Let's Encrypt 的生产 CA(还要检查 `LETSENCRYPT_ACCEPTTOS`)。 +- `ACME_ACCEPTTOS`: **false**: 这是一个明确的检查,您是否接受 ACME 提供者的服务条款。默认为 Let's Encrypt 的 [服务条款](https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf)。 +- `ACME_DIRECTORY`: **https**: 证书管理器用于缓存证书和私钥等信息的目录。 +- `ACME_EMAIL`: **_empty_**: 用于 ACME 注册的电子邮件。通常用于通知有关已颁发的证书的问题。 +- `ACME_CA_ROOT`: **_empty_**: CA 的根证书。如果留空,默认使用系统的信任链。 +- `ALLOW_GRACEFUL_RESTARTS`: `true`: 在 SIGHUP 时执行优雅重启。 +- `GRACEFUL_HAMMER_TIME`: **60s**: 在重新启动后,父进程将停止接受新连接,并允许请求在停止之前完成。如果耗时超过此时间,则会强制关闭关闭。 +- `STARTUP_TIMEOUT`: **0**: 如果启动超过提供的时间,将关闭服务器。在 Windows 上设置这将向 SVC 主机发送一个等待提示,告诉 SVC 主机启动可能需要一些时间。请注意,启动由监听器(HTTP/HTTPS/SSH)的打开来确定。索引程序可能需要更长时间启动,可能具有自己的超时时间。 + +## 数据库 (`database`) + +- `DB_TYPE`: **mysql**: 数据库类型 \[mysql, postgres, mssql, sqlite3\]。 +- `HOST`: **127.0.0.1:3306**: 数据库主机地址和端口或 unix 套接字的绝对路径 \[mysql, postgres\](例如:/var/run/mysqld/mysqld.sock)。 +- `NAME`: **gitea**: 数据库名称。 +- `USER`: **root**: 数据库用户名。 +- `PASSWD`: **_empty_**: 数据库密码。如果密码包含特殊字符,请使用 \`your password\` 或 """your password"""。 +- `SCHEMA`: **_empty_**: 对于 PostgreSQL,如果与 "public" 不同的模式。模式必须事先存在,用户必须对其具有创建特权,并且用户搜索路径必须设置为首先查找模式(例如 `ALTER USER user SET SEARCH_PATH = schema_name,"$user",public;`)。 +- `SSL_MODE`: **disable**: MySQL 或 PostgreSQL 数据库是否启用 SSL 模式,仅适用于 MySQL 和 PostgreSQL。 + - MySQL 的有效值: + - `true`:启用 TLS,并针对数据库服务器证书根证书进行验证。选择此选项时,请确保用于验证数据库服务器证书的根证书(例如 CA 证书)位于数据库服务器和 Gitea 服务器的系统证书存储中。有关如何将 CA 证书添加到证书存储的说明,请参阅系统文档。 + - `false`:禁用 TLS。 + - `disable`:`false` 的别名,与 PostgreSQL 兼容。 + - `skip-verify`:启用 TLS,但不进行数据库服务器证书验证。如果数据库服务器上有自签名或无效证书,请使用此选项。 + - `prefer`:启用 TLS,并回退到非 TLS 连接。 + - PostgreSQL 的有效值: + - `disable`:禁用 TLS。 + - `require`:启用 TLS,但不进行任何验证。 + - `verify-ca`:启用 TLS,并对数据库服务器证书进行根证书验证。 + - `verify-full`:启用 TLS,并验证数据库服务器名称是否与给定的证书的 "Common Name" 或 "Subject Alternative Name" 字段匹配。 +- `SQLITE_TIMEOUT`:**500**: 仅适用于 SQLite3 的查询超时。 +- `SQLITE_JOURNAL_MODE`:**""**: 更改 SQlite3 的日志模式。可以用于在高负载导致写入拥塞时启用 [WAL 模式](https://www.sqlite.org/wal.html)。有关可能的值,请参阅 [SQlite3 文档](https://www.sqlite.org/pragma.html#pragma_journal_mode)。默认为数据库文件的默认值,通常为 DELETE。 +- `ITERATE_BUFFER_SIZE`:**50**: 用于迭代的内部缓冲区大小。 +- `PATH`:**data/gitea.db**: 仅适用于 SQLite3 的数据库文件路径。 +- `LOG_SQL`:**false**: 记录已执行的 SQL。 +- `DB_RETRIES`:**10**: 允许多少次 ORM 初始化 / DB 连接尝试。 +- `DB_RETRY_BACKOFF`:**3s**: 如果发生故障,等待另一个 ORM 初始化 / DB 连接尝试的 time.Duration。 +- `MAX_OPEN_CONNS`:**0**: 数据库最大打开连接数 - 默认为 0,表示没有限制。 +- `MAX_IDLE_CONNS`:**2**: 连接池上的最大空闲数据库连接数,默认为 2 - 这将限制为 `MAX_OPEN_CONNS`。 +- `CONN_MAX_LIFETIME`:**0 或 3s**: 设置 DB 连接可以重用的最长时间 - 默认为 0,表示没有限制(除了 MySQL,其中为 3s - 请参见 #6804 和 #7071)。 +- `AUTO_MIGRATION`:**true**: 是否自动执行数据库模型迁移。 + +请参见 #8540 和 #8273 以获取有关 `MAX_OPEN_CONNS`、`MAX_IDLE_CONNS` 和 `CONN_MAX_LIFETIME` 的适当值及其与端口耗尽的关系的进一步讨论。 + +## 索引 (`indexer`) + +- `ISSUE_INDEXER_TYPE`: **bleve**: 工单索引类型,当前支持:`bleve`、`db`、`elasticsearch` 或 `meilisearch`。 +- `ISSUE_INDEXER_CONN_STR`:\*\*\*\* : 工单索引连接字符串,仅适用于 elasticsearch 和 meilisearch(例如:`http://elastic:password@localhost:9200`)或者(例如:`http://:apikey@localhost:7700`)。 +- `ISSUE_INDEXER_NAME`:**gitea_issues**: 工单索引器名称,在 ISSUE_INDEXER_TYPE 为 elasticsearch 或 meilisearch 时可用。 +- `ISSUE_INDEXER_PATH`:**indexers/issues.bleve**: 用于工单搜索的索引文件;在 ISSUE*INDEXER_TYPE 为 bleve 和 elasticsearch 时可用。相对路径将相对于 *`AppWorkPath`\_ 进行绝对路径化。 + +- `REPO_INDEXER_ENABLED`:**false**: 启用代码搜索(占用大量磁盘空间,约为存储库大小的 6 倍)。 +- `REPO_INDEXER_REPO_TYPES`:**sources,forks,mirrors,templates**: 存储库索引器单元。要索引的项目可以是 `sources`、`forks`、`mirrors`、`templates` 或它们的任何组合,用逗号分隔。如果为空,则默认为仅 `sources`,如果要完全禁用,请参见 `REPO_INDEXER_ENABLED`。 +- `REPO_INDEXER_TYPE`:**bleve**: 代码搜索引擎类型,可以为 `bleve` 或者 `elasticsearch`。 +- `REPO_INDEXER_PATH`:**indexers/repos.bleve**: 用于代码搜索的索引文件。 +- `REPO_INDEXER_CONN_STR`:\*\*\*\*: 代码索引器连接字符串,在 `REPO_INDEXER_TYPE` 为 elasticsearch 时可用。例如:`http://elastic:password@localhost:9200` +- `REPO_INDEXER_NAME`:**gitea_codes**: 代码索引器名称,在 `REPO_INDEXER_TYPE` 为 elasticsearch 时可用。 + +- `REPO_INDEXER_INCLUDE`:**empty**: 逗号分隔的 glob 模式列表(参见 [https://github.com/gobwas/glob](https://github.com/gobwas/glob))以用于**包括**在索引中。使用 `**.txt` 匹配任何具有 .txt 扩展名的文件。空列表表示包括所有文件。 +- `REPO_INDEXER_EXCLUDE`:**empty**: 逗号分隔的 glob 模式列表(参见 [https://github.com/gobwas/glob](https://github.com/gobwas/glob))以用于**排除**在索引中。即使在 `REPO_INDEXER_INCLUDE` 中匹配,也不会索引与此列表匹配的文件。 +- `REPO_INDEXER_EXCLUDE_VENDORED`:**true**: 从索引中排除 vendored 文件。 +- `MAX_FILE_SIZE`:**1048576**: 要索引的文件的最大字节数。 +- `STARTUP_TIMEOUT`:**30s**: 如果索引器启动时间超过此超时时间 - 则失败。(此超时时间将添加到上面的锤子时间中,用于子进程 - 因为 bleve 不会在上一个父进程关闭之前启动)。设置为 -1 表示永不超时。 + +## 队列 (`queue` and `queue.*`) + +[queue] 配置在 `[queue.*]` 下为各个队列设置默认值,并允许为各个队列设置单独的配置覆盖。(不过请参见下文。) + +- `TYPE`:**level**: 通用队列类型,当前支持:`level`(在内部使用 LevelDB)、`channel`、`redis`、`dummy`。无效的类型将视为 `level`。 +- `DATADIR`:**queues/common**: 用于存储 level 队列的基本 DataDir。单独的队列的 `DATADIR` 可以在 `queue.name` 部分进行设置。相对路径将根据 `{APP_DATA_PATH}` 变为绝对路径。 +- `LENGTH`:**100000**: 通道队列阻塞之前的最大队列大小 +- `BATCH_LENGTH`:**20**: 在传递给处理程序之前批处理数据 +- `CONN_STR`:**redis://127.0.0.1:6379/0**: redis 队列类型的连接字符串。对于 `redis-cluster`,使用 `redis+cluster://127.0.0.1:6379/0`。可以使用查询参数来设置选项。类似地,LevelDB 选项也可以使用:**leveldb://relative/path?option=value** 或 **leveldb:///absolute/path?option=value** 进行设置,并将覆盖 `DATADIR`。 +- `QUEUE_NAME`:**\_queue**: 默认的 redis 和磁盘队列名称的后缀。单独的队列将默认为 **`name`**`QUEUE_NAME`,但可以在特定的 `queue.name` 部分中进行覆盖。 +- `SET_NAME`:**\_unique**: 将添加到默认的 redis 和磁盘队列 `set` 名称中以用于唯一队列的后缀。单独的队列将默认为 **`name`**`QUEUE_NAME`_`SET_NAME`_,但可以在特定的 `queue.name` 部分中进行覆盖。 +- `MAX_WORKERS`:**(dynamic)**: 队列的最大工作协程数。默认值为 "CpuNum/2",限制在 1 到 10 之间。 + +Gitea 创建以下非唯一队列: + +- `code_indexer` +- `issue_indexer` +- `notification-service` +- `task` +- `mail` +- `push_update` + +以及以下唯一队列: + +- `repo_stats_update` +- `repo-archive` +- `mirror` +- `pr_patch_checker` + +## Admin (`admin`) + +- `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: 用户电子邮件通知的默认配置(用户可配置)。选项:enabled、onmention、disabled +- `DISABLE_REGULAR_ORG_CREATION`: **false**: 禁止普通(非管理员)用户创建组织。 +- `USER_DISABLED_FEATURES`:**_empty_** 禁用的用户特性,当前允许为空或者 `deletion`,`manage_ssh_keys`, `manage_gpg_keys` 未来可以增加更多设置。 + - `deletion`: 用户不能通过界面或者 API 删除他自己。 + - `manage_ssh_keys`: 用户不能通过界面或者 API 配置 SSH Keys。 + - `manage_gpg_keys`: 用户不能配置 GPG 密钥。 + +## 安全性 (`security`) + +- `INSTALL_LOCK`: **false**: 控制是否能够访问安装向导页面,设置为 `true` 则禁止访问安装向导页面。 +- `SECRET_KEY`: **\<每次安装时随机生成\>**: 全局服务器安全密钥。这个密钥非常重要,如果丢失将无法解密加密的数据(例如 2FA)。 +- `SECRET_KEY_URI`: **_empty_**: 与定义 `SECRET_KEY` 不同,此选项可用于使用存储在文件中的密钥(示例值:`file:/etc/gitea/secret_key`)。它不应该像 `SECRET_KEY` 一样容易丢失。 +- `LOGIN_REMEMBER_DAYS`: **31**: 在要求重新登录之前,记住用户的登录状态多长时间(以天为单位)。 +- `COOKIE_REMEMBER_NAME`: **gitea_incredible**: 保存自动登录信息的 Cookie 名称。 +- `REVERSE_PROXY_AUTHENTICATION_USER`: **X-WEBAUTH-USER**: 反向代理认证的 HTTP 头部名称,用于提供用户信息。 +- `REVERSE_PROXY_AUTHENTICATION_EMAIL`: **X-WEBAUTH-EMAIL**: 反向代理认证的 HTTP 头部名称,用于提供邮箱信息。 +- `REVERSE_PROXY_AUTHENTICATION_FULL_NAME`: **X-WEBAUTH-FULLNAME**: 反向代理认证的 HTTP 头部名称,用于提供全名信息。 +- `REVERSE_PROXY_LIMIT`: **1**: 解释 X-Forwarded-For 标头或 X-Real-IP 标头,并将其设置为请求的远程 IP。 + 可信代理计数。设置为零以不使用这些标头。 +- `REVERSE_PROXY_TRUSTED_PROXIES`: **127.0.0.0/8,::1/128**: 逗号分隔的受信任代理服务器的 IP 地址和网络列表。使用 `*` 来信任全部。 +- `DISABLE_GIT_HOOKS`: **true**: 设置为 `false` 以允许具有 Git 钩子权限的用户创建自定义 Git 钩子。 + 警告:自定义 Git 钩子可用于在主机操作系统上执行任意代码。这允许用户访问和修改此配置文件和 Gitea 数据库,并中断 Gitea 服务。 + 通过修改 Gitea 数据库,用户可以获得 Gitea 管理员权限。 + 它还使他们可以访问正在运行 Gitea 实例的操作系统上用户可用的其他资源,并以 Gitea 操作系统用户的名义执行任意操作。 + 这可能对您的网站或操作系统造成危害。 + 在必要之前,请在更改现有 git 存储库中的钩子之前进行调整。 +- `DISABLE_WEBHOOKS`: **false**: 设置为 `true` 以禁用 Webhooks 功能。 +- `ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET`: **true**: 设置为 `false` 以允许本地用户在未设置 Gitea 环境的情况下推送到 Gitea 存储库。不建议这样做,如果您希望本地用户推送到 Gitea 存储库,应该适当地设置环境。 +- `IMPORT_LOCAL_PATHS`: **false**: 设置为 `false` 以防止所有用户(包括管理员)从服务器上导入本地路径。 +- `INTERNAL_TOKEN`: **\<每次安装时随机生成,如果未设置 URI\>**: 用于验证 Gitea 二进制文件内部通信的密钥。 +- `INTERNAL_TOKEN_URI`: **_empty_**: 与在配置中定义 `INTERNAL_TOKEN` 不同,此配置选项可用于将包含内部令牌的文件的路径提供给 Gitea(示例值:`file:/etc/gitea/internal_token`)。 +- `PASSWORD_HASH_ALGO`: **pbkdf2**: 要使用的哈希算法 \[argon2、pbkdf2、pbkdf2_v1、pbkdf2_hi、scrypt、bcrypt\],argon2 和 scrypt 将消耗大量内存。 + - 注意:`pbkdf2` 哈希的默认参数已更改 - 先前的设置可作为 `pbkdf2_v1` 使用,但不建议使用。 + - 可以通过在算法后使用 `$` 进行调整: + - `argon2$