docs: update zh-tw (#265)

Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ifurther <55025025+ifurther@users.noreply.github.com>
Co-committed-by: ifurther <55025025+ifurther@users.noreply.github.com>
This commit is contained in:
ifurther
2025-09-03 21:00:35 +00:00
committed by techknowlogick
parent 908a27589d
commit cb462089e9
88 changed files with 3545 additions and 3423 deletions
@@ -6,208 +6,208 @@ aliases:
- /zh-tw/authentication
---
# 认证
# 認證
## 轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)
## 轻量级目錄访问协议(Lightweight Directory Access Protocol,LDAP)
通过 BindDN 的 LDAP 和简单认证方式 LDAP 共享以下字段:
通過 BindDN 的 LDAP 和简單認證方式 LDAP 共享以下字段:
- 认证名称 **(必选)**
- 認證名稱 **(必選)**
- 分配给新授权方法的名称。
- 分配给新授权方法的名稱。
- 主机名 **(必选)**
- 主机名 **(必選)**
- LDAP 服务的主机地址.
- 例如:`mydomain.com`
- 端口号 **(必选)**
- 端口号 **(必選)**
- LDAP 服务的端口号.
- 例如: LDAP `389`/ LDAPs `636`
- 安全协议 (可选)
- 安全协议 (可選)
- 连接 LDAP 服务器时是否使用 TLS 协议。
- 管理员过滤规则 (可选)
- 管理员過滤規則 (可選)
- 一个 LDAP 过滤器,用于指定哪些用户应该被赋予管理员特权。如果用户帐户符合过滤器条件,则该用户将被授予管理员权限。
- 一个 LDAP 過滤器,用于指定哪些使用者應該被赋予管理员特权。如果使用者帳戶符合過滤器条件,则該使用者将被授予管理员权限。
- 示例:`(objectClass=adminAccount)`
- 适用于 Microsoft Active Directory(AD)的示例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
- 用户名属性(可选)
- 使用者名属性(可選)
- 用户 LDAP 记录中包含用户名称的属性。在第一次成功登录后,将使用指定的属性值作为新的 Gitea 账户用户名。若留空,则使用登录表单上提供的用户名。
- 当提供的登录名与多个属性匹配时,这一选项非常有用,但是只有一个特定属性应该用于 Gitea 账户名称,请参阅"用户过滤器"。
- 使用者 LDAP 记录中包含使用者名稱的属性。在第一次成功登入后,将使用指定的属性值作為新的 Gitea 账户使用者名。若留空,则使用登入表單上提供的使用者名。
- 当提供的登入名与多个属性匹配时,这一選项非常有用,但是只有一个特定属性應該用于 Gitea 账户名稱,請参阅"使用者過滤器"。
- 示例:uid
- 适用于 Microsoft Active Directory(AD)的示例:`sAMAccountName`
- 名字属性(可选)
- 名字属性(可選)
- 用户 LDAP 记录中包含用户名字的属性。将用于填充他们的账户信息。
- 使用者 LDAP 记录中包含使用者名字的属性。将用于填充他们的账户信息。
- 示例:givenName
- 姓氏属性(可选)
- 姓氏属性(可選)
- 用户 LDAP 记录中包含用户姓氏的属性。将用于填充他们的账户信息。
- 使用者 LDAP 记录中包含使用者姓氏的属性。将用于填充他们的账户信息。
- 示例:`sn`
- 电子邮件属性 **(必选)**
- 用户 LDAP 记录中包含用户电子邮件地址的属性。将用于填充他们的账户信息。
- 电子邮件属性 **(必選)**
- 使用者 LDAP 记录中包含使用者电子邮件地址的属性。将用于填充他们的账户信息。
- 示例:`mail`
### LDAP(via BindDN)
需要额外设置以下字段:
- 绑定 DN (可选)
- 绑定 DN (可選)
- 搜索用户时绑定到 LDAP 服务器的 DN。这可以留空以执行匿名搜索。
- 搜索使用者时绑定到 LDAP 服务器的 DN。这可以留空以執行匿名搜索。
- 示例: `cn=Search,dc=mydomain,dc=com`
- 绑定密码 (可选)
- 绑定密碼 (可選)
- 上述指定的 Bind DN(绑定区别名)的密码,如果有的话。注意:该密码在服务器上使用 SECRET_KEY 进行加密存储。仍然建议确保 Bind DN 具有尽可能少的权限。
- 上述指定的 Bind DN(绑定区别名)的密碼,如果有的话。注意:該密碼在服务器上使用 SECRET_KEY 進行加密存儲。仍然建议确保 Bind DN 具有尽可能少的权限。
- 用户搜索基准 **(必选)**
- 使用者搜索基准 **(必選)**
- 这是用于搜索用户帐户的 LDAP 基础路径.
- 这是用于搜索使用者帳戶的 LDAP 基础路径.
- 示例: `ou=Users,dc=mydomain,dc=com`
- 用户过滤规则 **(必选)**
- LDAP 过滤器声明如何查找试图进行身份验证的用户记录
`%[1]s`匹配参数将替换为登录表单中给出的登录名
- 使用者過滤規則 **(必選)**
- 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`,例如在将提供的登录名与多个属性(如用户标识符、电子邮件甚至电话号码)进行匹配时。
- 如需多次替换,應使用 `%[1]s`,例如在将提供的登入名与多个属性(如使用者标识符、电子邮件甚至电话号码)進行匹配时。
- 示例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
- 启用用户同步
- 这个选项启用了一个周期性任务,用于将 Gitea 用户与 LDAP 服务器进行同步。默认的同步周期是每 24 小时,
但您可以在 app.ini 文件中进行更改。
有关此部分的详细说明,请参阅[sample
- 启用使用者同步
- 这个選项启用了一个周期性任务,用于将 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 目录时需要小心。
设置将限制哪些使用者可以使用 Gitea 以及哪些使用者将被同步。
在初始运行任务时,将根据给定的设置建立所有与 LDAP 匹配的使用者,因此在使用大型企业 LDAP 目錄时需要小心。
### LDAP(simple auth)
需要额外设置以下字段:
- 用户 DN **(必选)**
- 使用者 DN **(必選)**
- 用作用户 DN 的模板。匹配参数 `%s` 将替换为登录表单中的登录名。
- 用作使用者 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`匹配参数将替换为登录表单中给出的登录名。
- 使用者過滤規則 **(必選)**
- LDAP 過滤器声明何时允许使用者登入
`%[1]s`匹配參數将替换為登入表單中给出的登入名。
- 示例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
- 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
### 使用 LDAP 验证分组成员
### 使用 LDAP 驗證分组成员
使用以下字段:
- 群组搜索基础 DN(可选)
- 群组搜索基础 DN(可選)
- 组使用的 LDAP DN。
- 示例: `ou=group,dc=mydomain,dc=com`
- 组名过滤器 (可选)
- 组名過滤器 (可選)
- LDAP 过滤器,声明如何在上述 DN 中查找有效组。
- LDAP 過滤器,声明如何在上述 DN 中查找有效组。
- 示例: `(|(cn=gitea_users)(cn=admins))`
- 组中的用户属性 (可选)
- 组中的使用者属性 (可選)
- 组中列出了哪个用户的 LDAP 属性。
- 组中列出了哪个使用者的 LDAP 属性。
- 示例: `uid`
- 用户组属性 (可选)
- 哪个组的 LDAP 属性包含一个高于用户属性名称的数组。
- 使用者组属性 (可選)
- 哪个组的 LDAP 属性包含一个高于使用者属性名稱的数组。
- 示例: `memberUid`
## 可插拔式认证模块(Pluggable Authentication Module,PAM)
## 可插拔式認證模組(Pluggable Authentication Module,PAM)
这个过程启用了 PAM(Pluggable Authentication Modules)认证。用户仍然可以通过用户管理手动添加到系统中。
PAM 提供了一种机制,通过对用户进行 PAM 认证来自动将其添加到当前数据库中。为了与普通的 Linux 密码一起使用,
运行 Gitea 的用户还必须具有对`/etc/shadow`的读取权限,以便在使用公钥登录时检查账户的有效性。
这个過程启用了 PAM(Pluggable Authentication Modules)認證。使用者仍然可以通過使用者管理手动添加到系统中。
PAM 提供了一种機制,通過对使用者進行 PAM 認證来自动将其添加到当前数据库中。為了与普通的 Linux 密碼一起使用,
运行 Gitea 的使用者還必須具有对`/etc/shadow`的读取权限,以便在使用公钥登入时检查账户的有效性。
**注意**:如果用户已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕过登录检查系统。因此,
如果您希望禁用使用 PAM 进行身份验证的用户,应该在 Gitea 中手动禁用该账户,使用内置的用户管理功能。
**注意**:如果使用者已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕過登入检查系统。因此,
如果您希望禁用使用 PAM 進行身份驗證的使用者,應該在 Gitea 中手动禁用該账户,使用内置的使用者管理功能。
1. 配置和安装准备.
- 建议您创建一个管理用户.
1. 配置和安裝准备.
- 建议您建立一个管理使用者.
- 建议取消自动注册.
1. 一旦数据库已初始化完成,使用新创建的管理员账户登录.
1. 导航至用户设置(右上角的图标),然后选择
`Site Administration` -> `Authentication Sources`, 并选择
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]。
- 認證類型:`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 开发头文件。
**Note**: PAM 支持通過[build-time flags](installation/from-source.md#build)添加,
而官方提供的二進制文件通常不会默认启用此功能。PAM 需要确保系统上有必要的 libpam 动态库,並且编译器可以访问必要的 PAM 开发头文件。
[^1]:
例如,在 Debian "Bullseye"上使用标准 Linux 登录,可以使用`common-session-noninteractive`。这个值对于其他版本的 Debian,
包括 Ubuntu 和 Mint,可能也是有效的,请查阅您所使用发行版的文档以确认。
例如,在 Debian "Bullseye"上使用标准 Linux 登入,可以使用`common-session-noninteractive`。这个值對於其他版本的 Debian,
包括 Ubuntu 和 Mint,可能也是有效的,請查阅您所使用发行版的文檔以确认。
[^2]: **PAM 的必选项** 请注意:在上面的示例中,用户将作为`gituser`而不是`gituser@mail.com`登录到 Gitea 的 Web 界面。
[^2]: **PAM 的必選项** 請注意:在上面的示例中,使用者将作為`gituser`而不是`gituser@mail.com`登入到 Gitea 的 Web 界面。
## 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)
## 简單邮件传输协议(Simple Mail Transfer Protocol,SMTP)
此选项允许 Gitea 以 Gitea 用户身份登录 SMTP 主机。请设置以下字段:
此選项允许 Gitea 以 Gitea 使用者身份登入 SMTP 主机。請设置以下字段:
- 身份验证名称 **(必选)**
- 身份驗證名稱 **(必選)**
- 分配给新授权方法的名称
- 分配给新授权方法的名稱
- SMTP 验证类型 **(必选)**
- SMTP 驗證類型 **(必選)**
- 用于连接 SMTP 主机的验证类型,plain 或 login
- 用于连接 SMTP 主机的驗證類型,plain 或 login
- 主机名 **(必选)**
- 主机名 **(必選)**
- SMTP 服务的主机地址
- 例如:`smtp.mydomain.com`
- 端口号 **(必选)**
- 端口号 **(必選)**
- SMTP 服务的端口号
- 例如: `587`
- 允许的域名
- 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登录
限制哪些域可以登录。
- 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登入
限制哪些域可以登入。
- 示例: `gitea.com,mydomain.com,mydomain2.com`
- 强制使用 SMTPS
- 默认情况下将使用 SMTPS 连接到端口 465.如果您希望将 smtp 用于其他端口,自行设置
- 否则,如果服务器提供' STARTTLS '扩展名,则将使用此扩展名
- 跳过 TLS 验证
- 禁用 TLS 验证身份.
- 该认证源处于激活状态
- 启用或禁用此身份验证源
- 跳過 TLS 驗證
- 禁用 TLS 驗證身份.
- 該認證源处于激活状态
- 启用或禁用此身份驗證源
## FreeIPA
- 要使用 FreeIPA 凭据登录 Gitea,需要为 Gitea 创建一个绑定帐户。
创建一个绑定帐户:
- 在 FreeIPA 服务器上创建一个 gitea.ldif 文件,并将`dc=example,dc=com`替换为您的`dn`,然后提供一个适当安全的密码。
- 要使用 FreeIPA 凭据登入 Gitea,需要為 Gitea 建立一个绑定帳戶。
建立一个绑定帳戶:
- 在 FreeIPA 服务器上建立一个 gitea.ldif 文件,並将`dc=example,dc=com`替换為您的`dn`,然后提供一个适当安全的密碼。
```sh
dn: uid=gitea,cn=sysaccounts,cn=etc,dc=example,dc=com
@@ -220,76 +220,76 @@ PAM 提供了一种机制,通过对用户进行 PAM 认证来自动将其添
nsIdleTimeout: 0
```
- 导入 LDIF 文件(如果需要,请将 localhost 更改为 IPA 服务器)。系统会提示您输入 Directory Manager 的密码。:
- 导入 LDIF 文件(如果需要,請将 localhost 更改為 IPA 服务器)。系统会提示您输入 Directory Manager 的密碼。:
```sh
ldapmodify -h localhost -p 389 -x -D \
"cn=Directory Manager" -W -f gitea.ldif
```
- 为`gitea_users`添加 IPA 组:
- 為`gitea_users`添加 IPA 组:
```sh
ipa group-add --desc="Gitea Users" gitea_users
```
- **提示**:对于 IPA 凭证错误,运行' kinit admin '并提供域管理帐户密码.
- 以管理员身份登录 Gitea,点击 Admin Panel 下的`Authentication`。然后单击`Add New Source`并填写详细信息,更改所有适当的地方。
- **提示**:對於 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 操作系统上运行时。
Gitea 支持通過 Windows 内置的安全支持提供程序接口(Security Support Provider Interface,SSPI)实現 SPNEGO 單点登入認證(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 僅在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
在激活 SSPI 单点登录认证(SSO)之前,您需要准备您的环境:
在激活 SSPI 單点登入認證(SSO)之前,您需要准备您的环境:
- 在 Active Directory 中创建一个单独的用户账户,gitea.exe 进程将在该账户下运行(例如,在 domain.local 域下创建一个名为 user 的账户:
- 为运行 gitea.exe 的主机创建一个服务主体名称(Service Principal Name,SPN),其类别为 HTTP:
- 在 Active Directory 中建立一个單独的使用者账户,gitea.exe 進程将在該账户下运行(例如,在 domain.local 域下建立一个名為 user 的账户:
- 為运行 gitea.exe 的主机建立一个服务主體名稱(Service Principal Name,SPN),其类别為 HTTP:
- 以特权域用户(例如域管理员)的身份启动“命令提示符”或“PowerShell”。
- 运行下面的命令,将 host.domain.local 替换为 Web 应用程序将运行的服务器的完全限定域名(FQDN),将 domain\user 替换为在前一步中创建的账户名称:
- 以特权域使用者(例如域管理员)的身份启动“命令提示符”或“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`)。
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选项 -> 安全 -> 本地站点 -> 站点`)。
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。
8. 在控制面板中點擊“Sign In”按钮,然后選择 SSPI,将会自动使用当前登入到计算机的使用者進行登入。
9. 如果無法正常工作,請确保:
- 您不是在运行`gitea.exe`的同一台服务器上运行 Web 浏览器。應該在与服务器不同的域加入计算机(客户端)上运行 Web 浏览器。如果客户端和服务器都在同一台计算机上运行,则 NTLM 将优先于 Kerberos。
- 主机上只有一个`HTTP/...`的 SPN。
- SPN 中只包含主机名,不包含端口号。
- 将 Web 应用程序的 URL 添加到"本地站点"。
- 服务器和客户端的时钟差异不超过 5 分钟(取决于组策略)。
- 在 Internet Explorer 中启用了"集成 Windows 身份验证"(在"高级设置"下)。
- 将 Web 應用程序的 URL 添加到"本地站点"。
- 服务器和客户端的时钟差异不超過 5 分钟(取决于组策略)。
- 在 Internet Explorer 中启用了"集成 Windows 身份驗證"(在"高级设置"下)。
遵循这些步骤,您应该能够成功启用和使用 SSPI 单点登录认证(SSO)。
遵循这些步骤,您應該能够成功启用和使用 SSPI 單点登入認證(SSO)。
## 反向代理认证
## 反向代理認證
Gitea 支持通过读取反向代理传递的 HTTP 头中的登录名或者 email 地址来支持反向代理来认证。默认是不启用的,你可以用以下配置启用。
Gitea 支持通過读取反向代理传递的 HTTP 头中的登入名或者 email 地址来支持反向代理来認證。默认是不启用的,你可以用以下配置启用。
```ini
[service]
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
```
默认的登录用户名的 HTTP 头是 `X-WEBAUTH-USER`,你可以通过修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果用户不存在,可以自动创建用户,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=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 头。
默认的登入使用者 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 头。
如果设置了 `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`, 可以设置最多信任几级反向代理。
你也可以通過修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加强安全性,默认值是 `127.0.0.0/8,::1/128`。 通過 `REVERSE_PROXY_LIMIT`, 可以设置最多信任几级反向代理。
你可以通过以下配置为 API 启用此认证方法:
你可以通過以下配置為 API 启用此認證方法:
```ini
[service]
@@ -9,17 +9,17 @@ aliases:
# 备份与恢复
Gitea 已经实现了 `dump` 命令可以用来备份所有需要的文件到一个 zip 压缩文件。该压缩文件可以被用来进行数据恢复。
Gitea 已经实現了 `dump` 命令可以用来备份所有需要的文件到一个 zip 压缩文件。該压缩文件可以被用来進行数据恢复。
## 备份一致性
为了确保 Gitea 实例的一致性,在备份期间必须关闭它。
為了确保 Gitea 实例的一致性,在备份期间必須关闭它。
Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都会发生变化。例如,当迁移正在进行时,在数据库中创建一个事务,而 Git 仓库正在被复制。如果备份发生在迁移的中间,Git 仓库可能是不完整的,尽管数据库声称它是完整的,因为它是在之后被转储的。避免这种竞争条件的唯一方法是在备份期间停止 Gitea 实例。
Gitea 包括数据库、文件和 Git 存放庫,当它被使用时所有这些都会发生变化。例如,当迁移正在進行时,在数据库中建立一个事务,而 Git 存放庫正在被复制。如果备份发生在迁移的中间,Git 存放庫可能是不完整的,尽管数据库声稱它是完整的,因為它是在之后被转儲的。避免这种竞争条件的唯一方法是在备份期间停止 Gitea 实例。
## 备份命令 (`dump`)
先转到 git 用户的权限: `su git`. 再 Gitea 目录运行 `./gitea dump`。一般会显示类似如下的输出:
先转到 git 使用者的权限: `su git`. 再 Gitea 目錄运行 `./gitea dump`。一般会显示类似如下的输出:
```
2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
@@ -32,18 +32,18 @@ Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都
最后生成的 `gitea-dump-1482906742.zip` 文件将会包含如下内容:
- `app.ini` - 如果原先存储在默认的 custom/ 目录之外,则是配置文件的可选副本
- `custom/` - 所有保存在 `custom/` 目录下的配置和自定义的文件。
- `data/` - 数据目录(APP_DATA_PATH),如果使用文件会话,则不包括会话。该目录包括 `attachments`、`avatars`、`lfs`、`indexers`、如果使用 SQLite 则包括 SQLite 文件。
- `repos/` - 仓库目录的完整副本。
- `app.ini` - 如果原先存儲在默认的 custom/ 目錄之外,则是配置文件的可選副本
- `custom/` - 所有保存在 `custom/` 目錄下的配置和自定义的文件。
- `data/` - 数据目錄(APP_DATA_PATH),如果使用文件会话,则不包括会话。該目錄包括 `attachments`、`avatars`、`lfs`、`indexers`、如果使用 SQLite 则包括 SQLite 文件。
- `repos/` - 存放庫目錄的完整副本。
- `gitea-db.sql` - 数据库 dump 出来的 SQL。
- `log/` - Logs 文件,如果用作迁移不是必须的。
- `log/` - Logs 文件,如果用作迁移不是必須的。
中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 `--tempdir` 参数,或者用 `TMPDIR` 环境变量。
中间备份文件将会在临时目錄進行建立,如果您要重新指定临时目錄,可以用 `--tempdir` 參數,或者用 `TMPDIR` 环境变量。
## 备份数据库
`gitea dump` 创建的 SQL 转储使用 XORM,Gitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转储工具。使用 XORM 转储数据库时仍然存在一些问题,可能会导致在尝试恢复时出现问题。
`gitea dump` 建立的 SQL 转儲使用 XORM,Gitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转儲工具。使用 XORM 转儲数据库时仍然存在一些问题,可能会导致在尝试恢复时出現问题。
```sh
# mysql
@@ -56,7 +56,7 @@ pg_dump -U $USER $DATABASE > gitea-db.sql
在使用 Docker 时,使用 `dump` 命令有一些注意事项。
必须以 `gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 执行该命令;并且,为了让备份文件夹的压缩过程能够顺利执行,`docker exec` 命令必须在 `--tempdir` 内部执行。
必須以 `gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 執行該命令;並且,為了让备份文件夹的压缩過程能够顺利執行,`docker exec` 命令必須在 `--tempdir` 内部執行。
示例:
@@ -64,13 +64,13 @@ pg_dump -U $USER $DATABASE > gitea-db.sql
docker exec -u <OS_USERNAME> -it -w <--tempdir> $(docker ps -qf 'name=^<NAME_OF_DOCKER_CONTAINER>$') bash -c '/usr/local/bin/gitea dump -c </path/to/app.ini>'
```
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 环境的临时目录;如果您没有指定自定义的 `--tempdir`,那么 Gitea 将使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。对于 `--tempdir`,请相应调整您的 `docker exec` 命令选项。
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 环境的临时目錄;如果您没有指定自定义的 `--tempdir`,那么 Gitea 将使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。對於 `--tempdir`,請相應调整您的 `docker exec` 命令選项。
结果应该是一个文件,存储在指定的 `--tempdir` 中,类似于:`gitea-dump-1482906742.zip`
结果應該是一个文件,存儲在指定的 `--tempdir` 中,类似于:`gitea-dump-1482906742.zip`
## 恢复命令 (`restore`)
当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。
当前還没有恢复命令,恢复需要人工進行。主要是把文件和数据库進行恢复。
例如:
@@ -93,15 +93,15 @@ psql -U $USER -d $DATABASE < gitea-db.sql
service gitea restart
```
如果安装方式发生了变化(例如 二进制 -> Docker),或者 Gitea 安装到了与之前安装不同的目录,则需要重新生成仓库 Git 钩子。
如果安裝方式发生了变化(例如 二進制 -> Docker),或者 Gitea 安裝到了与之前安裝不同的目錄,则需要重新生成存放庫 Git 钩子。
在 Gitea 运行时,并从 Gitea 二进制文件所在的目录执行:`./gitea admin regenerate hooks`
在 Gitea 运行时,並从 Gitea 二進制文件所在的目錄執行:`./gitea admin regenerate hooks`
这样可以确保仓库 Git 钩子中的应用程序和配置文件路径与当前安装一致。如果这些路径没有更新,仓库的 `push` 操作将失败。
这样可以确保存放庫 Git 钩子中的應用程序和配置文件路径与当前安裝一致。如果这些路径没有更新,存放庫的 `push` 操作将失败。
### 使用 Docker (`restore`)
在基于 Docker 的 Gitea 实例中,也没有恢复命令的支持。恢复过程与前面描述的步骤相同,但路径不同。
在基于 Docker 的 Gitea 实例中,也没有恢复命令的支持。恢复過程与前面描述的步骤相同,但路径不同。
示例:
@@ -113,7 +113,7 @@ 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
@@ -121,11 +121,11 @@ chown -R git:git /data
/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks
```
Gitea 容器中的默认用户是 `git`(1000:1000)。请用您的 Gitea 容器 ID 或名称替换 `2a83b293548e`。
Gitea 容器中的默认使用者是 `git`(1000:1000)。請用您的 Gitea 容器 ID 或名稱替换 `2a83b293548e`。
### 使用 Docker-rootless (`restore`)
在 Docker-rootless 容器中的恢复工作流程只是要使用的目录不同:
在 Docker-rootless 容器中的恢复工作流程只是要使用的目錄不同:
```sh
# 在容器中打开 bash 会话
@@ -137,7 +137,7 @@ cd gitea-dump-1610949662
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
@@ -9,29 +9,29 @@ aliases:
# 嵌入资源提取工具
Gitea 的可执行文件包含了运行所需的所有资源:模板、图片、样式表和翻译文件。你可以通过在 `custom` 目录下的相应路径中放置替换文件来覆盖其中的任何资源(详见 [自定义 Gitea 配置](../administration/customizing-gitea.md))。
Gitea 的可執行文件包含了运行所需的所有资源:模板、图片、样式表和翻译文件。你可以通過在 `custom` 目錄下的相應路径中放置替换文件来覆盖其中的任何资源(详见 [自定义 Gitea 配置](../administration/customizing-gitea.md))。
要获取嵌入资源的副本以进行编辑,可以使用 CLI 中的 `embedded` 命令,通过操作系统的 shell 执行。
要获取嵌入资源的副本以進行编辑,可以使用 CLI 中的 `embedded` 命令,通過操作系统的 shell 執行。
**注意:** 嵌入资源提取工具包含在 Gitea 1.12 及以上版本中。
## 资源列表
要列出嵌入在 Gitea 可执行文件中的资源,请使用以下语法:
要列出嵌入在 Gitea 可執行文件中的资源,請使用以下语法:
```sh
gitea embedded list [--include-vendored] [patterns...]
```
`--include-vendored` 标志使命令包括被供应的文件,这些文件通常被排除在外;即来自外部库的文件,这些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
`--include-vendored` 标志使命令包括被供應的文件,这些文件通常被排除在外;即来自外部库的文件,这些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作为其 glob 语法。以下是一些示例:
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作為其 glob 语法。以下是一些示例:
- 列出所有模板文件,无论在哪个虚拟目录下:`**.tmpl`
- 列出所有模板文件,無论在哪个虚拟目錄下:`**.tmpl`
- 列出所有邮件模板文件:`templates/mail/**.tmpl`
列出 `public/assets/img` 目录下的所有文件:`public/assets/img/**`
列出 `public/assets/img` 目錄下的所有文件:`public/assets/img/**`
不要忘记为模式使用引号,因为空格、`*` 和其他字符可能对命令行解释器有特殊含义。
不要忘记為模式使用引号,因為空格、`*` 和其他字符可能对命令行解释器有特殊含义。
如果未提供模式,则列出所有文件。
@@ -53,31 +53,31 @@ templates/user/settings/security_openid.tmpl
## 提取资源
要提取嵌入在 Gitea 可执行文件中的资源,请使用以下语法:
要提取嵌入在 Gitea 可執行文件中的资源,請使用以下语法:
```sh
gitea [--config {file}] embedded extract [--destination {dir}|--custom] [--overwrite|--rename] [--include-vendored] {patterns...}
```
`--config` 选项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此选项仅在使用 `--custom` 标志时使用。
`--config` 選项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此選项僅在使用 `--custom` 标志时使用。
`--destination` 选项用于指定提取文件的目标目录。默认为当前目录。
`--destination` 選项用于指定提取文件的目标目錄。默认為当前目錄。
`--custom` 标志告知 Gitea 直接将文件提取到 `custom` 目录中。为使其正常工作,该命令需要知道 `app.ini` 配置文件的位置(通过 `--config` 指定),并且根据配置的不同,需要从 Gitea 通常启动的目录运行。有关详细信息,请参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md)。
`--custom` 标志告知 Gitea 直接将文件提取到 `custom` 目錄中。為使其正常工作,該命令需要知道 `app.ini` 配置文件的位置(通過 `--config` 指定),並且根据配置的不同,需要从 Gitea 通常启动的目錄运行。有关详细信息,請参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md)。
`--overwrite` 标志允许覆盖目标目录中的任何现有文件。
`--overwrite` 标志允许覆盖目标目錄中的任何現有文件。
`--rename` 标志告知 Gitea 将目标目录中的任何现有文件重命名为 `filename.bak`。之前的 `.bak` 文件将被覆盖。
`--rename` 标志告知 Gitea 将目标目錄中的任何現有文件重命名為 `filename.bak`。之前的 `.bak` 文件将被覆盖。
至少需要提供一个文件搜索模式;有关模式的语法和示例,请参阅上述 `list` 子命令。
至少需要提供一个文件搜索模式;有关模式的语法和示例,請参阅上述 `list` 子命令。
### 重要提示
请确保**只提取需要自定义的文件**。位于 `custom` 目录中的文件不会受到 Gitea 的升级过程的影响。当 Gitea 升级到新版本(通过替换可执行文件)时,许多嵌入文件将发生变化。Gitea 将尊重并使用在 `custom` 目录中找到的任何文件,即使这些文件是旧的和不兼容的。
請确保**只提取需要自定义的文件**。位于 `custom` 目錄中的文件不会受到 Gitea 的升级過程的影響。当 Gitea 升级到新版本(通過替换可執行文件)时,许多嵌入文件将发生变化。Gitea 将尊重並使用在 `custom` 目錄中找到的任何文件,即使这些文件是旧的和不兼容的。
### 示例:提取邮件模板
将邮件模板提取到临时目录:
将邮件模板提取到临时目錄:
```sh
$ mkdir tempdir
@@ -11,17 +11,17 @@ aliases:
## 用法
`gitea [全局选项] 命令 [命令或全局选项] [参数...]`
`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`)
- `--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 也可以在构建时更改(如果需要)。
@@ -31,10 +31,10 @@ aliases:
启动服务器:
- 选项:
- `--port number`,`-p number`:端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。
- `--install-port number`:运行安装页面的端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。
- `--pid path`,`-P path`:Pid 文件的路径。可选。
- 選项:
- `--port number`,`-p number`:端口号。可選。 (默认值:3000)。覆盖配置文件中的设置。
- `--install-port number`:运行安裝页面的端口号。可選。 (默认值:3000)。覆盖配置文件中的设置。
- `--pid path`,`-P path`:Pid 文件的路径。可選。
- `--quiet`,`-q`:只在控制台上输出 Fatal 日志,用于在设置日志之前发出的日志。
- `--verbose`:在控制台上输出跟踪日志,用于在设置日志之前发出的日志。
- 示例:
@@ -42,7 +42,7 @@ aliases:
- `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 都需要重新执行此操作。
- Gitea 不應以 root 使用者身份运行。要绑定到低于 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新執行此操作。
### admin
@@ -51,278 +51,278 @@ aliases:
- 命令:
- `user`:
- `list`:
- 选项:
- `--admin`:仅列出管理员用户。可选。
- 描述:列出所有现有用户。
- 選项:
- `--admin`:僅列出管理员使用者。可選。
- 描述:列出所有現有使用者。
- 示例:
- `gitea admin user list`
- `delete`:
- 选项:
- `--email`:要删除的用户的电子邮件。
- `--username`:要删除的用户的用户名。
- `--id`:要删除的用户的 ID。
- 必须提供 `--id`、`--username` 或 `--email` 中的一个。如果提供多个,则所有条件必须匹配。
- 選项:
- `--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`:密码。必填。
- 選项:
- `--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)
- `--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`:新密码。必填。
- 選项:
- `--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`:撤销对给定用户的强制密码更改
- 參數:
- `[username...]`:需要更改密碼的使用者
- 選项:
- `--all`,`-A`:强制所有使用者更改密碼
- `--exclude username`,`-e username`:排除给定的使用者。可以多次设置。
- `--unset`:撤销对给定使用者的强制密碼更改
- `regenerate`:
- 选项:
- `hooks`:重新生成所有仓库的 Git Hooks。
- 選项:
- `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`:应用程序名称。
- 選项:
- `--name`:應用程序名稱。
- `--provider`:OAuth2 提供者。
- `--key`:客户端 ID(Key)。
- `--secret`:客户端密钥。
- `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。
- `--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`:根据组自动激活团队成员资格的删除。(可选)
- `--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`:应用程序名称。
- `--name`:應用程序名稱。
- `--provider`:OAuth2 提供者。
- `--key`:客户端 ID(Key)。
- `--secret`:客户端密钥。
- `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。
- `--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`:受限用户的组声明值。(可选)
- `--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。
- 選项:
- `--name`:應用程序名稱。必填。
- `--auth-type`:SMTP 認證類型(PLAIN/LOGIN/CRAM-MD5)。默认為 PLAIN。
- `--host`:SMTP 主机。必填。
- `--port`:SMTP 端口。必填。
- `--force-smtps`:SMTPS 始终在端口 465 上使用。设置此选项以强制在其他端口上使用 SMTPS。
- `--skip-verify`:跳过 TLS 验证。
- `--force-smtps`:SMTPS 始终在端口 465 上使用。设置此選项以强制在其他端口上使用 SMTPS。
- `--skip-verify`:跳過 TLS 驗證。
- `--helo-hostname`:发送 HELO 时使用的主机名。留空以发送当前主机名。
- `--disable-helo`:禁用 SMTP helo。
- `--allowed-domains`:留空以允许所有域。使用逗号(',')分隔多个域。
- `--skip-local-2fa`:跳过 2FA 登录。
- `--active`:启用此认证源。
- `--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` 值。
`--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` 共享
- 其他選项与 `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 验证。
- `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 的密码(如果有)。
- `--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`:启用用户同步。
- `--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 验证。
- `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 的密码(如果有)。
- `--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`:启用用户同步。
- `--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 验证。
- `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。必填。
- `--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 验证。
- `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。
- `--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`文件中,并且会覆盖任何现有文件。
生成自签名的 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`:如果提供此选项,则证书将生成自己的证书颁发机构。可选。
- `--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`。
将所有文件和数据库导出到一个 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)
- 選项:
- `--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 是此选项的别名,用于向后兼容)。
- 選项:
- `INTERNAL_TOKEN`: 用于内部 API 调用身份驗證的令牌。
- `JWT_SECRET`: 用于 LFS 和 OAUTH2 JWT 身份驗證的密钥(LFS_JWT_SECRET 是此選项的别名,用于向后兼容)。
- `SECRET_KEY`: 全局密钥。
- 示例:
- `gitea generate secret INTERNAL_TOKEN`
@@ -331,27 +331,27 @@ aliases:
### keys
提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中进行配置:
提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中進行配置:
```ini
...
# -e 的值和 AuthorizedKeysCommandUser 应与运行 Gitea 的用户名匹配
# -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`。
該命令将返回适用于提供的密钥的合适 authorized_keys 行。您還應在 `app.ini` 的 `[server]` 部分设置值 `SSH_CREATE_AUTHORIZED_KEYS_FILE=false`。
注意: opensshd 要求 Gitea 程序由 root 拥有,并且不可由组或其他人写入。程序必须使用绝对路径指定。
注意: Gitea 必须在运行此命令时处于运行状态才能成功。
注意: opensshd 要求 Gitea 程序由 root 拥有,並且不可由组或其他人写入。程序必須使用绝对路径指定。
注意: Gitea 必須在运行此命令时处于运行状态才能成功。
### migrate
迁移数据库。该命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。
迁移数据库。該命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。
### doctor check
对 Gitea 实例进行诊断,可以修复一些可修复的问题。
对 Gitea 实例進行诊断,可以修复一些可修复的问题。
默认只运行部分检查,额外的检查可以参考:
- `gitea doctor check --list` - 列出所有可用的检查
@@ -359,8 +359,8 @@ AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
- `gitea doctor check --default` - 运行默认的检查
- `gitea doctor check --run [check(s),]...` - 运行指定的名字的检查
有些问题可以通过设置 `--fix` 选项进行自动修复。
额外的日志可以通过 `--log-file=...` 进行设置。
有些问题可以通過设置 `--fix` 選项進行自动修复。
额外的日志可以通過 `--log-file=...` 進行设置。
#### doctor recreate-table
@@ -370,19 +370,19 @@ AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
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 重新建立这些表,並将旧数据复制到新表中,並适当设置默认值:
```
gitea doctor recreate-table user
```
您可以使用以下方式让 Gitea 重新创建多个表:
您可以使用以下方式让 Gitea 重新建立多个表:
```
gitea doctor recreate-table table1 table2 ...
```
如果您希望 Gitea 重新创建所有表,请直接调用:
如果您希望 Gitea 重新建立所有表,請直接调用:
```
gitea doctor recreate-table
@@ -392,47 +392,47 @@ gitea doctor recreate-table
### doctor convert
将现有的 MySQL 数据库从 utf8 转换为 utf8mb4,或者把 MSSQL 数据库从 varchar 转换为 nvarchar。
将現有的 MySQL 数据库从 utf8 转换為 utf8mb4,或者把 MSSQL 数据库从 varchar 转换為 nvarchar。
### manager
管理运行中的服务器操作:
- 命令:
- `shutdown`: 优雅地关闭运行中的进程
- `restart`: 优雅地重新启动运行中的进程(对于 Windows 服务器尚未实现)
- `flush-queues`: 刷新运行中的进程中的队列
- 选项:
- `--timeout value`: 刷新过程的超时时间(默认值: 1m0s)
- `--non-blocking`: 设置为 true,以在返回之前不等待刷新完成
- `shutdown`: 优雅地关闭运行中的進程
- `restart`: 优雅地重新启动运行中的進程(對於 Windows 服务器尚未实現)
- `flush-queues`: 刷新运行中的進程中的队列
- 選项:
- `--timeout value`: 刷新過程的超时时间(默认值: 1m0s)
- `--non-blocking`: 设置為 true,以在返回之前不等待刷新完成
- `logging`: 调整日志命令
- 命令:
- `pause`: 暂停日志记录
- 注意:
- 如果日志级别低于此级别,日志级别将被临时提升为 INFO。
- Gitea 将在一定程度上缓冲日志,并在超过该点后丢弃日志。
- 如果日志级别低于此级别,日志级别将被临时提升為 INFO。
- Gitea 将在一定程度上缓冲日志,並在超過該点后丢弃日志。
- `resume`: 恢复日志记录
- `release-and-reopen`: 使 Gitea 释放和重新打开用于日志记录的文件和连接(相当于向 Gitea 发送 SIGUSR1 信号)。
- `remove name`: 删除指定的日志记录器
- 选项:
- `--group group`, `-g group`: 从中删除子记录器的组(默认为`default`)
- 選项:
- `--group group`, `-g group`: 从中删除子记录器的组(默认為`default`)
- `add`: 添加日志记录器
- 命令:
- `console`: 添加控制台日志记录器
- 选项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default"
- `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式
- 選项:
- `--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 - 仅适用于控制台
- `--stderr`: 将控制台日志输出到 stderr - 僅适用于控制台
- `file`: 添加文件日志记录器
- 选项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default"
- `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式
- 選项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认為"default"
- `--name value`, `-n value`: 新日志记录器的名稱 - 默认為模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
@@ -441,79 +441,79 @@ gitea doctor recreate-table
- `--color`: 在日志中使用颜色
- `--filename value`, `-f value`: 日志记录器的文件名
- `--rotate`, `-r`: 轮转日志
- `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节为单位)
- `--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`: 新日志记录器的名称 - 默认为模式
- 選项:
- `--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-on-message`, `-R`: 對於每个消息重新连接主机
- `--reconnect`, `-r`: 连接中断时重新连接主机
- `--protocol value`, `-P value`: 设置要使用的协议:tcp、unix 或 udp(默认为 tcp)
- `--address value`, `-a value`: 要连接到的主机地址和端口(默认为:7020)
- `--protocol value`, `-P value`: 设置要使用的协议:tcp、unix 或 udp(默认為 tcp)
- `--address value`, `-a value`: 要连接到的主机地址和端口(默认為:7020)
- `smtp`: 添加 SMTP 日志记录器
- 选项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default"
- `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式
- 選项:
- `--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)
- `--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 的进程发送取消命令(仅适用于非系统进程)
- `processes`: 显示 Gitea 進程和 Goroutine 信息
- 選项:
- `--flat`: 以平面表格形式显示進程,而不是树形结构
- `--no-system`: 不显示系统進程
- `--stacktraces`: 显示与進程关联的 Goroutine 的堆栈跟踪
- `--json`: 输出為 JSON 格式
- `--cancel PID`: 向具有 PID 的進程发送取消命令(僅适用于非系统進程)
### dump-repo
`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转储存储库数据:
`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转儲存儲库数据:
- 选项:
- `--git_service service`:Git 服务,可以是 `git`、`github`、`gitea`、`gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此选项。
- `--repo_dir dir`,`-r dir`:存储数据的存储库目录路径。
- 選项:
- `--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 <password>`:访问 `clone_addr` 的密码。
- `--auth_username lunny`:访问 `clone_addr` 的使用者名。
- `--auth_password <password>`:访问 `clone_addr` 的密碼。
- `--auth_token <token>`:访问 `clone_addr` 的个人令牌。
- `--owner_name lunny`:如果非空,数据将存储在具有所有者名称的目录中。
- `--repo_name tango`:如果非空,数据将存储在具有存储库名称的目录中。
- `--units <units>`:要迁移的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。
- `--owner_name lunny`:如果非空,数据将存儲在具有所有者名稱的目錄中。
- `--repo_name tango`:如果非空,数据将存儲在具有存儲库名稱的目錄中。
- `--units <units>`:要迁移的项目,一个或多个项目應以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,则表示所有项目。
### restore-repo
`restore-repo` 从磁盘目录中还原存储库数据:
`restore-repo` 从硬碟目錄中還原存儲库数据:
- 选项:
- `--repo_dir dir`,`-r dir`:还原数据的存储库目录路径。
- `--owner_name lunny`:还原目标所有者名称。
- `--repo_name tango`:还原目标存储库名称。
- `--units <units>`:要还原的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。
- 選项:
- `--repo_dir dir`,`-r dir`:還原数据的存儲库目錄路径。
- `--owner_name lunny`:還原目标所有者名稱。
- `--repo_name tango`:還原目标存儲库名稱。
- `--units <units>`:要還原的项目,一个或多个项目應以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,则表示所有项目。
### actions generate-runner-token
生成一个供 Runner 使用的新令牌,用于向服务器注册。
- 选项:
- `--scope {owner}[/{repo}]`,`-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示该 Runner 可用于所有仓库,但你也可以将其限制为特定的仓库或所有者。
- 選项:
- `--scope {owner}[/{repo}]`,`-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示該 Runner 可用于所有存放庫,但你也可以将其限制為特定的存放庫或所有者。
要注册全局 Runner:
@@ -521,13 +521,13 @@ gitea doctor recreate-table
gitea actions generate-runner-token
```
要注册特定组织的 Runner,例如 `org`:
要注册特定組織的 Runner,例如 `org`:
```
gitea actions generate-runner-token -s org
```
要注册特定仓库的 Runner,例如 `username/test-repo`:
要注册特定存放庫的 Runner,例如 `username/test-repo`:
```
gitea actions generate-runner-token -s username/test-repo
@@ -9,75 +9,75 @@ aliases:
# 自定义 Gitea 配置
Gitea 引用 `custom` 目录中的自定义配置文件来覆盖配置、模板等默认配置。
Gitea 引用 `custom` 目錄中的自定义配置文件来覆盖配置、模板等默认配置。
如果从二进制部署 Gitea ,则所有默认路径都将相对于该 gitea 二进制文件;如果从发行版安装,则可能会将这些路径修改为 Linux 文件系统标准。Gitea
将会自动创建包括 `custom/` 在内的必要应用目录,应用本身的配置存放在
`custom/conf/app.ini` 当中。在发行版中可能会以 `/etc/gitea/` 的形式为 `custom` 设置一个符号链接,查看配置详情请移步:
如果从二進制部署 Gitea ,则所有默认路径都将相對於該 gitea 二進制文件;如果从发行版安裝,则可能会将这些路径修改為 Linux 文件系统标准。Gitea
将会自动建立包括 `custom/` 在内的必要應用目錄,應用本身的配置存放在
`custom/conf/app.ini` 当中。在发行版中可能会以 `/etc/gitea/` 的形式為 `custom` 设置一个符号链接,查看配置详情請移步:
- [快速备忘单](../administration/config-cheat-sheet.md)
- [完整配置清单](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
- [快速备忘單](../administration/config-cheat-sheet.md)
- [完整配置清單](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
如果您在 binary 同目录下无法找到 `custom` 文件夹,请检查您的 `GITEA_CUSTOM`
环境变量配置, 因为它可能被配置到了其他地方(可能被一些启动脚本设置指定了目录)。
如果您在 binary 同目錄下無法找到 `custom` 文件夹,請检查您的 `GITEA_CUSTOM`
环境变量配置, 因為它可能被配置到了其他地方(可能被一些启动脚本设置指定了目錄)。
- [环境变量清单](../administration/environment-variables.md)
- [环境变量清單](../administration/environment-variables.md)
**注:** 必须完全重启 Gitea 以使配置生效。
**注:** 必須完全重启 Gitea 以使配置生效。
## 使用自定义 /robots.txt
将 [想要展示的内容](http://www.robotstxt.org/) 存放在 `custom` 目录中的
将 [想要展示的内容](http://www.robotstxt.org/) 存放在 `custom` 目錄中的
`robots.txt` 文件来让 Gitea 使用自定义的`/robots.txt` (默认:空 404)。
## 使用自定义的公共文件
将自定义的公共文件(比如页面和图片)作为 webroot 放在 `custom/public/` 中来让 Gitea 提供这些自定义内容(符号链接将被追踪)。
将自定义的公共文件(比如页面和图片)作為 webroot 放在 `custom/public/` 中来让 Gitea 提供这些自定义内容(符号链接将被追踪)。
举例说明:`image.png` 存放在 `custom/public/assets/`中,那么它可以通过链接 http://gitea.domain.tld/assets/image.png 访问。
举例说明:`image.png` 存放在 `custom/public/assets/`中,那么它可以通過链接 http://gitea.domain.tld/assets/image.png 访问。
## 修改默认头像
替换以下目录中的 png 图片: `custom/public/assets/img/avatar\_default.png`
替换以下目錄中的 png 图片: `custom/public/assets/img/avatar\_default.png`
## 自定义 Gitea 页面
您可以改变 Gitea `custom/templates` 的每个单页面。您可以在 Gitea 源码的 `templates` 目录中找到用于覆盖的模板文件,应用将根据
`custom/templates` 目录下的路径结构进行匹配和覆盖。
您可以改变 Gitea `custom/templates` 的每个單页面。您可以在 Gitea 源码的 `templates` 目錄中找到用于覆盖的模板文件,應用将根据
`custom/templates` 目錄下的路径结构進行匹配和覆盖。
包含在 `{{` 和 `}}` 中的任何语句都是 Gitea 的模板语法,如果您不完全理解这些组件,不建议您对它们进行修改。
包含在 `{{` 和 `}}` 中的任何语句都是 Gitea 的模板语法,如果您不完全理解这些组件,不建议您对它们進行修改。
### 添加链接和页签
如果您只是想添加额外的链接到顶部导航栏或额外的选项卡到存储库视图,您可以将它们放在您 `custom/templates/custom/` 目录下的 `extra_links.tmpl` 和 `extra_tabs.tmpl` 文件中。
如果您只是想添加额外的链接到顶部导航栏或额外的選项卡到存儲库视图,您可以将它们放在您 `custom/templates/custom/` 目錄下的 `extra_links.tmpl` 和 `extra_tabs.tmpl` 文件中。
举例说明:假设您需要在网站放置一个静态的“关于”页面,您只需将该页面放在您的
"custom/public/"目录下(比如 `custom/public/impressum.html`)并且将它与 `custom/templates/custom/extra_links.tmpl` 链接起来即可。
举例说明:假设您需要在网站放置一个静态的“关于”页面,您只需将該页面放在您的
"custom/public/"目錄下(比如 `custom/public/impressum.html`)並且将它与 `custom/templates/custom/extra_links.tmpl` 链接起来即可。
这个链接应当使用一个名为“item”的 class 来匹配当前样式,您可以使用 `{{AppSubUrl}}` 来获取 base URL:
这个链接應当使用一个名為“item”的 class 来匹配当前样式,您可以使用 `{{AppSubUrl}}` 来获取 base URL:
`<a class="item" href="{{AppSubUrl}}/assets/impressum.html">Impressum</a>`
同理,您可以将页签添加到 `extra_tabs.tmpl` 中,使用同样的方式来添加页签。它的具体样式需要与
`templates/repo/header.tmpl` 中已有的其他选项卡的样式匹配
同理,您可以将页签添加到 `extra_tabs.tmpl` 中,使用同样的方式来添加页签。它的具體样式需要与
`templates/repo/header.tmpl` 中已有的其他選项卡的样式匹配
([source in GitHub](https://github.com/go-gitea/gitea/blob/main/templates/repo/header.tmpl))
### 页面的其他新增内容
除了 `extra_links.tmpl` 和 `extra_tabs.tmpl`,您可以在您的 `custom/templates/custom/` 目录中存放一些其他有用的模板,例如:
除了 `extra_links.tmpl` 和 `extra_tabs.tmpl`,您可以在您的 `custom/templates/custom/` 目錄中存放一些其他有用的模板,例如:
- `header.tmpl`,在 `<head>` 标记结束之前的模板,例如添加自定义 CSS 文件
- `body_outer_pre.tmpl`,在 `<body>` 标记开始处的模板
- `body_inner_pre.tmpl`,在顶部导航栏之前,但在主 container 内部的模板,例如添加一个 `<div class="full height">`
- `body_inner_post.tmpl`,在主 container 结束处的模板
- `body_outer_post.tmpl`,在底部 `<footer>` 元素之前.
- `footer.tmpl`,在 `<body>` 标签结束处的模板,可以在这里填写一些附加的 Javascript 脚本。
- `footer.tmpl`,在 `<body>` 標籤结束处的模板,可以在这里填写一些附加的 Javascript 脚本。
## 自定义 gitignores,labels, licenses, locales 以及 readmes
将自定义文件放在 `custom/options` 下相应子的文件夹中即可
将自定义文件放在 `custom/options` 下相應子的文件夹中即可
## 更改 Gitea 外观
内置主题是“gitea-light”、“gitea-dark”和“gitea-auto”(自动适应操作系统设置)。
内置主题是“gitea-light”、“gitea-dark”和“gitea-auto”(自动适應操作系统设置)。
默认主题可以通过 `app.ini` 的 [ui](../administration/config-cheat-sheet.md#界面) 部分中的 `DEFAULT_THEME` 进行更改。
默认主题可以通過 `app.ini` 的 [ui](../administration/config-cheat-sheet.md#界面) 部分中的 `DEFAULT_THEME` 進行更改。
@@ -9,15 +9,15 @@ aliases:
# Email 设置
Gitea 具有邮件功能,用于发送事务性邮件(例如注册确认邮件)。它可以配置为使用 Sendmail(或兼容的 MTA,例如 Postfix 和 msmtp)或直接使用 SMTP 服务器。
Gitea 具有邮件功能,用于发送事务性邮件(例如注册确认邮件)。它可以配置為使用 Sendmail(或兼容的 MTA,例如 Postfix 和 msmtp)或直接使用 SMTP 服务器。
## 使用 Sendmail
使用 `sendmail` 命令作为邮件传输代理(mailer)。
使用 `sendmail` 命令作為邮件传输代理(mailer)。
注意:对于在官方 Gitea Docker 镜像中使用,请使用 SMTP 版本进行配置(请参考下一节)。
注意:對於在官方 Gitea Docker 镜像中使用,請使用 SMTP 版本進行配置(請参考下一节)。
注意:对于面向互联网的网站,请查阅您的 MTA 文档以了解通过 TLS 发送邮件的说明。同时设置 SPF、DMARC 和 DKIM DNS 记录,以使发送的邮件被各个电子邮件提供商接受为合法邮件。
注意:對於面向互联网的网站,請查阅您的 MTA 文檔以了解通過 TLS 发送邮件的说明。同时设置 SPF、DMARC 和 DKIM DNS 记录,以使发送的邮件被各个电子邮件提供商接受為合法邮件。
```ini title="app.ini"
[mailer]
@@ -25,12 +25,12 @@ ENABLED = true
FROM = gitea@mydomain.com
PROTOCOL = sendmail
SENDMAIL_PATH = /usr/sbin/sendmail
SENDMAIL_ARGS = "--" ; 大多数 "sendmail" 程序都接受选项,使用 "--" 将防止电子邮件地址被解释为选项。
SENDMAIL_ARGS = "--" ; 大多数 "sendmail" 程序都接受選项,使用 "--" 将防止电子邮件地址被解释為選项。
```
## 使用 SMTP
直接使用 SMTP 服务器作为中继。如果您不想在实例上设置 MTA,但在电子邮件提供商那里有一个帐户,这个选项非常有用。
直接使用 SMTP 服务器作為中继。如果您不想在实例上设置 MTA,但在电子邮件提供商那里有一个帳戶,这个選项非常有用。
```ini title="app.ini"
[mailer]
@@ -45,27 +45,27 @@ PASSWD = `password`
重启 Gitea 以使配置更改生效。
要发送测试邮件以验证设置,请转到 Gitea > 站点管理 > 配置 > SMTP 邮件配置。
要发送测试邮件以驗證设置,請转到 Gitea > 站点管理 > 配置 > SMTP 邮件配置。
有关所有选项的完整列表,请查看[配置速查表](../administration/config-cheat-sheet.md)。
有关所有選项的完整列表,請查看[配置速查表](../administration/config-cheat-sheet.md)。
请注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服务器通信时才支持身份验证。TLS 加密可以通过以下方式进行:
請注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服务器通信时才支持身份驗證。TLS 加密可以通過以下方式進行:
- 通过端口 587 的 STARTTLS(也称为 Opportunistic TLS)。初始连接是明文的,但如果服务器支持,则可以升级为 TLS。
- 通过默认端口 465 的 SMTPS 连接。连接到服务器从一开始就使用 TLS。
- 使用 `PROTOCOL=smtps` 进行强制的 SMTPS 连接。(这两种方式都被称为 Implicit TLS)
这是由于 Go 内部库对 STRIPTLS 攻击的保护机制。
- 通過端口 587 的 STARTTLS(也稱為 Opportunistic TLS)。初始连接是明文的,但如果服务器支持,则可以升级為 TLS。
- 通過默认端口 465 的 SMTPS 连接。连接到服务器从一开始就使用 TLS。
- 使用 `PROTOCOL=smtps` 進行强制的 SMTPS 连接。(这两种方式都被稱為 Implicit TLS)
这是由于 Go 内部库对 STRIPTLS 攻擊的保护機制。
请注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推荐使用 Implicit TLS。
請注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推荐使用 Implicit TLS。
### Gmail
以下配置应该适用于 Gmail 的 SMTP 服务器:
以下配置應該适用于 Gmail 的 SMTP 服务器:
```ini title="app.ini"
[mailer]
ENABLED = true
HOST = smtp.gmail.com:465 ; 对于 Gitea >= 1.18.0,删除此行
HOST = smtp.gmail.com:465 ; 對於 Gitea >= 1.18.0,删除此行
SMTP_ADDR = smtp.gmail.com
SMTP_PORT = 465
FROM = example.user@gmail.com
@@ -74,4 +74,4 @@ PASSWD = `***`
PROTOCOL = smtps
```
请注意,您需要创建并使用一个 [应用密码](https://support.google.com/accounts/answer/185833?hl=en) 并在您的 Google 帐户上启用 2FA。您将无法直接使用您的 Google 帐户密码。
請注意,您需要建立並使用一个 [應用密碼](https://support.google.com/accounts/answer/185833?hl=en) 並在您的 Google 帳戶上启用 2FA。您将無法直接使用您的 Google 帳戶密碼。
@@ -7,9 +7,9 @@ aliases:
- /zh-tw/environment-variables
---
# 环境变量清单
# 环境变量清單
这里是用来控制 Gitea 行为表现的的环境变量清单,您需要在执行如下 Gitea 启动命令前设置它们来确保配置生效:
这里是用来控制 Gitea 行為表現的的环境变量清單,您需要在執行如下 Gitea 启动命令前设置它们来确保配置生效:
```
GITEA_CUSTOM=/home/gitea/custom ./gitea web
@@ -17,33 +17,33 @@ GITEA_CUSTOM=/home/gitea/custom ./gitea web
## Go 的配置
因为 Gitea 使用 Go 语言编写,因此它使用了一些相关的 Go 的配置参数:
因為 Gitea 使用 Go 语言编写,因此它使用了一些相关的 Go 的配置參數:
- `GOOS`
- `GOARCH`
- [`GOPATH`](https://go.dev/cmd/go/#hdr-GOPATH_environment_variable)
您可以在[官方文档](https://go.dev/cmd/go/#hdr-Environment_variables)中查阅这些配置参数的详细信息。
您可以在[官方文檔](https://go.dev/cmd/go/#hdr-Environment_variables)中查阅这些配置參數的详细信息。
## Gitea 的文件目录
## Gitea 的文件目錄
- `GITEA_WORK_DIR`:工作目录的绝对路径
- `GITEA_CUSTOM`:默认情况下 Gitea 使用默认目录 `GITEA_WORK_DIR`/custom,您可以使用这个参数来配置 _custom_ 目录
- `GOGS_WORK_DIR`: 已废弃,请使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM`: 已废弃,请使用 `GITEA_CUSTOM` 替代
- `GITEA_WORK_DIR`:工作目錄的绝对路径
- `GITEA_CUSTOM`:默认情况下 Gitea 使用默认目錄 `GITEA_WORK_DIR`/custom,您可以使用这个參數来配置 _custom_ 目錄
- `GOGS_WORK_DIR`: 已废弃,請使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM`: 已废弃,請使用 `GITEA_CUSTOM` 替代
## 操作系统配置
- `USER`:Gitea 运行时使用的系统用户,它将作为一些 repository 的访问地址的一部分
- `USER`:Gitea 运行时使用的系统使用者,它将作為一些 repository 的访问地址的一部分
- `USERNAME`: 如果没有配置 `USER`, Gitea 将使用 `USERNAME`
- `HOME`: 用户的 home 目录,在 Windows 中会使用 `USERPROFILE` 环境变量
- `HOME`: 使用者的 home 目錄,在 Windows 中会使用 `USERPROFILE` 环境变量
### 仅限于 Windows 的配置
### 僅限于 Windows 的配置
- `USERPROFILE`: 用户的主目录,如果未配置则会使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用于访问 home 目录的主驱动器路径(C 盘)
- `HOMEPATH`:在指定主驱动器下的 home 目录相对路径
- `USERPROFILE`: 使用者的主目錄,如果未配置则会使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用于访问 home 目錄的主驱动器路径(C 盘)
- `HOMEPATH`:在指定主驱动器下的 home 目錄相对路径
## Miscellaneous
- `SKIP_MINWINSVC`:如果设置为 1,在 Windows 上不会以 service 的形式运行。
- `SKIP_MINWINSVC`:如果设置為 1,在 Windows 上不会以 service 的形式运行。
@@ -9,18 +9,18 @@ aliases:
# 外部渲染器
Gitea 通过外部二进制文件支持自定义文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要进行以下步骤:
Gitea 通過外部二進制文件支持自定义文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要進行以下步骤:
- 安装外部二进制文件
- 安裝外部二進制文件
- 在您的 `app.ini` 文件中添加一些配置
- 重新启动 Gitea 实例
此功能支持整个文件的渲染。如果您想要在 Markdown 中渲染代码块,您需要使用 JavaScript 进行一些操作。请参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md) 页面上的一些示例。
此功能支持整个文件的渲染。如果您想要在 Markdown 中渲染代码块,您需要使用 JavaScript 進行一些操作。請参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md) 页面上的一些示例。
## 安装外部二进制文件
## 安裝外部二進制文件
为了通过外部二进制文件进行文件渲染,必须安装它们的关联软件包。
如果您正在使用 Docker 镜像,则您的 `Dockerfile` 应该包含以下内容:
為了通過外部二進制文件進行文件渲染,必須安裝它们的关联軟體包。
如果您正在使用 Docker 镜像,则您的 `Dockerfile` 應該包含以下内容:
```docker
FROM docker.gitea.com/gitea:@dockerVersion@
@@ -30,15 +30,15 @@ COPY custom/app.ini /data/gitea/conf/app.ini
[...]
RUN apk --no-cache add asciidoctor freetype freetype-dev gcc g++ libpng libffi-dev pandoc python3-dev py3-pyzmq pipx
# 安装其他您需要的外部渲染器的软件包
# 安裝其他您需要的外部渲染器的軟體包
RUN pipx install jupyter docutils --include-deps
# 在上面添加您需要安装的任何其他 Python 软件包
# 在上面添加您需要安裝的任何其他 Python 軟體包
```
## `app.ini` 文件配置
在您的自定义 `app.ini` 文件中为每个外部渲染器添加一个 `[markup.XXXXX]` 部分:
在您的自定义 `app.ini` 文件中為每个外部渲染器添加一个 `[markup.XXXXX]` 部分:
```ini
[markup.asciidoc]
@@ -61,12 +61,12 @@ RENDER_COMMAND = "timeout 30s pandoc +RTS -M512M -RTS -f rst"
IS_INPUT_FILE = false
```
如果您的外部标记语言依赖于在生成的 HTML 元素上的额外类和属性,您可能需要启用自定义的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作为我们的 HTML 清理器。下面的示例可以用于支持从 [`pandoc`](https://pandoc.org/) 输出的服务器端 [KaTeX](https://katex.org/) 渲染结果。
如果您的外部标记语言依赖于在生成的 HTML 元素上的额外类和属性,您可能需要启用自定义的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作為我们的 HTML 清理器。下面的示例可以用于支持从 [`pandoc`](https://pandoc.org/) 输出的服务器端 [KaTeX](https://katex.org/) 渲染结果。
```ini
[markup.sanitizer.TeX]
; Pandoc 渲染 TeX 段落为带有 "math" 类的 <span> 元素,根据上下文可能还带有 "inline" 或 "display" 类。
; - 请注意,这与我们的 Markdown 解析器中内置的数学支持不同,后者使用 <code> 元素。
; Pandoc 渲染 TeX 段落為带有 "math" 类的 <span> 元素,根据上下文可能還带有 "inline" 或 "display" 类。
; - 請注意,这与我们的 Markdown 解析器中内置的数学支持不同,后者使用 <code> 元素。
ELEMENT = span
ALLOW_ATTR = class
REGEXP = ^\s*((math(\s+|$)|inline(\s+|$)|display(\s+|$)))+
@@ -77,17 +77,17 @@ FILE_EXTENSIONS = .md,.markdown
RENDER_COMMAND = pandoc -f markdown -t html --katex
```
您必须在每个部分中定义 `ELEMENT` 和 `ALLOW_ATTR`。
您必須在每个部分中定义 `ELEMENT` 和 `ALLOW_ATTR`。
要定义多个条目,请添加唯一的字母数字后缀(例如,`[markup.sanitizer.1]` 和 `[markup.sanitizer.something]`)。
要定义多个条目,請添加唯一的字母数字后缀(例如,`[markup.sanitizer.1]` 和 `[markup.sanitizer.something]`)。
要仅为特定的外部渲染器应用清理规则,它们必须使用渲染器名称,例如 `[markup.sanitizer.asciidoc.rule-1]`、`[markup.sanitizer.<renderer>.rule-1]`。
要僅為特定的外部渲染器應用清理規則,它们必須使用渲染器名稱,例如 `[markup.sanitizer.asciidoc.rule-1]`、`[markup.sanitizer.<renderer>.rule-1]`。
**注意**:如果规则在渲染器 ini 部分之前定义,或者名称与渲染器不匹配,它将应用于所有渲染器。
**注意**:如果規則在渲染器 ini 部分之前定义,或者名稱与渲染器不匹配,它将應用于所有渲染器。
完成配置更改后,请重新启动 Gitea 以使更改生效。
完成配置更改后,請重新启动 Gitea 以使更改生效。
**注意**:在 Gitea 1.12 之前,存在一个名为 `markup.sanitiser` 的单个部分,其中的键被重新定义为多个规则,但是,这种配置方法存在重大问题,需要通过多个部分进行配置。
**注意**:在 Gitea 1.12 之前,存在一个名為 `markup.sanitiser` 的單个部分,其中的键被重新定义為多个規則,但是,这种配置方法存在重大问题,需要通過多个部分進行配置。
### 示例:HTML
@@ -110,9 +110,9 @@ ELEMENT = a
ALLOW_ATTR = class
```
请注意:此示例中的配置将允许渲染 HTML 文件,并使用 `cat` 命令将文件内容输出为 HTML。此外,配置中的两个清理规则将允许 `<div>` 和 `<a>` 元素使用 `class` 属性。
請注意:此示例中的配置将允许渲染 HTML 文件,並使用 `cat` 命令将文件内容输出為 HTML。此外,配置中的两个清理規則将允许 `<div>` 和 `<a>` 元素使用 `class` 属性。
在进行配置更改后,请重新启动 Gitea 以使更改生效。
在進行配置更改后,請重新启动 Gitea 以使更改生效。
### 示例:Office DOCX
@@ -128,7 +128,7 @@ RENDER_COMMAND = "pandoc --from docx --to html --self-contained --template /path
ALLOW_DATA_URI_IMAGES = true
```
在此示例中,配置将允许显示 Office DOCX 文件,并使用 `pandoc` 命令将文件转换为 HTML 格式。同时,清理规则中的 `ALLOW_DATA_URI_IMAGES` 设置为 `true`,允许使用 Data URI 格式的图片。
在此示例中,配置将允许显示 Office DOCX 文件,並使用 `pandoc` 命令将文件转换為 HTML 格式。同时,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置為 `true`,允许使用 Data URI 格式的图片。
模板文件的内容如下:
@@ -150,13 +150,13 @@ RENDER_COMMAND = "jupyter-nbconvert --stdin --stdout --to html --template basic"
ALLOW_DATA_URI_IMAGES = true
```
在此示例中,配置将允许显示 Jupyter Notebook 文件,并使用 `nbconvert` 命令将文件转换为 HTML 格式。同样,清理规则中的 `ALLOW_DATA_URI_IMAGES` 设置为 `true`,允许使用 Data URI 格式的图片。
在此示例中,配置将允许显示 Jupyter Notebook 文件,並使用 `nbconvert` 命令将文件转换為 HTML 格式。同样,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置為 `true`,允许使用 Data URI 格式的图片。
在进行配置更改后,请重新启动 Gitea 以使更改生效。
在進行配置更改后,請重新启动 Gitea 以使更改生效。
## 自定义 CSS
在 `.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,并且由外部渲染器生成的 HTML 将被包装在一个带有 `markup` 和 `XXXXX` 类的 `<div>` 中。`markup` 类提供了预定义的样式(如果 `XXXXX` 是 `markdown`,则使用 `markdown` 类)。否则,您可以使用这些类来针对渲染的 HTML 内容进行定制样式。
在 `.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,並且由外部渲染器生成的 HTML 将被包装在一个带有 `markup` 和 `XXXXX` 类的 `<div>` 中。`markup` 类提供了预定义的样式(如果 `XXXXX` 是 `markdown`,则使用 `markdown` 类)。否则,您可以使用这些类来针对渲染的 HTML 内容進行定制样式。
因此,您可以编写一些 CSS 样式:
@@ -185,10 +185,10 @@ ALLOW_DATA_URI_IMAGES = true
}
```
将您的样式表添加到自定义目录中,例如 `custom/public/assets/css/my-style-XXXXX.css`,并使用自定义的头文件 `custom/templates/custom/header.tmpl` 进行导入:
将您的样式表添加到自定义目錄中,例如 `custom/public/assets/css/my-style-XXXXX.css`,並使用自定义的头文件 `custom/templates/custom/header.tmpl` 進行导入:
```html
<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/my-style-XXXXX.css" />
```
通过以上步骤,您可以将自定义的 CSS 样式应用到特定的外部渲染器,使其具有所需的样式效果。
通過以上步骤,您可以将自定义的 CSS 样式應用到特定的外部渲染器,使其具有所需的样式效果。
@@ -9,11 +9,11 @@ aliases:
# 设置 Fail2ban
**Fail2ban 检查客户端登录日志,将多次登录失败的客户端识别为攻击者并在一段时间内阻止其访问服务。如果你的实例是公开的,这一点尤其重要。请管理员仔细设置 fail2ban,错误的配置将导致防火墙阻止你访问自己的服务器。**
**Fail2ban 检查客户端登入日志,将多次登入失败的客户端识别為攻擊者並在一段时间内阻止其访问服务。如果你的实例是公开的,这一点尤其重要。請管理员仔细设置 fail2ban,错误的配置将导致防火墙阻止你访问自己的服务器。**
Gitea 会在日志文件 `log/gitea.log` 中记录登录失败的 CLI、SSH 或 HTTP 客户端 IP 地址,而你需要将 Gitea 的日志输出模式从默认的 `console` 更改为 `file`。这表示将日志输出到文件,使得 fail2ban 可以定期扫描日志内容。
Gitea 会在日志文件 `log/gitea.log` 中记录登入失败的 CLI、SSH 或 HTTP 客户端 IP 地址,而你需要将 Gitea 的日志输出模式从默认的 `console` 更改為 `file`。这表示将日志输出到文件,使得 fail2ban 可以定期掃描日志内容。
当用户的身份验证失败时,日志中会记录此类信息:
当使用者的身份驗證失败时,日志中会记录此类信息:
```log
2018/04/26 18:15:54 [I] Failed authentication attempt for user from xxx.xxx.xxx.xxx
@@ -23,9 +23,9 @@ Gitea 会在日志文件 `log/gitea.log` 中记录登录失败的 CLI、SSH 或
2020/10/15 16:08:44 [E] invalid credentials from xxx.xxx.xxx.xxx
```
## 配置规则
## 配置規則
添加日志过滤器规则到配置文件 `/etc/fail2ban/filter.d/gitea.conf`:
添加日志過滤器規則到配置文件 `/etc/fail2ban/filter.d/gitea.conf`:
```ini
[Definition]
@@ -33,7 +33,7 @@ failregex = .*(Failed authentication attempt|invalid credentials|Attempted acce
ignoreregex =
```
添加监狱规则到配置文件 `/etc/fail2ban/jail.d/gitea.conf`:
添加监狱規則到配置文件 `/etc/fail2ban/jail.d/gitea.conf`:
```ini
[gitea]
@@ -46,9 +46,9 @@ bantime = 900
action = iptables-allports
```
如果你的 Gitea 实例运行在 Docker 容器中,并且直接将容器端口暴露到外部网络,
你还需要添加 `chain="FORWARD"` 到监狱规则配置文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
以适应 Docker 的网络转发规则。但如果你在容器的宿主机上使用 Nginx 反向代理连接到 Gitea 则无需这样配置。
如果你的 Gitea 实例运行在 Docker 容器中,並且直接将容器端口暴露到外部网络,
你還需要添加 `chain="FORWARD"` 到监狱規則配置文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
以适應 Docker 的网络转发規則。但如果你在容器的宿主机上使用 Nginx 反向代理连接到 Gitea 则無需这样配置。
```ini
[gitea-docker]
@@ -61,13 +61,13 @@ bantime = 900
action = iptables-allports[chain="FORWARD"]
```
最后,运行 `systemctl restart fail2ban` 即可应用更改。现在,你可以使用 `systemctl status fail2ban` 检查 fail2ban 运行状态。
最后,运行 `systemctl restart fail2ban` 即可應用更改。現在,你可以使用 `systemctl status fail2ban` 检查 fail2ban 运行状态。
上述规则规定客户端在 1 小时内,如果登录失败的次数达到 10 次,则通过 iptables 锁定该客户端 IP 地址 15 分钟。
上述規則规定客户端在 1 小时内,如果登入失败的次数达到 10 次,则通過 iptables 锁定該客户端 IP 地址 15 分钟。
## 设置反向代理
如果你使用 Nginx 反向代理到 Gitea 实例,你还需要设置 Nginx 的 HTTP 头部值 `X-Real-IP` 将真实的客户端 IP 地址传递给 Gitea。否则 Gitea 程序会将客户端地址错误解析为反向代理服务器的地址,例如回环地址 `127.0.0.1`。
如果你使用 Nginx 反向代理到 Gitea 实例,你還需要设置 Nginx 的 HTTP 头部值 `X-Real-IP` 将真实的客户端 IP 地址传递给 Gitea。否则 Gitea 程序会将客户端地址错误解析為反向代理服务器的地址,例如回环地址 `127.0.0.1`。
```
proxy_set_header X-Real-IP $remote_addr;
@@ -80,7 +80,7 @@ REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.0/8,::1/128
```
`REVERSE_PROXY_LIMIT` 限制反向代理服务器的层数,设置为 `0` 表示不使用这些标头。
`REVERSE_PROXY_LIMIT` 限制反向代理服务器的层数,设置為 `0` 表示不使用这些标头。
`REVERSE_PROXY_TRUSTED_PROXIES` 表示受信任的反向代理服务器网络地址,
经过该网络地址转发来的流量会经过解析 `X-Real-IP` 头部得到真实客户端地址。
经過該网络地址转发来的流量会经過解析 `X-Real-IP` 头部得到真实客户端地址。
(参考 [configuration cheat sheet](../administration/config-cheat-sheet.md#安全性))
@@ -13,12 +13,12 @@ aliases:
```ini
[server]
; 启用 git-lfs 支持。true 或 false,默认为 false。
; 启用 git-lfs 支持。true 或 false,默认為 false。
LFS_START_SERVER = true
[lfs]
; 存放 LFS 文件的路径,默认为 data/lfs。
; 存放 LFS 文件的路径,默认為 data/lfs。
PATH = /home/gitea/data/lfs
```
**注意**:LFS 服务器支持需要服务器上安装 Git v2.1.2 以上版本。
**注意**:LFS 服务器支持需要服务器上安裝 Git v2.1.2 以上版本。
@@ -10,11 +10,11 @@ sidebar_position: 12
## 使用内置服务器
在启用HTTPS之前,确保您拥有有效的SSL/TLS证书。
建议在测试和评估情况下使用自签名证书,请运行 `gitea cert --host [HOST]` 以生成自签名证书
建议在测试和评估情况下使用自签名证书,請运行 `gitea cert --host [HOST]` 以生成自签名证书
如果您在服务器上使用阿帕奇(Apache)或Nginx,建议参考 [反向代理指南](reverse-proxies.md)。
要使用Gitea内置HTTPS支持,您必须编辑`app.ini`文件。
要使用Gitea内置HTTPS支持,您必須编辑`app.ini`文件。
```ini
[server]
@@ -25,13 +25,13 @@ CERT_FILE = cert.pem
KEY_FILE = key.pem
```
请注意,如果您的证书由第三方证书颁发机构签名(即不是自签名的),则 cert.pem 应包含证书链。服务器证书必须是 cert.pem 中的第一个条目,后跟中介(如果有)。不必包含根证书,因为连接客户端必须已经拥有根证书才能建立信任关系。要了解有关配置值的更多信息,请查看 [配置备忘单](../administration/config-cheat-sheet#server-server)。
請注意,如果您的证书由第三方证书颁发机构签名(即不是自签名的),则 cert.pem 應包含证书链。服务器证书必須是 cert.pem 中的第一个条目,后跟中介(如果有)。不必包含根证书,因為连接客户端必須已经拥有根证书才能建立信任关系。要了解有关配置值的更多信息,請查看 [配置备忘單](../administration/config-cheat-sheet#server-server)。
对于“CERT_FILE”或“KEY_FILE”字段,当文件路径是相对路径时,文件路径相对于“GITEA_CUSTOM”环境变量。它也可以是绝对路径。
對於“CERT_FILE”或“KEY_FILE”字段,当文件路径是相对路径时,文件路径相對於“GITEA_CUSTOM”环境变量。它也可以是绝对路径。
### 设置HTTP重定向
Gitea服务器仅支持监听一个端口;要重定向HTTP请求致HTTPS端口,您需要启用HTTP重定向服务:
Gitea服务器僅支持监听一个端口;要重定向HTTP請求致HTTPS端口,您需要启用HTTP重定向服务:
```ini
[server]
@@ -44,7 +44,7 @@ PORT_TO_REDIRECT = 3080
## 使用 ACME (默认: Let's Encrypt)
[ACME](https://tools.ietf.org/html/rfc8555) 是一种证书颁发机构标准协议,允许您自动请求和续订 SSL/TLS 证书。[Let`s Encrypt](https://letsencrypt.org/) 是使用此标准的免费公开信任的证书颁发机构服务器。仅实施“HTTP-01”和“TLS-ALPN-01”挑战。为了使 ACME 质询通过并验证您的域所有权,“80”端口(“HTTP-01”)或“443”端口(“TLS-ALPN-01”)上 gitea 域的外部流量必须由 gitea 实例提供服务。可能需要设置 [HTTP 重定向](#设置http重定向) 和端口转发才能正确路由外部流量。否则,到端口“80”的正常流量将自动重定向到 HTTPS。**您必须同意**ACME提供商的服务条款(默认为Let's Encrypt的 [服务条款](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
[ACME](https://tools.ietf.org/html/rfc8555) 是一种证书颁发机构标准协议,允许您自动請求和续订 SSL/TLS 证书。[Let`s Encrypt](https://letsencrypt.org/) 是使用此标准的免费公开信任的证书颁发机构服务器。僅实施“HTTP-01”和“TLS-ALPN-01”挑战。為了使 ACME 质询通過並驗證您的域所有权,“80”端口(“HTTP-01”)或“443”端口(“TLS-ALPN-01”)上 gitea 域的外部流量必須由 gitea 实例提供服务。可能需要设置 [HTTP 重定向](#设置http重定向) 和端口转发才能正确路由外部流量。否则,到端口“80”的正常流量将自动重定向到 HTTPS。**您必須同意**ACME提供商的服务条款(默认為Let's Encrypt的 [服务条款](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
使用默认 Let's Encrypt 的最小配置如下:
@@ -59,7 +59,7 @@ ACME_DIRECTORY=https
ACME_EMAIL=email@example.com
```
小型配置请使用 [smallstep CA](https://github.com/smallstep/certificates), 点击 [教程](https://smallstep.com/docs/tutorials/acme-challenge) 了解更多信息。
小型配置請使用 [smallstep CA](https://github.com/smallstep/certificates), 點擊 [教程](https://smallstep.com/docs/tutorials/acme-challenge) 了解更多信息。
```ini
[server]
@@ -74,11 +74,11 @@ ACME_DIRECTORY=https
ACME_EMAIL=email@example.com
```
要了解关于配置, 请访问 [配置备忘单](../administration/config-cheat-sheet.md#server-server)获取更多信息
要了解关于配置, 請访问 [配置备忘單](../administration/config-cheat-sheet.md#server-server)获取更多信息
## 使用反向代理服务器
按照 [reverse proxy guide](reverse-proxies.md) 的规则设置你的反向代理服务器
按照 [reverse proxy guide](reverse-proxies.md) 的規則设置你的反向代理服务器
然后,按照下面的向导启用 HTTPS:
@@ -86,4 +86,4 @@ ACME_EMAIL=email@example.com
- [apache2/httpd](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
- [caddy](https://caddyserver.com/docs/tls)
注意:仅在代理层启用 HTTPS 被称为 [TLS 终止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服务器接受传入的 TLS 连接,解密内容,然后将现在未加密的内容传递给 Gitea。只要代理和 Gitea 实例在同一台计算机上或在私有网络中的不同计算机上(代理暴露给外部网络),这通常是可以接受的。如果您的 Gitea 实例与代理隔离在公共网络上,或者如果您想要全端到端的加密,您还可以直接在 Gitea 中 [启用内置服务器的 HTTPS 支持](#使用内置服务器),并将连接转发到 HTTPS 上。
注意:僅在代理层启用 HTTPS 被稱為 [TLS 终止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服务器接受传入的 TLS 连接,解密内容,然后将現在未加密的内容传递给 Gitea。只要代理和 Gitea 实例在同一台计算机上或在私有网络中的不同计算机上(代理暴露给外部网络),这通常是可以接受的。如果您的 Gitea 实例与代理隔离在公共网络上,或者如果您想要全端到端的加密,您還可以直接在 Gitea 中 [启用内置服务器的 HTTPS 支持](#使用内置服务器),並将连接转发到 HTTPS 上。
@@ -8,17 +8,17 @@ aliases:
# 日志配置
Gitea 的日志配置主要由以下三种类型的组件组成:
Gitea 的日志配置主要由以下三种類型的组件组成:
- `[log]` 部分用于一般配置
- `[log.<mode-name>]` 部分用于配置不同的日志输出方式,也称为 "writer mode",模式名称同时也作为 "writer name"
- `[log]` 部分还可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日志记录器的配置
- `[log.<mode-name>]` 部分用于配置不同的日志输出方式,也稱為 "writer mode",模式名稱同时也作為 "writer name"
- `[log]` 部分還可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日志记录器的配置
默认情况下,已经有一个完全功能的日志输出,因此不需要重新定义。
## 收集日志以获取帮助
要收集日志以获取帮助和报告问题,请参阅 [需要帮助](help/support.md)。
要收集日志以获取帮助和报告问题,請参阅 [需要帮助](help/support.md)。
## `[log]` 部分
@@ -28,16 +28,16 @@ Gitea 的日志配置主要由以下三种类型的组件组成:
- `ROOT_PATH`:(默认值:**%(GITEA_WORK_DIR)/log**):日志文件的基本路径。
- `MODE`:(默认值:**console**):要用于默认日志记录器的日志输出列表。
- `LEVEL`:(默认值:**Info**):要持久化的最严重的日志事件,不区分大小写。可能的值为:`Trace`、`Debug`、`Info`、`Warn`、`Error`、`Fatal`。
- `STACKTRACE_LEVEL`:(默认值:**None**):对于此类及更严重的事件,将在记录时打印堆栈跟踪。
- `LEVEL`:(默认值:**Info**):要持久化的最严重的日志事件,不区分大小写。可能的值為:`Trace`、`Debug`、`Info`、`Warn`、`Error`、`Fatal`。
- `STACKTRACE_LEVEL`:(默认值:**None**):對於此类及更严重的事件,将在记录时打印堆栈跟踪。
它还可以包含以下子日志记录器:
它還可以包含以下子日志记录器:
- `logger.router.MODE`:(默认值:**,**):用于路由器日志记录器的日志输出列表。
- `logger.access.MODE`:(默认值:**_empty_**):用于访问日志记录器的日志输出列表。默认情况下,访问日志记录器被禁用。
- `logger.xorm.MODE`:(默认值:**,**):用于 XORM 日志记录器的日志输出列表。
将子日志记录器的模式设置为逗号(`,`)表示使用默认的全局 `MODE`。
将子日志记录器的模式设置為逗号(`,`)表示使用默认的全局 `MODE`。
## 快速示例
@@ -55,7 +55,7 @@ logger.router.MODE = ,
logger.xorm.MODE = ,
logger.access.MODE =
; 这是“控制台”模式的配置选项(由上面的 MODE=console 使用)
; 这是“控制台”模式的配置選项(由上面的 MODE=console 使用)
[log.console]
MODE = console
FLAGS = stdflags
@@ -63,11 +63,11 @@ PREFIX =
COLORIZE = true
```
这等同于将所有日志发送到控制台,并将默认的 Golang 日志也发送到控制台日志中。
这等同于将所有日志发送到控制台,並将默认的 Golang 日志也发送到控制台日志中。
这只是一个示例,默认情况下不需要将其写入配置文件中。
### 禁用路由日志并将一些访问日志记录到文件中
### 禁用路由日志並将一些访问日志记录到文件中
禁用路由日志,将访问日志(>=Warn)记录到 `access.log` 中:
@@ -82,7 +82,7 @@ LEVEL = Warn
FILE_NAME = access.log
```
### 为不同的模式设置不同的日志级别
### 為不同的模式设置不同的日志级别
将默认日志(>=Warn)记录到 `gitea.log` 中,将错误日志记录到 `file-error.log` 中:
@@ -111,29 +111,29 @@ Gitea 提供以下日志写入器:
某些配置适用于所有日志输出模式:
- `MODE` 是日志输出写入器的模式。它将默认为 ini 部分的模式名称。因此,`[log.console]` 将默认为 `MODE = console`。
- `MODE` 是日志输出写入器的模式。它将默认為 ini 部分的模式名稱。因此,`[log.console]` 将默认為 `MODE = console`。
- `LEVEL` 是此输出将记录的最低日志级别。
- `STACKTRACE_LEVEL` 是此输出将打印堆栈跟踪的最低日志级别。
- `COLORIZE` 对于 `console`,默认为 `true`,否则默认为 `false`。
- `COLORIZE` 對於 `console`,默认為 `true`,否则默认為 `false`。
#### `EXPRESSION`
`EXPRESSION` 表示日志事件必须匹配才能被输出写入器记录的正则表达式。
日志消息(去除颜色)或 `longfilename:linenumber:functionname` 必须匹配其中之一。
`EXPRESSION` 表示日志事件必須匹配才能被输出写入器记录的正则表达式。
日志消息(去除颜色)或 `longfilename:linenumber:functionname` 必須匹配其中之一。
注意:整个消息或字符串不需要完全匹配。
请注意,此表达式将在写入器的 goroutine 中运行,而不是在日志事件的 goroutine 中运行。
請注意,此表达式将在写入器的 goroutine 中运行,而不是在日志事件的 goroutine 中运行。
#### `FLAGS`
`FLAGS` 表示在每条消息之前打印的前置日志上下文信息。
它是一个逗号分隔的字符串集。值的顺序无关紧要。
它是一个逗号分隔的字符串集。值的顺序無关紧要。
默认值为 `stdflags`(= `date,time,medfile,shortfuncname,levelinitial`)。
默认值為 `stdflags`(= `date,time,medfile,shortfuncname,levelinitial`)。
可能的值为:
可能的值為:
- `none` 或 `,` - 无标志。
- `none` 或 `,` - 無标志。
- `date` - 当地时区的日期:`2009/01/23`。
- `time` - 当地时区的时间:`01:23:23`。
- `microseconds` - 微秒精度:`01:23:23.123123`。假定有时间。
@@ -150,13 +150,13 @@ Gitea 提供以下日志写入器:
### Console 模式
在此模式下,日志记录器将将日志消息转发到 Gitea 进程附加的 stdout 和 stderr 流。
在此模式下,日志记录器将将日志消息转发到 Gitea 進程附加的 stdout 和 stderr 流。
对于 console 模式的日志记录器,如果不在 Windows 上,或者 Windows 终端可以设置为 ANSI 模式,或者是 cygwin 或 Msys 管道,则 `COLORIZE` 默认为 `true`。
對於 console 模式的日志记录器,如果不在 Windows 上,或者 Windows 终端可以设置為 ANSI 模式,或者是 cygwin 或 Msys 管道,则 `COLORIZE` 默认為 `true`。
设置:
- `STDERR`:**false**:日志记录器是否应将日志打印到 `stderr` 而不是 `stdout`。
- `STDERR`:**false**:日志记录器是否應将日志打印到 `stderr` 而不是 `stdout`。
### File 模式
@@ -164,100 +164,100 @@ Gitea 提供以下日志写入器:
设置:
- `FILE_NAME`:要将日志事件写入的文件,相对于 `ROOT_PATH`,默认为 `%(ROOT_PATH)/gitea.log`。异常情况:访问日志默认为 `%(ROOT_PATH)/access.log`。
- `MAX_SIZE_SHIFT`:**28**:单个文件的最大大小位移。28 表示 256Mb。详细信息见下文。
- `FILE_NAME`:要将日志事件写入的文件,相對於 `ROOT_PATH`,默认為 `%(ROOT_PATH)/gitea.log`。异常情况:访问日志默认為 `%(ROOT_PATH)/access.log`。
- `MAX_SIZE_SHIFT`:**28**:單个文件的最大大小位移。28 表示 256Mb。详细信息见下文。
- `LOG_ROTATE` **true**:是否轮转日志文件。
- `DAILY_ROTATE`:**true**:是否每天旋转日志。
- `MAX_DAYS`:**7**:在此天数之后删除旋转的日志文件。
- `COMPRESS`:**true**:默认情况下是否使用 gzip 压缩旧的日志文件。
- `COMPRESSION_LEVEL`:**-1**:压缩级别。详细信息见下文。
`MAX_SIZE_SHIFT` 通过将给定次数左移 1 (`1 << x`) 来定义文件的最大大小。
在 v1.17.3 版本时的确切行为可以在[这里](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`MAX_SIZE_SHIFT` 通過将给定次数左移 1 (`1 << x`) 来定义文件的最大大小。
在 v1.17.3 版本时的确切行為可以在[这里](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`COMPRESSION_LEVEL` 的有用值范围从 1 到(包括)9,其中较高的数字表示更好的压缩。
请注意,更好的压缩可能会带来更高的资源使用。
必须在前面加上 `-` 符号。
請注意,更好的压缩可能会带来更高的资源使用。
必須在前面加上 `-` 符号。
### Conn 模式
在此模式下,日志记录器将通过网络套接字发送日志消息。
在此模式下,日志记录器将通過网络套接字发送日志消息。
设置:
- `ADDR`:**:7020**:设置要连接的地址。
- `PROTOCOL`:**tcp**:设置协议,可以是 "tcp"、"unix" 或 "udp"。
- `RECONNECT`:**false**:在连接丢失时尝试重新连接。
- `RECONNECT_ON_MSG`:**false**:为每条消息重新连接主机。
- `RECONNECT_ON_MSG`:**false**:為每条消息重新连接主机。
### "Router" 日志记录器
当 Gitea 的路由处理程序工作时,Router 日志记录器记录以下消息类型:
当 Gitea 的路由处理程序工作时,Router 日志记录器记录以下消息類型:
- `started` 消息将以 TRACE 级别记录
- `polling`/`completed` 路由将以 INFO 级别记录。异常情况:"/assets" 静态资源请求也会以 TRACE 级别记录。
- `polling`/`completed` 路由将以 INFO 级别记录。异常情况:"/assets" 静态资源請求也会以 TRACE 级别记录。
- `slow` 路由将以 WARN 级别记录
- `failed` 路由将以 WARN 级别记录
### "XORM" 日志记录器
为了使 XORM 输出 SQL 日志,还应将 `[database]` 部分中的 `LOG_SQL` 设置为 `true`。
為了使 XORM 输出 SQL 日志,還應将 `[database]` 部分中的 `LOG_SQL` 设置為 `true`。
### "Access" 日志记录器
"Access" 日志记录器是自 Gitea 1.9 版本以来的新日志记录器。它提供了符合 NCSA Common Log 标准的日志格式。虽然它具有高度可配置性,但在更改其模板时应谨慎。此日志记录器的主要好处是,Gitea 现在可以使用标准日志格式记录访问日志,因此可以使用标准工具进行分析。
"Access" 日志记录器是自 Gitea 1.9 版本以来的新日志记录器。它提供了符合 NCSA Common Log 标准的日志格式。虽然它具有高度可配置性,但在更改其模板时應谨慎。此日志记录器的主要好处是,Gitea 現在可以使用标准日志格式记录访问日志,因此可以使用标准工具進行分析。
您可以通过使用 `logger.access.MODE = ...` 来启用此日志记录器。
您可以通過使用 `logger.access.MODE = ...` 来启用此日志记录器。
如果需要,可以通过更改 `ACCESS_LOG_TEMPLATE` 的值来更改 "Access" 日志记录器的格式。
如果需要,可以通過更改 `ACCESS_LOG_TEMPLATE` 的值来更改 "Access" 日志记录器的格式。
请注意,访问日志记录器将以 `INFO` 级别记录,将此日志记录器的 `LEVEL` 设置为 `WARN` 或更高级别将导致不记录访问日志。
請注意,访问日志记录器将以 `INFO` 级别记录,将此日志记录器的 `LEVEL` 设置為 `WARN` 或更高级别将导致不记录访问日志。
#### ACCESS_LOG_TEMPLATE
此值表示一个 Go 模板。其默认值为
此值表示一个 Go 模板。其默认值為
```tmpl
{{.Ctx.RemoteHost}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.URL.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}" "{{.Ctx.Req.UserAgent}}"`
```
模板接收以下选项:
模板接收以下選项:
- `Ctx` 是 `context.Context`
- `Identity` 是 `SignedUserName`,如果用户未登录,则为 "-"
- `Start` 是请求的开始时间
- `Identity` 是 `SignedUserName`,如果使用者未登入,则為 "-"
- `Start` 是請求的开始时间
- `ResponseWriter` 是 `http.ResponseWriter`
更改此模板时必须小心,因为它在标准的 panic 恢复陷阱之外运行。此模板应该尽可能简单,因为它会为每个请求运行一次。
更改此模板时必須小心,因為它在标准的 panic 恢复陷阱之外运行。此模板應該尽可能简單,因為它会為每个請求运行一次。
## 释放和重新打开、暂停和恢复日志记录
如果您在 Unix 上运行,您可能希望释放和重新打开日志以使用 `logrotate` 或其他工具。
可以通过向运行中的进程发送 `SIGUSR1` 信号或运行 `gitea manager logging release-and-reopen` 命令来强制 Gitea 释放并重新打开其日志文件和连接。
可以通過向运行中的進程发送 `SIGUSR1` 信号或运行 `gitea manager logging release-and-reopen` 命令来强制 Gitea 释放並重新打开其日志文件和连接。
或者,您可能希望暂停和恢复日志记录 - 可以通过使用 `gitea manager logging pause` 和 `gitea manager logging resume` 命令来实现。请注意,当日志记录暂停时,低于 INFO 级别的日志事件将不会存储,并且只会存储有限数量的事件。在暂停时,日志记录可能会阻塞,尽管是暂时性的,但会大大减慢 Gitea 的运行速度,因此建议仅暂停很短的时间。
或者,您可能希望暂停和恢复日志记录 - 可以通過使用 `gitea manager logging pause` 和 `gitea manager logging resume` 命令来实現。請注意,当日志记录暂停时,低于 INFO 级别的日志事件将不会存儲,並且只会存儲有限数量的事件。在暂停时,日志记录可能会阻塞,尽管是暂时性的,但会大大减慢 Gitea 的运行速度,因此建议僅暂停很短的时间。
### 在 Gitea 运行时添加和删除日志记录
可以使用 `gitea manager logging add` 和 `remove` 子命令在 Gitea 运行时添加和删除日志记录。
此功能只能调整正在运行的日志系统,不能用于启动未初始化的访问或路由日志记录器。如果您希望启动这些系统,建议调整 app.ini 并(优雅地)重新启动 Gitea 服务。
此功能只能调整正在运行的日志系统,不能用于启动未初始化的访问或路由日志记录器。如果您希望启动这些系统,建议调整 app.ini 並(优雅地)重新启动 Gitea 服务。
这些命令的主要目的是在运行中的系统上轻松添加临时日志记录器,以便调查问题,因为重新启动可能会导致问题消失。
这些命令的主要目的是在运行中的系统上轻松添加临时日志记录器,以便调查问题,因為重新启动可能会导致问题消失。
## 使用 `logrotate` 而不是内置的日志轮转
Gitea 包含内置的日志轮转功能,对于大多数部署来说应该已经足够了。但是,如果您想使用 `logrotate` 工具:
Gitea 包含内置的日志轮转功能,對於大多数部署来说應該已经足够了。但是,如果您想使用 `logrotate` 工具:
- 在 `app.ini` 中将 `LOG_ROTATE` 设置为 `false`,禁用内置的日志轮转。
- 安装 `logrotate`。
- 根据部署要求配置 `logrotate`,有关配置语法细节,请参阅 `man 8 logrotate`。
在 `postrotate/endscript` 块中通过 `kill -USR1` 或 `kill -10` 向 `gitea` 进程本身发送 `USR1` 信号,
- 在 `app.ini` 中将 `LOG_ROTATE` 设置為 `false`,禁用内置的日志轮转。
- 安裝 `logrotate`。
- 根据部署要求配置 `logrotate`,有关配置语法细节,請参阅 `man 8 logrotate`。
在 `postrotate/endscript` 块中通過 `kill -USR1` 或 `kill -10` 向 `gitea` 進程本身发送 `USR1` 信号,
或者运行 `gitea manager logging release-and-reopen`(使用适当的环境设置)。
确保配置适用于由 Gitea 日志记录器生成的所有文件,如上述部分所述。
- 始终使用 `logrotate /etc/logrotate.conf --debug` 来测试您的配置。
- 如果您正在使用 Docker 并从容器外部运行,您可以使用
- 如果您正在使用 Docker 並从容器外部运行,您可以使用
`docker exec -u $OS_USER $CONTAINER_NAME sh -c 'gitea manager logging release-and-reopen'`
或 `docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 进程本身发送 `USR1` 信号。
或 `docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 進程本身发送 `USR1` 信号。
下一个 `logrotate` 作业将包括您的配置,因此不需要重新启动。
您还可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加载 `logrotate`。
您還可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加载 `logrotate`。
@@ -8,8 +8,8 @@ aliases:
# 邮件模板
为了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目录](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案,Gitea 将使用内部模板作为默认模板。
為了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目錄](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案,Gitea 将使用内部模板作為默认模板。
自定义模板在 Gitea 启动时加载。对它们的更改在 Gitea 重新启动之前不会被识别。
@@ -17,42 +17,42 @@ aliases:
目前,以下通知事件使用模板:
| 操作名称 | 用途 |
| 操作名稱 | 用途 |
| ---------- | ---------------------------------------------------------------------- |
| `new` | 创建了新的工单或合并请求。 |
| `comment` | 在现有工单或合并请求中创建了新的评论。 |
| `close` | 关闭了工单或合并请求。 |
| `reopen` | 重新打开了工单或合并请求。 |
| `review` | 在合并请求中进行审查的首要评论。 |
| `approve` | 对合并请求进行批准的首要评论。 |
| `reject` | 对合并请求提出更改请求的审查的首要评论。 |
| `code` | 关于合并请求的代码的单个评论。 |
| `assigned` | 用户被分配到工单或合并请求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对应类别的模板不存在时使用的模板。 |
| `new` | 建立了新的工單或合並請求。 |
| `comment` | 在現有工單或合並請求中建立了新的评论。 |
| `close` | 关闭了工單或合並請求。 |
| `reopen` | 重新打开了工單或合並請求。 |
| `review` | 在合並請求中進行审查的首要评论。 |
| `approve` | 对合並請求進行批准的首要评论。 |
| `reject` | 对合並請求提出更改請求的审查的首要评论。 |
| `code` | 关于合並請求的代码的單个评论。 |
| `assigned` | 使用者被分配到工單或合並請求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对應类别的模板不存在时使用的模板。 |
特定消息类型的模板路径为:
特定消息類型的模板路径為:
```sh
custom/templates/mail/{操作类型}/{操作名称}.tmpl
custom/templates/mail/{操作類型}/{操作名稱}.tmpl
```
其中 `{操作类型}` 是 `issue` 或 `pull`(针对合并请求),`{操作名称}` 是上述列出的操作名称之一。
其中 `{操作類型}` 是 `issue` 或 `pull`(针对合並請求),`{操作名稱}` 是上述列出的操作名稱之一。
例如,有关合并请求中的评论的电子邮件的特定模板是:
例如,有关合並請求中的评论的电子邮件的特定模板是:
```sh
custom/templates/mail/pull/comment.tmpl
```
然而,并不需要为每个操作类型/名称组合创建模板。
使用回退系统来选择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
然而,並不需要為每个操作類型/名稱组合建立模板。
使用回退系统来選择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
- 所需**操作类型**和**操作名称**的特定模板。
- 操作类型为 `issue` 和所需**操作名称**的模板。
- 所需**操作类型**和操作名称为 `default` 的模板。
- 操作类型为` issue` 和操作名称为 `default` 的模板。
- 所需**操作類型**和**操作名稱**的特定模板。
- 操作類型為 `issue` 和所需**操作名稱**的模板。
- 所需**操作類型**和操作名稱為 `default` 的模板。
- 操作類型為` issue` 和操作名稱為 `default` 的模板。
唯一必需的模板是操作类型为 `issue` 操作名称为 `default` 的模板,除非用户在 `custom` 目录中覆盖了它。
唯一必需的模板是操作類型為 `issue` 操作名稱為 `default` 的模板,除非使用者在 `custom` 目錄中覆盖了它。
## 模板语法
@@ -70,44 +70,44 @@ custom/templates/mail/pull/comment.tmpl
用于邮件正文的文本和宏
```
指定 _主题_ 部分是可选的(因此也是虚线分隔符)。在使用时,_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
指定 _主题_ 部分是可選的(因此也是虚线分隔符)。在使用时,_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
_主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,并提供了为每个通知组装的 _元数据上下文_。上下文包含以下元素:
_主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,並提供了為每个通知组装的 _元数据上下文_。上下文包含以下元素:
| 名称 | 类型 | 可用性 | 用途 |
| 名稱 | 類型 | 可用性 | 用途 |
| ------------------ | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.FallbackSubject` | string | 始终可用 | 默认主题行。参见下文。 |
| `.Subject` | string | 仅在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工单、合并请求或评论的消息,从 Markdown 解析为 HTML 并进行了清理。请勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工单、合并请求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工单(或合并请求)。要获取特定于合并请求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工单 _不是_ 合并请求,则该字段将为 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工单或合并请求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合并请求关联(即 `.Issue.PullRequest` 不为 `nil` ),则为 `true`。 |
| `.Repo` | string | 始终可用 | 仓库的名称,包括所有者名称(例如 `mike/stuff`) |
| `.User` | models.User | 始终可用 | 事件来源仓库的所有者。要获取用户名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 执行触发通知事件的操作的用户。要获取用户名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知仅是因为在评论中提到了用户而生成的,并且收件人未订阅源,则为 `true`。如果收件人已订阅工单或仓库,则为 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工单或合并请求创建之外的其他内容,则为 `Re:`;否则为空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"` 或 `"pull"`。它将与实际的 _操作类型_ 对应,与选择的模板无关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作类型之一(`new` ,`comment` 等),并与选择的模板对应。 |
| `.Subject` | string | 僅在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工單、合並請求或评论的消息,从 Markdown 解析為 HTML 並進行了清理。請勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工單、合並請求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工單(或合並請求)。要获取特定于合並請求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工單 _不是_ 合並請求,则該字段将為 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工單或合並請求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合並請求关联(即 `.Issue.PullRequest` 不為 `nil` ),则為 `true`。 |
| `.Repo` | string | 始终可用 | 存放庫的名稱,包括所有者名稱(例如 `mike/stuff`) |
| `.User` | models.User | 始终可用 | 事件来源存放庫的所有者。要获取使用者名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 執行触发通知事件的操作的使用者。要获取使用者名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知僅是因為在评论中提到了使用者而生成的,並且收件人未订阅源,则為 `true`。如果收件人已订阅工單或存放庫,则為 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工單或合並請求建立之外的其他内容,则為 `Re:`;否则為空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"` 或 `"pull"`。它将与实际的 _操作類型_ 对應,与選择的模板無关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作類型之一(`new` ,`comment` 等),並与選择的模板对應。 |
| `.ReviewComments` | []models.Comment | 始终可用 | 审查中的代码评论列表。评论文本将在 `.RenderedContent` 中,引用的代码将在 `.Patch` 中。 |
所有名称区分大小写。
所有名稱区分大小写。
### 模板中的主题部分
用于邮件主题的模板引擎是 Golang 的 [`text/template`](https://go.dev/pkg/text/template/)。
有关语法的详细信息,请参阅链接的文档。
有关语法的详细信息,請参阅链接的文檔。
主题构建的步骤如下:
- 根据通知类型和可用的模板选择一个模板。
- 解析并解析模板(例如,将 `{{.Issue.Index}}` 转换为工单或合并请求的编号)。
- 将所有空格字符(例如 `TAB`,`LF` 等)转换为普通空格。
- 根据通知類型和可用的模板選择一个模板。
- 解析並解析模板(例如,将 `{{.Issue.Index}}` 转换為工單或合並請求的编号)。
- 将所有空格字符(例如 `TAB`,`LF` 等)转换為普通空格。
- 删除所有前导、尾随和多余的空格。
- 将字符串截断为前 256 个字母(字符)。
- 将字符串截断為前 256 个字母(字符)。
如果最终结果为空字符串,**或者**没有可用的主题模板(即所选模板不包含主题部分),将使用 Gitea 的**内部默认值**。
如果最终结果為空字符串,**或者**没有可用的主题模板(即所選模板不包含主题部分),将使用 Gitea 的**内部默认值**。
内部默认(回退)主题相当于:
@@ -117,29 +117,29 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
例如:`Re: [mike/stuff] New color palette (#38)`
即使存在有效的主题模板,Gitea 的默认主题也可以在模板的元数据中作为 `.FallbackSubject` 找到。
即使存在有效的主题模板,Gitea 的默认主题也可以在模板的元数据中作為 `.FallbackSubject` 找到。
### 模板中的邮件正文部分
用于邮件正文的模板引擎是 Golang 的 [`html/template`](https://go.dev/pkg/html/template/)。
有关语法的详细信息,请参阅链接的文档。
有关语法的详细信息,請参阅链接的文檔。
邮件正文在邮件主题之后进行解析,因此还有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈现的主题。
邮件正文在邮件主题之后進行解析,因此還有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈現的主题。
期望的结果是 HTML(包括结构元素,如`<html>`,`<body>`等)。可以通过 `<style>` 块、`class` 和 `style` 属性进行样式设置。但是,`html/template` 会进行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
期望的结果是 HTML(包括结构元素,如`<html>`,`<body>`等)。可以通過 `<style>` 块、`class` 和 `style` 属性進行样式设置。但是,`html/template` 会進行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必须放置在 `custom/mail` 下,并相对于该目录引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`。
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必須放置在 `custom/mail` 下,並相對於該目錄引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`。
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通过剥离 HTML 标记来获取文本版本。
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通過剥离 HTML 标记来获取文本版本。
## 故障排除
邮件的呈现方式直接取决于邮件应用程序的功能。许多邮件客户端甚至不支持 HTML,因此显示生成邮件中包含的文本版本。
邮件的呈現方式直接取决于邮件應用程序的功能。许多邮件客户端甚至不支持 HTML,因此显示生成邮件中包含的文本版本。
如果模板无法呈现,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈现了任何内容,则将使用该内容,忽略其他内容。
如果模板無法呈現,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈現了任何内容,则将使用該内容,忽略其他内容。
如果遇到问题,请检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
如果遇到问题,請检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
## 示例
@@ -148,7 +148,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
```html
[{{.Repo}}] @{{.Doer.Name}}
{{if eq .ActionName "new"}}
创建了
建立了
{{else if eq .ActionName "comment"}}
评论了
{{else if eq .ActionName "close"}}
@@ -159,9 +159,9 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
更新了
{{end}}
{{if eq .ActionType "issue"}}
工单
工單
{{else}}
合并请求
合並請求
{{end}}
#{{.Issue.Index}}: {{.Issue.Title}}
------------
@@ -175,7 +175,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
<body>
{{if .IsMention}}
<p>
您收到此邮件是因为 @{{.Doer.Name}} 提到了您。
您收到此邮件是因為 @{{.Doer.Name}} 提到了您。
</p>
{{end}}
<p>
@@ -185,7 +185,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
({{.Doer.FullName}})
{{end}}
{{if eq .ActionName "new"}}
创建了
建立了
{{else if eq .ActionName "close"}}
关闭了
{{else if eq .ActionName "reopen"}}
@@ -209,11 +209,11 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
</html>
```
该模板将生成以下内容:
該模板将生成以下内容:
### 主题
> [mike/stuff] @rhonda 在合并请求 #38 上进行了评论:New color palette
> [mike/stuff] @rhonda 在合並請求 #38 上進行了评论:New color palette
### 邮件正文
@@ -231,18 +231,18 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
## 高级用法
模板系统包含一些函数,可用于进一步处理和格式化消息。以下是其中一些函数的列表:
模板系统包含一些函数,可用于進一步处理和格式化消息。以下是其中一些函数的列表:
| 函数名 | 参数 | 可用于 | 用法 |
| 函数名 | 參數 | 可用于 | 用法 |
| ---------------- | ----------- | ---------- | ------------------------------------------------ |
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常为 "Gitea" |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常為 "Gitea" |
| `AppDomain` | - | 任何地方 | Gitea 的主机名 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断为指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 仅正文部分 | 通过删除其中的危险 HTML 标签对文本进行清理 |
| `SafeHTML` | string | 仅正文部分 | 将输入作为 HTML 处理;可用于输出原始的 HTML 内容 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断為指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 僅正文部分 | 通過删除其中的危险 HTML 標籤对文本進行清理 |
| `SafeHTML` | string | 僅正文部分 | 将输入作為 HTML 处理;可用于输出原始的 HTML 内容 |
这些都是 _函数_,而不是元数据,因此必须按以下方式使用:
这些都是 _函数_,而不是元数据,因此必須按以下方式使用:
```html
像这样使用: {{SanitizeHTML "Escape<my
@@ -6,11 +6,11 @@ aliases:
- /zh-tw/repo-indexer
---
# 仓库索引器
# 存放庫索引器
## 设置仓库索引器
## 设置存放庫索引器
通过在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中启用此功能,Gitea 可以通过仓库的文件进行搜索:
通過在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中启用此功能,Gitea 可以通過存放庫的文件進行搜索:
```ini
[indexer]
@@ -22,29 +22,29 @@ REPO_INDEXER_INCLUDE =
REPO_INDEXER_EXCLUDE = resources/bin/**
```
请记住,索引内容可能会消耗大量系统资源,特别是在首次创建索引或全局更新索引时(例如升级 Gitea 之后)。
請记住,索引内容可能会消耗大量系统资源,特别是在首次建立索引或全局更新索引时(例如升级 Gitea 之后)。
### 按大小选择要索引的文件
### 按大小選择要索引的文件
`MAX_FILE_SIZE` 选项将使索引器跳过所有大于指定值的文件。
`MAX_FILE_SIZE` 選项将使索引器跳過所有大于指定值的文件。
### 按路径选择要索引的文件
### 按路径選择要索引的文件
Gitea 使用 [`gobwas/glob` 库](https://github.com/gobwas/glob) 中的 glob 模式匹配来选择要包含在索引中的文件。
Gitea 使用 [`gobwas/glob` 库](https://github.com/gobwas/glob) 中的 glob 模式匹配来選择要包含在索引中的文件。
限制文件列表可以防止索引被派生或无关的文件(例如 lss、sym、map 等)污染,从而使搜索结果更相关。这还有助于减小索引的大小。
限制文件列表可以防止索引被派生或無关的文件(例如 lss、sym、map 等)污染,从而使搜索结果更相关。这還有助于减小索引的大小。
`REPO_INDEXER_EXCLUDE_VENDORED`(默认值为 true)将排除供应商文件不包含在索引中。
`REPO_INDEXER_EXCLUDE_VENDORED`(默认值為 true)将排除供應商文件不包含在索引中。
`REPO_INDEXER_INCLUDE`(默认值为空)是一个逗号分隔的 glob 模式列表,用于在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`(默认值为空)是一个逗号分隔的 glob 模式列表,用于从索引中**排除**的文件。与该列表匹配的文件将不会被索引。`REPO_INDEXER_EXCLUDE` 优先于 `REPO_INDEXER_INCLUDE`。
`REPO_INDEXER_INCLUDE`(默认值為空)是一个逗号分隔的 glob 模式列表,用于在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`(默认值為空)是一个逗号分隔的 glob 模式列表,用于从索引中**排除**的文件。与該列表匹配的文件将不会被索引。`REPO_INDEXER_EXCLUDE` 优先于 `REPO_INDEXER_INCLUDE`。
模式匹配工作方式如下:
- 要匹配所有带有 `.txt` 扩展名的文件,无论在哪个目录中,请使用 `**.txt`。
- 要匹配仅在仓库的根级别中具有 `.txt` 扩展名的所有文件,请使用 `*.txt`。
- 要匹配 `resources/bin` 目录及其子目录中的所有文件,请使用 `resources/bin/**`。
- 要匹配位于 `resources/bin` 目录下的所有文件,请使用 `resources/bin/*`。
- 要匹配所有名为 `Makefile` 的文件,请使用 `**Makefile`。
- 匹配目录没有效果;模式 `resources/bin` 不会包含/排除该目录中的文件;`resources/bin/**` 会。
- 所有文件和模式都规范化为小写,因此 `**Makefile`、`**makefile` 和 `**MAKEFILE` 是等效的。
- 要匹配所有带有 `.txt` 扩展名的文件,無论在哪个目錄中,請使用 `**.txt`。
- 要匹配僅在存放庫的根级别中具有 `.txt` 扩展名的所有文件,請使用 `*.txt`。
- 要匹配 `resources/bin` 目錄及其子目錄中的所有文件,請使用 `resources/bin/**`。
- 要匹配位于 `resources/bin` 目錄下的所有文件,請使用 `resources/bin/*`。
- 要匹配所有名為 `Makefile` 的文件,請使用 `**Makefile`。
- 匹配目錄没有效果;模式 `resources/bin` 不会包含/排除該目錄中的文件;`resources/bin/**` 会。
- 所有文件和模式都规范化為小写,因此 `**Makefile`、`**makefile` 和 `**MAKEFILE` 是等效的。
@@ -12,26 +12,26 @@ aliases:
1. 在您的 `app.ini` 文件中添加配置 `[server] ROOT_URL = https://git.example.com/`
2. 将 `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo`
3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`的请求应该被传递给 `http://gitea:3000/a%2Fb`。
3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`的請求應該被传递给 `http://gitea:3000/a%2Fb`。
4. 确保 `Host` 和 `X-Forwarded-Proto` 头被正确的传递给 Gitea,使 Gitea 可以看到正在访问的真实 URL。
## 使用子路径
通常,**不推荐**将 Gitea 放到子路径。人们很少使用此配置,并且在极少数情况下可能会出现一些问题。
通常,**不推荐**将 Gitea 放到子路径。人们很少使用此配置,並且在极少数情况下可能会出現一些问题。
为了让 Gitea 在子路径工作(例如:`https://common.example.com/gitea/`),需要在上面的通用配置之外进行一些额外的配置:
為了让 Gitea 在子路径工作(例如:`https://common.example.com/gitea/`),需要在上面的通用配置之外進行一些额外的配置:
1. 在 `app.ini` 文件中使用配置 `[server] ROOT_URL = https://common.example.com/gitea/`。
2. 将 `https://common.example.com/gitea/foo` 反向代理到 `http://gitea:3000/foo`。
3. 容器映像注册表需要在根目录级别有一个固定的子路径 `v2`,您必须做下列配置:
3. 容器映像註冊表需要在根目錄级别有一个固定的子路径 `v2`,您必須做下列配置:
- 将 `https://common.example.com/v2` 反向代理到 `http://gitea:3000/v2`。
- 确保 URI 和标头也被正确的传递(见上面的通用配置)
## 使用 Nginx 作为反向代理服务
## 使用 Nginx 作為反向代理服务
如果您想使用 Nginx 作为 Gitea 的反向代理服务,您可以参照以下 `nginx.conf` 配置中 `server` 的 `http` 部分。
如果您想使用 Nginx 作為 Gitea 的反向代理服务,您可以参照以下 `nginx.conf` 配置中 `server` 的 `http` 部分。
确保 `client_max_body_size` 足够大,否则在上传大文件时会出现 "client_max_body_size" 错误。
确保 `client_max_body_size` 足够大,否则在上传大文件时会出現 "client_max_body_size" 错误。
```nginx
server {
@@ -49,9 +49,9 @@ server {
}
```
## 使用 Nginx 作为反向代理服务并将 Gitea 路由至一个子路径
## 使用 Nginx 作為反向代理服务並将 Gitea 路由至一个子路径
如果您已经有一个域名并且想与 Gitea 共享该域名,您可以增加以下 `nginx.conf` 配置中 `server` 的 `http` 部分,为 Gitea 添加路由规则:
如果您已经有一个域名並且想与 Gitea 共享該域名,您可以增加以下 `nginx.conf` 配置中 `server` 的 `http` 部分,為 Gitea 添加路由規則:
```nginx
server {
@@ -64,7 +64,7 @@ server {
rewrite ^(/gitea)?(/.*) $2 break;
proxy_pass http://127.0.0.1:3000$uri;
# 其他的常规 HTTP 表头,见上面“使用 Nginx 作为反向代理服务”小节的配置
# 其他的常规 HTTP 表头,见上面“使用 Nginx 作為反向代理服务”小节的配置
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
@@ -75,27 +75,27 @@ server {
}
```
然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必須**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
## 使用 Nginx 直接提供静态资源
我们可以通过将资源分为静态和动态两种类型来调节性能。
我们可以通過将资源分為静态和动态两种類型来调节性能。
CSS 文件、JavaScript 文件、图片和字体是静态内容。首页、仓库视图和工单列表是动态内容。
CSS 文件、JavaScript 文件、图片和字體是静态内容。首页、存放庫视图和工單列表是动态内容。
Nginx 可以直接提供静态资源,并且只代理动态资源请求给 Gitea。
Nginx 为提供静态内容进行了优化,而代理大响应可能与这一优化行为相反。
Nginx 可以直接提供静态资源,並且只代理动态资源請求给 Gitea。
Nginx 為提供静态内容進行了优化,而代理大響應可能与这一优化行為相反。
(见[https://serverfault.com/q/587386](https://serverfault.com/q/587386))
将 Gitea 源代码仓库的一个快照下载到 `/path/to/gitea`。
在此之后,在本地仓库目录运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/` 目录感兴趣,您可以删除剩下的其他目录。
(为了生成静态资源,您需要安装一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`)
将 Gitea 源代码存放庫的一个快照下载到 `/path/to/gitea`。
在此之后,在本地存放庫目錄运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/` 目錄感兴趣,您可以删除剩下的其他目錄。
(為了生成静态资源,您需要安裝一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`)
取决于您的用户量的大小,您可以将流量分离到两个不同的服务器,或者为静态资源配置一个 cdn。
取决于您的使用者量的大小,您可以将流量分离到两个不同的服务器,或者為静态资源配置一个 cdn。
### 单服务器节点,单域名
### 單服务器节点,單域名
将 `[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件,并配置 nginx:
将 `[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件,並配置 nginx:
```nginx
server {
@@ -114,7 +114,7 @@ server {
### 双服务器节点,双域名
将 `[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 写入您的 Gitea 配置文件,并配置 nginx:
将 `[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 写入您的 Gitea 配置文件,並配置 nginx:
```nginx
# 运行 Gitea 的服务器
@@ -144,9 +144,9 @@ server {
}
```
## 使用 Apache HTTPD 作为反向代理服务
## 使用 Apache HTTPD 作為反向代理服务
如果您想使用 Apache HTTPD 作为 Gitea 的反向代理服务,您可以为您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下):
如果您想使用 Apache HTTPD 作為 Gitea 的反向代理服务,您可以為您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目錄下):
```apacheconf
<VirtualHost *:80>
@@ -159,11 +159,11 @@ server {
</VirtualHost>
```
注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`
注:必須启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`
## 使用 Apache HTTPD 作为反向代理服务并将 Gitea 路由至一个子路径
## 使用 Apache HTTPD 作為反向代理服务並将 Gitea 路由至一个子路径
如果您已经有一个域名并且想与 Gitea 共享该域名,您可以增加以下配置为 Gitea 添加路由规则(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下):
如果您已经有一个域名並且想与 Gitea 共享該域名,您可以增加以下配置為 Gitea 添加路由規則(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目錄下):
```
<VirtualHost *:80>
@@ -193,13 +193,13 @@ server {
</VirtualHost>
```
然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必須**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`
注:必須启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`
## 使用 Caddy 作为反向代理服务
## 使用 Caddy 作為反向代理服务
如果您想使用 Caddy 作为 Gitea 的反向代理服务,您可以在 `Caddyfile` 中添加如下配置:
如果您想使用 Caddy 作為 Gitea 的反向代理服务,您可以在 `Caddyfile` 中添加如下配置:
```
git.example.com {
@@ -207,9 +207,9 @@ git.example.com {
}
```
## 使用 Caddy 作为反向代理服务并将 Gitea 路由至一个子路径
## 使用 Caddy 作為反向代理服务並将 Gitea 路由至一个子路径
如果您已经有一个域名并且想与 Gitea 共享该域名,您可以在您的 `Caddyfile` 文件中增加以下配置,为 Gitea 添加路由规则:
如果您已经有一个域名並且想与 Gitea 共享該域名,您可以在您的 `Caddyfile` 文件中增加以下配置,為 Gitea 添加路由規則:
```
git.example.com {
@@ -220,23 +220,23 @@ git.example.com {
}
```
然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必須**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
## 使用 IIS 作为反向代理服务
## 使用 IIS 作為反向代理服务
如果您想使用 IIS 作为 Gitea 的反向代理服务,你需要为 IIS 设置 URL 重写来作为反向代理。
如果您想使用 IIS 作為 Gitea 的反向代理服务,你需要為 IIS 设置 URL 重写来作為反向代理。
1. 在 IIS 中设置一个空网页,比如命名为 `Gitea Proxy`。
2. 根据[微软社区中为 IIS 设置 URL 重写的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前两步进行配置,也就是:
1. 在 IIS 中设置一个空网页,比如命名為 `Gitea Proxy`。
2. 根据[微软社区中為 IIS 设置 URL 重写的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前两步進行配置,也就是:
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安装 Application Request Routing(简称 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件。
- 一但这个模块被安装到 IIS 上,你将会在 IIS 管理控制台看到一个叫做 URL Rewrite 的新图标。
- 打开 IIS 管理控制台,在左边的列表中点击 `Gitea Proxy` 网页。在中间选中并且双击 URL Rewrite 的图标来加载 URL 重写的面板。
- 在管理控制台的右边选择 `Add Rule` 操作,并且在 `Inbound and Outbound Rules` 分类中选择 `Reverse Proxy Rule`。
- 在 Inbound Rules 中, 将 server name 设置为 Gitea 正在运行的主机以及对应端口。例如,如果你在 localhost 的 3000 端口上运行 Gitea,则设置为 `127.0.0.1:3000`。
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安裝 Application Request Routing(简稱 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件。
- 一但这个模組被安裝到 IIS 上,你将会在 IIS 管理控制台看到一个叫做 URL Rewrite 的新图标。
- 打开 IIS 管理控制台,在左边的列表中點擊 `Gitea Proxy` 网页。在中间選中並且双擊 URL Rewrite 的图标来加载 URL 重写的面板。
- 在管理控制台的右边選择 `Add Rule` 操作,並且在 `Inbound and Outbound Rules` 分类中選择 `Reverse Proxy Rule`。
- 在 Inbound Rules 中, 将 server name 设置為 Gitea 正在运行的主机以及对應端口。例如,如果你在 localhost 的 3000 端口上运行 Gitea,则设置為 `127.0.0.1:3000`。
- 启用 SSL Offloading
- 在 Outbound Rules 中,确保设置了 `Rewrite the domain names of the links in HTTP response`,并且将 `From:` 设置为上面的 server name,将 `To:` 设置为你的外部访问名称,例如:`git.example.com`
- 现在,根据下面的内容为您的网页编辑 `web.config`(将 `127.0.0.1:3000` 和 `git.example.com` 改为适当的值)
- 在 Outbound Rules 中,确保设置了 `Rewrite the domain names of the links in HTTP response`,並且将 `From:` 设置為上面的 server name,将 `To:` 设置為你的外部访问名稱,例如:`git.example.com`
- 現在,根据下面的内容為您的网页编辑 `web.config`(将 `127.0.0.1:3000` 和 `git.example.com` 改為适当的值)
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -305,11 +305,11 @@ git.example.com {
</configuration>
```
## 使用 HAProxy 作为反向代理服务
## 使用 HAProxy 作為反向代理服务
如果您想使用 HAProxy 作为 Gitea 的反向代理服务,您可以将下面的内容加入您的 HAProxy 配置。
如果您想使用 HAProxy 作為 Gitea 的反向代理服务,您可以将下面的内容加入您的 HAProxy 配置。
在 frontend 部分加入一个 acl 来将对 gitea.example.com 的请求重定向到正确的后端。
在 frontend 部分加入一个 acl 来将对 gitea.example.com 的請求重定向到正确的后端。
```
frontend http-in
@@ -328,9 +328,9 @@ backend gitea
如果您将 http 内容重定向到 https,上面的配置文件也能够使用。只需要记住,在 HAProxy 和 Gitea 之间的连接将由 http 完成,所以你不需要在 Gitea 的配置文件中启用 https。
## 使用 HAProxy 作为反向代理服务并将 Gitea 路由至一个子路径
## 使用 HAProxy 作為反向代理服务並将 Gitea 路由至一个子路径
如果您已经有一个域名并且想与 Gitea 共享该域名,您可以在您的 HAProxy 中加入如下配置,为 Gitea 添加路由规则:
如果您已经有一个域名並且想与 Gitea 共享該域名,您可以在您的 HAProxy 中加入如下配置,為 Gitea 添加路由規則:
```
frontend http-in
@@ -342,7 +342,7 @@ frontend http-in
在这个配置下,http://example.com/gitea/ 将被重定向到您的 Gitea 实例。
接下来,对于 backend 部分:
接下来,對於 backend 部分:
```
backend gitea
@@ -350,13 +350,13 @@ backend gitea
server localhost:3000 check
```
添加的 http-request 在需要的时候会自动加入反斜杠/,并且通过将 http://example.com/gitea 正确设置为根来在内部路径中删除 /gitea,使其能够正常工作。
添加的 http-request 在需要的时候会自动加入反斜杠/,並且通過将 http://example.com/gitea 正确设置為根来在内部路径中删除 /gitea,使其能够正常工作。
然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
然后您**必須**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
## 使用 Traefik 作为反向代理服务
## 使用 Traefik 作為反向代理服务
如果您想使用 traefik 作为 Gitea 的反向代理服务,您可以在 `docker-compose.yaml` 中添加 label 部分(假设使用 docker 作为 traefik 的 provider):
如果您想使用 traefik 作為 Gitea 的反向代理服务,您可以在 `docker-compose.yaml` 中添加 label 部分(假设使用 docker 作為 traefik 的 provider):
```yaml
gitea:
@@ -368,11 +368,11 @@ gitea:
- "traefik.http.services.gitea-websecure.loadbalancer.server.port=3000"
```
这份配置假设您使用 traefik 来处理 HTTPS 服务,并在其和 Gitea 之间使用 HTTP 进行通信。
这份配置假设您使用 traefik 来处理 HTTPS 服务,並在其和 Gitea 之间使用 HTTP 進行通信。
## 使用 Traefik 作为反向代理服务并将 Gitea 路由至一个子路径
## 使用 Traefik 作為反向代理服务並将 Gitea 路由至一个子路径
如果您已经有一个域名并且想与 Gitea 共享该域名,您可以在您的 `docker-compose.yaml` 文件中增加以下配置,为 Gitea 添加路由规则(假设使用 docker 作为 traefik 的 provider):
如果您已经有一个域名並且想与 Gitea 共享該域名,您可以在您的 `docker-compose.yaml` 文件中增加以下配置,為 Gitea 添加路由規則(假设使用 docker 作為 traefik 的 provider):
```yaml
gitea:
@@ -386,6 +386,6 @@ gitea:
- "traefik.http.routers.gitea.middlewares=gitea-stripprefix"
```
这份配置假设您使用 traefik 来处理 HTTPS 服务,并在其和 Gitea 之间使用 HTTP 进行通信。
这份配置假设您使用 traefik 来处理 HTTPS 服务,並在其和 Gitea 之间使用 HTTP 進行通信。
然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
然后您**必須**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
@@ -8,21 +8,21 @@ aliases:
# 搜索引擎索引
默认情况下,您的 Gitea 安装将被搜索引擎索引。
如果您不希望您的仓库对搜索引擎可见,请进一步阅读。
默认情况下,您的 Gitea 安裝将被搜索引擎索引。
如果您不希望您的存放庫对搜索引擎可见,請進一步阅读。
## 使用 robots.txt 阻止搜索引擎索引
为了使 Gitea 为顶级安装提供自定义的`robots.txt`(默认为空的 404),请在 [`custom`文件夹或`CustomPath`](administration/customizing-gitea.md)中创建一个名为 `public/robots.txt` 的文件。
為了使 Gitea 為顶级安裝提供自定义的`robots.txt`(默认為空的 404),請在 [`custom`文件夹或`CustomPath`](administration/customizing-gitea.md)中建立一个名為 `public/robots.txt` 的文件。
有关如何配置 `robots.txt` 的示例,请参考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
有关如何配置 `robots.txt` 的示例,請参考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
```txt
User-agent: *
Disallow: /
```
如果您将 Gitea 安装在子目录中,则需要在顶级目录中创建或编辑 `robots.txt`。
如果您将 Gitea 安裝在子目錄中,则需要在顶级目錄中建立或编辑 `robots.txt`。
```txt
User-agent: *
@@ -8,30 +8,30 @@ aliases:
# GPG 提交签名
Gitea 将通过检查提交是否由 Gitea 数据库中的密钥签名,或者提交是否与 Git 的默认密钥匹配,来验证提供的树中的 GPG 提交签名。
Gitea 将通過检查提交是否由 Gitea 数据库中的密钥签名,或者提交是否与 Git 的默认密钥匹配,来驗證提供的树中的 GPG 提交签名。
密钥不会被检查以确定它们是否已过期或撤销。密钥也不会与密钥服务器进行检查。
密钥不会被检查以确定它们是否已過期或撤销。密钥也不会与密钥服务器進行检查。
如果找不到用于验证提交的密钥,提交将被标记为灰色的未锁定图标。如果提交被标记为红色的未锁定图标,则表示它使用带有 ID 的密钥签名。
如果找不到用于驗證提交的密钥,提交将被标记為灰色的未锁定图标。如果提交被标记為红色的未锁定图标,则表示它使用带有 ID 的密钥签名。
请注意:提交的签署者不必是提交的作者或提交者。
請注意:提交的签署者不必是提交的作者或提交者。
此功能要求 Git >= 1.7.9,但要实现全部功能,需要 Git >= 2.0.0。
此功能要求 Git >= 1.7.9,但要实現全部功能,需要 Git >= 2.0.0。
## 自动签名
有许多地方 Gitea 会生成提交:
- 仓库初始化
- 存放庫初始化
- Wiki 更改
- 使用编辑器或 API 进行的 CRUD 操作
- 从合并请求进行合并
- 使用编辑器或 API 進行的 CRUD 操作
- 从合並請求進行合並
根据配置和服务器信任,您可能希望 Gitea 对这些提交进行签名。
根据配置和服务器信任,您可能希望 Gitea 对这些提交進行签名。
## 安装和生成 Gitea 的 GPG 密钥
## 安裝和生成 Gitea 的 GPG 密钥
如何安装签名密钥由服务器管理员决定。Gitea 目前使用服务器的 `git` 命令生成所有提交,因此将使用服务器的 `gpg` 进行签名(如果配置了)。管理员应该审查 GPG 的最佳实践 - 特别是可能建议仅安装签名的子密钥,而不是主签名和认证的密钥。
如何安裝签名密钥由服务器管理员决定。Gitea 目前使用服务器的 `git` 命令生成所有提交,因此将使用服务器的 `gpg` 進行签名(如果配置了)。管理员應該审查 GPG 的最佳实践 - 特别是可能建议僅安裝签名的子密钥,而不是主签名和認證的密钥。
## 通用配置
@@ -53,84 +53,84 @@ MERGES = pubkey, twofa, basesigned, commitssigned
### `SIGNING_KEY`
首先讨论的选项是 `SIGNING_KEY`。有三个主要选项:
首先讨论的選项是 `SIGNING_KEY`。有三个主要選项:
- `none` - 这将阻止 Gitea 对任何提交进行签名
- `none` - 这将阻止 Gitea 对任何提交進行签名
- `default` - Gitea 将使用 `git config` 中配置的默认密钥
- `KEYID` - Gitea 将使用具有 ID `KEYID` 的 GPG 密钥对提交进行签名。在这种情况下,您应该提供 `SIGNING_NAME` 和 `SIGNING_EMAIL`,以便显示此密钥的信息。
- `KEYID` - Gitea 将使用具有 ID `KEYID` 的 GPG 密钥对提交進行签名。在这种情况下,您應該提供 `SIGNING_NAME` 和 `SIGNING_EMAIL`,以便显示此密钥的信息。
`default` 选项将读取 `git config` 中的 `commit.gpgsign` 选项 - 如果设置了该选项,它将使用 `user.signingkey`、`user.name` 和 `user.email` 的结果。
`default` 選项将读取 `git config` 中的 `commit.gpgsign` 選项 - 如果设置了該選项,它将使用 `user.signingkey`、`user.name` 和 `user.email` 的结果。
通过在 Gitea 的仓库中调整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 为每个仓库提供不同的签名密钥。然而,这显然不是一个理想的用户界面,因此可能会发生更改。
通過在 Gitea 的存放庫中调整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 為每个存放庫提供不同的签名密钥。然而,这显然不是一个理想的使用者界面,因此可能会发生更改。
:::warning
**自 1.17 起**,Gitea 在自己的主目录 `[git].HOME_PATH`(默认为 `%(APP_DATA_PATH)/home`)中运行 git,并使用自己的配置文件 `{[git].HOME_PATH}/.gitconfig`。
**自 1.17 起**,Gitea 在自己的主目錄 `[git].HOME_PATH`(默认為 `%(APP_DATA_PATH)/home`)中运行 git,並使用自己的配置文件 `{[git].HOME_PATH}/.gitconfig`。
如果您有自己定制的 Gitea git 配置,您应该将这些配置设置在系统 git 配置文件中(例如 `/etc/gitconfig`)或者 Gitea 的内部 git 配置文件 `{[git].HOME_PATH}/.gitconfig` 中。
如果您有自己定制的 Gitea git 配置,您應該将这些配置设置在系统 git 配置文件中(例如 `/etc/gitconfig`)或者 Gitea 的内部 git 配置文件 `{[git].HOME_PATH}/.gitconfig` 中。
与 git 命令相关的主目录文件(如 `.gnupg`)也应该放在 Gitea 的 git 主目录 `[git].HOME_PATH` 中。
如果您希望将 `.gnupg` 目录放在 `{[git].HOME_PATH}/` 之外的位置,请考虑设置 `$GNUPGHOME` 环境变量为您首选的位置,否则 Gitea 将会从 `{[git].HOME_PATH}/.gnupg` 查找私钥。
与 git 命令相关的主目錄文件(如 `.gnupg`)也應該放在 Gitea 的 git 主目錄 `[git].HOME_PATH` 中。
如果您希望将 `.gnupg` 目錄放在 `{[git].HOME_PATH}/` 之外的位置,請考虑设置 `$GNUPGHOME` 环境变量為您首選的位置,否则 Gitea 将会从 `{[git].HOME_PATH}/.gnupg` 查找私钥。
:::
### `INITIAL_COMMIT`
此选项确定在创建仓库时,Gitea 是否应该对初始提交进行签名。可能的取值有:
此選项确定在建立存放庫时,Gitea 是否應該对初始提交進行签名。可能的取值有:
- `never`:从不签名
- `pubkey`:仅在用户拥有公钥时进行签名
- `twofa`:仅在用户使用 2FA 登录时进行签名
- `pubkey`:僅在使用者拥有公钥时進行签名
- `twofa`:僅在使用者使用 2FA 登入时進行签名
- `always`:始终签名
除了 `never` 和 `always` 之外的选项可以组合为逗号分隔的列表。如果所有选择的选项都为 true,则提交将被签名。
除了 `never` 和 `always` 之外的選项可以组合為逗号分隔的列表。如果所有選择的選项都為 true,则提交将被签名。
### `WIKI`
此选项确定 Gitea 是否应该对 Wiki 的提交进行签名。可能的取值有:
此選项确定 Gitea 是否應該对 Wiki 的提交進行签名。可能的取值有:
- `never`:从不签名
- `pubkey`:仅在用户拥有公钥时进行签名
- `twofa`:仅在用户使用 2FA 登录时进行签名
- `parentsigned`:仅在父提交已签名时进行签名。
- `pubkey`:僅在使用者拥有公钥时進行签名
- `twofa`:僅在使用者使用 2FA 登入时進行签名
- `parentsigned`:僅在父提交已签名时進行签名。
- `always`:始终签名
除了 `never` 和 `always` 之外的选项可以组合为逗号分隔的列表。如果所有选择的选项都为 true,则提交将被签名。
除了 `never` 和 `always` 之外的選项可以组合為逗号分隔的列表。如果所有選择的選项都為 true,则提交将被签名。
### `CRUD_ACTIONS`
此选项确定 Gitea 是否应该对 Web 编辑器或 API CRUD 操作的提交进行签名。可能的取值有:
此選项确定 Gitea 是否應該对 Web 编辑器或 API CRUD 操作的提交進行签名。可能的取值有:
- `never`:从不签名
- `pubkey`:仅在用户拥有公钥时进行签名
- `twofa`:仅在用户使用 2FA 登录时进行签名
- `parentsigned`:仅在父提交已签名时进行签名。
- `pubkey`:僅在使用者拥有公钥时進行签名
- `twofa`:僅在使用者使用 2FA 登入时進行签名
- `parentsigned`:僅在父提交已签名时進行签名。
- `always`:始终签名
除了 `never` 和 `always` 之外的选项可以组合为逗号分隔的列表。如果所有选择的选项都为 true,则更改将被签名。
除了 `never` 和 `always` 之外的選项可以组合為逗号分隔的列表。如果所有選择的選项都為 true,则更改将被签名。
### `MERGES`
此选项确定 Gitea 是否应该对 PR 的合并提交进行签名。可能的选项有:
此選项确定 Gitea 是否應該对 PR 的合並提交進行签名。可能的選项有:
- `never`:从不签名
- `pubkey`:仅在用户拥有公钥时进行签名
- `twofa`:仅在用户使用 2FA 登录时进行签名
- `basesigned`:仅在基础仓库中的父提交已签名时进行签名。
- `headsigned`:仅在头分支中的头提交已签名时进行签名。
- `commitssigned`:仅在头分支中的所有提交到合并点的提交都已签名时进行签名。
- `approved`:仅对已批准的合并到受保护分支的提交进行签名。
- `pubkey`:僅在使用者拥有公钥时進行签名
- `twofa`:僅在使用者使用 2FA 登入时進行签名
- `basesigned`:僅在基础存放庫中的父提交已签名时進行签名。
- `headsigned`:僅在头分支中的头提交已签名时進行签名。
- `commitssigned`:僅在头分支中的所有提交到合並点的提交都已签名时進行签名。
- `approved`:僅对已批准的合並到受保护分支的提交進行签名。
- `always`:始终签名
除了 `never` 和 `always` 之外的选项可以组合为逗号分隔的列表。如果所有选择的选项都为 true,则合并将被签名。
除了 `never` 和 `always` 之外的選项可以组合為逗号分隔的列表。如果所有選择的選项都為 true,则合並将被签名。
## 获取签名密钥的公钥
用于签署 Gitea 提交的公钥可以通过 API 获取:
用于签署 Gitea 提交的公钥可以通過 API 获取:
```sh
/api/v1/signing-key.gpg
```
在存在特定于仓库的密钥的情况下,可以通过以下方式获取:
在存在特定于存放庫的密钥的情况下,可以通過以下方式获取:
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg