docs: update zh-tw (#265)

Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <[email protected]>
Co-authored-by: ifurther <[email protected]>
Co-committed-by: ifurther <[email protected]>
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 ProtocolLDAP
## 轻量级目访问协议(Lightweight Directory Access ProtocolLDAP
BindDN 的 LDAP 和简单认证方式 LDAP 共享以下字段:
BindDN 的 LDAP 和简單認證方式 LDAP 共享以下字段:
- 认证名称 **(必)**
- 認證名稱 **(必)**
- 分配给新授权方法的名
- 分配给新授权方法的名
- 主机名 **(必)**
- 主机名 **(必)**
- LDAP 服务的主机地址.
- 例如:`mydomain.com`
- 端口号 **(必)**
- 端口号 **(必)**
- LDAP 服务的端口号.
- 例如: LDAP `389`/ LDAPs `636`
- 安全协议 (可)
- 安全协议 (可)
- 连接 LDAP 服务器时是否使用 TLS 协议。
- 管理员过滤规则 (可)
- 管理员過滤規則 (可)
- 一个 LDAP 滤器,用于指定哪些用户应该被赋予管理员特权。如果用户帐户符合滤器条件,则该用户将被授予管理员权限。
- 一个 LDAP 滤器,用于指定哪些使用者應該被赋予管理员特权。如果使用者帳戶符合滤器条件,则該使用者将被授予管理员权限。
- 示例:`(objectClass=adminAccount)`
- 适用于 Microsoft Active DirectoryAD)的示例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
- 用户名属性(可
- 使用者名属性(可
- 用户 LDAP 记录中包含用户名称的属性。在第一次成功登后,将使用指定的属性值作新的 Gitea 账户用户名。若留空,则使用登录表单上提供的用户名。
- 当提供的登名与多个属性匹配时,这一项非常有用,但是只有一个特定属性应该用于 Gitea 账户名称,请参阅"用户过滤器"。
- 使用者 LDAP 记录中包含使用者名稱的属性。在第一次成功登后,将使用指定的属性值作新的 Gitea 账户使用者名。若留空,则使用登入表單上提供的使用者名。
- 当提供的登名与多个属性匹配时,这一项非常有用,但是只有一个特定属性應該用于 Gitea 账户名稱,請参阅"使用者過滤器"。
- 示例:uid
- 适用于 Microsoft Active DirectoryAD)的示例:`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)
这个程启用了 PAMPluggable Authentication Modules认证。用户仍然可以通过用户管理手动添加到系统中。
PAM 提供了一种制,通过对用户进行 PAM 认证来自动将其添加到当前数据库中。了与普通的 Linux 密一起使用,
运行 Gitea 的用户还必须具有对`/etc/shadow`的读取权限,以便在使用公钥登时检查账户的有效性。
这个程启用了 PAMPluggable 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`而不是`[email protected]`到 Gitea 的 Web 界面。
[^2]: **PAM 的必** 注意:在上面的示例中,使用者将作`gituser`而不是`[email protected]`到 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 InterfaceSSPI)实 SPNEGO 点登录认证(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
Gitea 支持通 Windows 内置的安全支持提供程序接口(Security Support Provider InterfaceSSPI)实 SPNEGO 点登入認證(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
在激活 SSPI 点登录认证SSO)之前,您需要准备您的环境:
在激活 SSPI 点登入認證SSO)之前,您需要准备您的环境:
- 在 Active Directory 中建一个独的用户账户,gitea.exe 程将在账户下运行(例如,在 domain.local 域下建一个名 user 的账户:
- 运行 gitea.exe 的主机建一个服务主体名称Service Principal NameSPN),其类别 HTTP:
- 在 Active Directory 中建一个独的使用者账户,gitea.exe 程将在账户下运行(例如,在 domain.local 域下建一个名 user 的账户:
- 运行 gitea.exe 的主机建一个服务主體名稱Service Principal NameSPN),其类别 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 [email protected]`
- `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`:客户端 IDKey)。
- `--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`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/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`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/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`:客户端 IDKey)。
- `--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`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/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`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/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 脚本。
## 自定义 gitignoreslabels 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 = [email protected]
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 = [email protected]
@@ -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 protected]
```
小型配置使用 [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 protected]
```
要了解关于配置, 访问 [配置备忘](../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 @@ [email protected]
- [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