docs: update zh-tw (#265)

Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ifurther <55025025+ifurther@users.noreply.github.com>
Co-committed-by: ifurther <55025025+ifurther@users.noreply.github.com>
This commit is contained in:
ifurther
2025-09-03 21:00:35 +00:00
committed by techknowlogick
parent 908a27589d
commit cb462089e9
88 changed files with 3545 additions and 3423 deletions
@@ -10,7 +10,7 @@ aliases:
这里列出了 Gitea 与其它一些 Git 托管工具之间的异同,以便确认 Gitea 是否能够满足您的需求。
请注意,此列表中的某些表项可能已经过时,因为我们并没有定期检查其它产品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 来帮助我们更新过时的内容,感谢!
請注意,此列表中的某些表项可能已经過时,因為我们並没有定期检查其它产品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 来帮助我们更新過时的内容,感谢!
_表格中的符号含义:_
@@ -35,9 +35,9 @@ _表格中的符号含义:_
| 支持第三方渲染工具 | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | ? |
| WebAuthn (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
| 扩展 API | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 内置软件包/容器注册中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 同步提交到外部仓库 (push mirror) | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 同步外部仓库的提交 (pull mirror) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ? |
| 内置軟體包/容器注册中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 同步提交到外部存放庫 (push mirror) | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 同步外部存放庫的提交 (pull mirror) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ? |
| 浅色和深色主题 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ? |
| 自定义主题支持 | ✓ | ✓ | ✘ | ✘ | ✘ | ✓ | ✘ |
| 支持 Markdown | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@@ -45,10 +45,10 @@ _表格中的符号含义:_
| Git 驱动的静态 pages | [⚙️][gitea-pages-server], [⚙️][gitea-caddy-plugin] | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Git 驱动的集成化 wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 部署令牌 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 仓库写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| RSS Feeds | ✓ | ✘ | ✓ | ✘ | ✘ | ✘ | ✘ |
| 内置 CI/CD | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 子组织:组织内的组织 | [✘](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 子組織:組織内的組織 | [✘](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 多实例交互 | [/](https://github.com/go-gitea/gitea/issues/18240) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| Markdown 绘图 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Markdown 数学公式 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
@@ -57,47 +57,47 @@ _表格中的符号含义:_
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------- | --------------------------------------------------- | ---- | --------- | --------- | --------- | --------- | ------------ |
| 仓库主题描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 仓库内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫主题描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 存放庫内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 全局代码搜索 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ |
| Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 组织里程碑 | [✘](https://github.com/go-gitea/gitea/issues/14622) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 细粒度用户角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 提交人的身份验证 | ⁄ | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
| 組織里程碑 | [✘](https://github.com/go-gitea/gitea/issues/14622) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 细粒度使用者角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 提交人的身份驗證 | ⁄ | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
| GPG 签名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SSH 签名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ? |
| 拒绝未通过验证的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部仓库迁移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 仓库活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 拒绝未通過驗證的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部存放庫迁移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 分支管理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 建立新分支 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 在线代码编辑 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 提交的统计图表 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 模板仓库 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
| 模板存放庫 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
| Git Blame | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 可视化镜像变化 | ✓ | ✘ | ✓ | ? | ? | ? | ? |
#### 工单管理
#### 工單管理
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | ----------------------------------------------------------------------- | --------- | -------------- | ------------ |
| 工单跟踪 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工单模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 标签 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單跟踪 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工單模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 標籤 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 时间跟踪 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 支持多个负责人 | ✓ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
| 关联的工单 | ✘ | ✘ | ⁄ | [✓](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 私密工单 | [✘](https://github.com/go-gitea/gitea/issues/3217) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 关联的工單 | ✘ | ✘ | ⁄ | [✓](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 私密工單 | [✘](https://github.com/go-gitea/gitea/issues/3217) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 评论反馈 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 锁定讨论 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工单批处理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工单看板 | [✓](https://github.com/go-gitea/gitea/pull/8346) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从工单创建分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从评论创建工单 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工单搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工单全局搜索 | [✘](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工单依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 通过 Email 创建工单 | [✘](https://github.com/go-gitea/gitea/issues/6226) | [✘](https://github.com/gogs/gogs/issues/2602) | ✘ | ✓ | ✓ | ✓ | ✘ |
| 工單批处理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單看板 | [✓](https://github.com/go-gitea/gitea/pull/8346) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从工單建立分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从评论建立工單 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工單全局搜索 | [✘](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工單依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 通過 Email 建立工單 | [✘](https://github.com/go-gitea/gitea/issues/6226) | [✘](https://github.com/gogs/gogs/issues/2602) | ✘ | ✓ | ✓ | ✓ | ✘ |
| 服务台 | [✘](https://github.com/go-gitea/gitea/issues/6219) | ✘ | ✘ | [✓](https://gitlab.com/groups/gitlab-org/-/epics/3103) | ✓ | ✘ | ✘ |
#### Pull/Merge requests
@@ -110,7 +110,7 @@ _表格中的符号含义:_
| 评论 Pull/Merge request 中的某行代码 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 指定 Pull/Merge request 的审核人 | ✓ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ |
| 解决 Merge 冲突 | [✘](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 限制某些用户的 push 和 merge 权限 | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ |
| 限制某些使用者的 push 和 merge 权限 | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ |
| 回退某些 commits 或 merge request | [✓](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| Pull/Merge requests 模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 查看 Cherry-picking 的更改 | [✓](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
@@ -125,12 +125,12 @@ _表格中的符号含义:_
| 自定义 Git 钩子 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 集成 AD / LDAP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支持多个 LDAP / AD 服务 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
| LDAP 用户同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| LDAP 使用者同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SAML 2.0 service provider | [✘](https://github.com/go-gitea/gitea/issues/5512) | [✘](https://github.com/gogs/gogs/issues/1221) | ✓ | ✓ | ✓ | ✓ | ✘ |
| 支持 OpenId 连接 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ |
| 集成 OAuth 2.0(外部授权) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ |
| 作为 OAuth 2.0 provider | [✓](https://github.com/go-gitea/gitea/pull/5378) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 二次验证 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 作為 OAuth 2.0 provider | [✓](https://github.com/go-gitea/gitea/pull/5378) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 二次驗證 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 集成 Mattermost/Slack | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ |
| 集成 Discord | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 集成 Microsoft Teams | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
@@ -8,40 +8,40 @@ aliases:
# 数据库准备
在使用 Gitea 前,您需要准备一个数据库。Gitea 支持 PostgreSQL(>= 12)、MySQL(>= 8.0)、MariaDB(>= 10.4)、SQLite(内置) 和 MSSQL(>= 2012 SP4)这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文档将仅涵盖这两种数据库。如果您计划使用 SQLite,则可以忽略本章内容。
在使用 Gitea 前,您需要准备一个数据库。Gitea 支持 PostgreSQL(>= 12)、MySQL(>= 8.0)、MariaDB(>= 10.4)、SQLite(内置) 和 MSSQL(>= 2012 SP4)这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文檔将僅涵盖这两种数据库。如果您计划使用 SQLite,则可以忽略本章内容。
如果您使用不受支持的数据库版本,请通过 [联系我们](/help/support) 以获取有关我们的扩展支持的信息。我们可以为旧数据库提供测试和支持,并将这些修复集成到 Gitea 代码库中。
如果您使用不受支持的数据库版本,請通過 [联系我们](/help/support) 以获取有关我们的扩展支持的信息。我们可以為旧数据库提供测试和支持,並将这些修复集成到 Gitea 代码库中。
数据库实例可以与 Gitea 实例在相同机器上(本地数据库),也可以与 Gitea 实例在不同机器上(远程数据库)。
注意:以下所有步骤要求您的选择的数据库引擎已安装在您的系统上。对于远程数据库设置,请在数据库实例上安装服务器应用程序,在 Gitea 服务器上安装客户端程序。客户端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任务。此外,请确保服务器和客户端使用相同的引擎版本,以使某些引擎功能正常工作。出于安全原因,请使用安全密码保护 `root`(MySQL)或 `postgres`(PostgreSQL)数据库超级用户。以下步骤假设您在数据库和 Gitea 服务器上都使用 Linux。
注意:以下所有步骤要求您的選择的数据库引擎已安裝在您的系统上。對於远程数据库设置,請在数据库实例上安裝服务器應用程序,在 Gitea 服务器上安裝客户端程序。客户端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任务。此外,請确保服务器和客户端使用相同的引擎版本,以使某些引擎功能正常工作。出于安全原因,請使用安全密碼保护 `root`(MySQL)或 `postgres`(PostgreSQL)数据库超级使用者。以下步骤假设您在数据库和 Gitea 服务器上都使用 Linux。
## MySQL/MariaDB
1. 对于远程数据库设置,您需要让 MySQL 监听您的 IP 地址。编辑数据库实例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address` 选项为:
1. 對於远程数据库设置,您需要让 MySQL 监听您的 IP 地址。编辑数据库实例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address` 選项為:
```ini
bind-address = 203.0.113.3
```
2. 在数据库实例上,使用 `root` 用户登录到数据库控制台:
2. 在数据库实例上,使用 `root` 使用者登入到数据库控制台:
```
mysql -u root -p
```
按提示输入密码。
按提示输入密碼。
3. 创建一个将被 Gitea 使用的数据库用户,并使用密码进行身份验证。以下示例中使用了 `'gitea'` 作为密码。请为您的实例使用一个安全密码。
3. 建立一个将被 Gitea 使用的数据库使用者,並使用密碼進行身份驗證。以下示例中使用了 `'gitea'` 作為密碼。請為您的实例使用一个安全密碼。
对于本地数据库:
對於本地数据库:
```sql
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
```
对于远程数据库:
對於远程数据库:
```sql
SET old_passwords=0;
@@ -50,37 +50,37 @@ aliases:
其中 `192.0.2.10` 是您的 Gitea 实例的 IP 地址。
根据需要替换上述用户名和密码。
根据需要替换上述使用者名和密碼。
4. 使用 UTF-8 字符集和大小写敏感的排序规则创建数据库。
4. 使用 UTF-8 字符集和大小写敏感的排序規則建立数据库。
`utf8mb4_bin` 是 MySQL/MariaDB 的通用排序规则。
Gitea 启动后会尝试把数据库修改为更合适的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 并在可能的情况下更改数据库。
如果你想指定自己的字符集规则,可以在 `app.ini` 中设置 `[database].CHARSET_COLLATION`。
`utf8mb4_bin` 是 MySQL/MariaDB 的通用排序規則。
Gitea 启动后会尝试把数据库修改為更合适的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 並在可能的情况下更改数据库。
如果你想指定自己的字符集規則,可以在 `app.ini` 中设置 `[database].CHARSET_COLLATION`。
```sql
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
```
根据需要替换数据库名称。
根据需要替换数据库名稱。
5. 将数据库上的所有权限授予上述创建的数据库用户。
5. 将数据库上的所有权限授予上述建立的数据库使用者。
对于本地数据库:
對於本地数据库:
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
```
对于远程数据库:
對於远程数据库:
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'192.0.2.10';
FLUSH PRIVILEGES;
```
6. 通过 `exit` 退出数据库控制台。
6. 通過 `exit` 退出数据库控制台。
7. 在您的 Gitea 服务器上,测试与数据库的连接:
@@ -88,108 +88,108 @@ aliases:
mysql -u gitea -h 203.0.113.3 -p giteadb
```
其中 `gitea` 是数据库用户名,`giteadb` 是数据库名称,`203.0.113.3` 是数据库实例的 IP 地址。对于本地数据库,省略 `-h` 选项。
其中 `gitea` 是数据库使用者名,`giteadb` 是数据库名稱,`203.0.113.3` 是数据库实例的 IP 地址。對於本地数据库,省略 `-h` 選项。
到此您应该能够连接到数据库了。
到此您應該能够连接到数据库了。
## PostgreSQL
1. 对于远程数据库设置,通过编辑数据库实例上的 postgresql.conf 文件中的 `listen_addresses` 将 `PostgreSQL` 配置为监听您的 IP 地址:
1. 對於远程数据库设置,通過编辑数据库实例上的 postgresql.conf 文件中的 `listen_addresses` 将 `PostgreSQL` 配置為监听您的 IP 地址:
```ini
listen_addresses = 'localhost, 203.0.113.3'
```
2. PostgreSQL 默认使用 `md5` 质询-响应加密方案进行密码身份验证。现在这个方案不再被认为是安全的。改用 SCRAM-SHA-256 方案,通过编辑数据库服务器上的` postgresql.conf` 配置文件:
2. PostgreSQL 默认使用 `md5` 质询-響應加密方案進行密碼身份驗證。現在这个方案不再被认為是安全的。改用 SCRAM-SHA-256 方案,通過编辑数据库服务器上的` postgresql.conf` 配置文件:
```ini
password_encryption = scram-sha-256
```
重启 PostgreSQL 以应用该设置。
重启 PostgreSQL 以應用該设置。
3. 在数据库服务器上,以超级用户身份登录到数据库控制台:
3. 在数据库服务器上,以超级使用者身份登入到数据库控制台:
```
su -c "psql" - postgres
```
4. 创建具有登录权限和密码的数据库用户(在 PostgreSQL 术语中称为角色)。请使用安全的、强密码,而不是下面的 `'gitea'`:
4. 建立具有登入权限和密碼的数据库使用者(在 PostgreSQL 术语中稱為角色)。請使用安全的、强密碼,而不是下面的 `'gitea'`:
```sql
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
```
根据需要替换用户名和密码。
根据需要替换使用者名和密碼。
5. 使用 UTF-8 字符集创建数据库,并由之前创建的数据库用户拥有。可以根据预期内容使用任何 `libc` 排序规则,使用 `LC_COLLATE` 和 `LC_CTYPE` 参数指定:
5. 使用 UTF-8 字符集建立数据库,並由之前建立的数据库使用者拥有。可以根据预期内容使用任何 `libc` 排序規則,使用 `LC_COLLATE` 和 `LC_CTYPE` 參數指定:
```sql
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
```
根据需要替换数据库名称。
根据需要替换数据库名稱。
6. 通过将以下身份验证规则添加到 `pg_hba.conf`,允许数据库用户访问上面创建的数据库。
6. 通過将以下身份驗證規則添加到 `pg_hba.conf`,允许数据库使用者访问上面建立的数据库。
对于本地数据库:
對於本地数据库:
```ini
local giteadb gitea scram-sha-256
```
对于远程数据库:
對於远程数据库:
```ini
host giteadb gitea 192.0.2.10/32 scram-sha-256
```
根据您自己的数据库名称、用户和 Gitea 实例的 IP 地址进行替换。
根据您自己的数据库名稱、使用者和 Gitea 实例的 IP 地址進行替换。
注意:`pg_hba.conf` 上的规则按顺序评估,也就是第一个匹配的规则将用于身份验证。您的 PostgreSQL 安装可能附带了适用于所有用户和数据库的通用身份验证规则。如果是这种情况,您可能需要将此处提供的规则放置在此类通用规则之上。
注意:`pg_hba.conf` 上的規則按顺序评估,也就是第一个匹配的規則将用于身份驗證。您的 PostgreSQL 安裝可能附带了适用于所有使用者和数据库的通用身份驗證規則。如果是这种情况,您可能需要将此处提供的規則放置在此类通用規則之上。
重启 PostgreSQL 以应用新的身份验证规则。
重启 PostgreSQL 以應用新的身份驗證規則。
7. 在您的 Gitea 服务器上,测试与数据库的连接。
对于本地数据库:
對於本地数据库:
```
psql -U gitea -d giteadb
```
对于远程数据库:
對於远程数据库:
```
psql "postgres://gitea@203.0.113.3/giteadb"
```
其中 `gitea` 是数据库用户,`giteadb` 是数据库名称,`203.0.113.3` 是您的数据库实例的 IP 地址。
其中 `gitea` 是数据库使用者,`giteadb` 是数据库名稱,`203.0.113.3` 是您的数据库实例的 IP 地址。
您应该会被提示输入数据库用户的密码,并连接到数据库。
您應該会被提示输入数据库使用者的密碼,並连接到数据库。
## 使用 TLS 进行数据库连接
## 使用 TLS 進行数据库连接
如果 Gitea 和您的数据库实例之间的通信是通过私有网络进行的,或者如果 Gitea 和数据库运行在同一台服务器上,那么可以省略本节,因为 Gitea 和数据库实例之间的安全性不会受到严重威胁。但是,如果数据库实例位于公共网络上,请使用 TLS 对数据库连接进行加密,以防止第三方拦截流量数据。
如果 Gitea 和您的数据库实例之间的通信是通過私有网络進行的,或者如果 Gitea 和数据库运行在同一台服务器上,那么可以省略本节,因為 Gitea 和数据库实例之间的安全性不会受到严重威胁。但是,如果数据库实例位于公共网络上,請使用 TLS 对数据库连接進行加密,以防止第三方拦截流量数据。
### 先决条件
- 您需要两个有效的 TLS 证书,一个用于数据库实例(数据库服务器),一个用于 Gitea 实例(数据库客户端)。两个证书都必须由受信任的 CA 签名。
- 数据库证书必须在 `X509v3 Extended Key Usage` 扩展属性中包含 `TLS Web Server Authentication`,而客户端证书则需要在相应的属性中包含 `TLS Web Client Authentication`。
- 在数据库服务器证书中,`Subject Alternative Name` 或 `Common Name` 条目之一必须是数据库实例的完全限定域名(FQDN)(例如 `db.example.com`)。在数据库客户端证书中,上述提到的条目之一必须包含 Gitea 将用于连接的数据库用户名。
- 您需要将 Gitea 和数据库服务器的域名映射到它们各自的 IP 地址。可以为它们设置 DNS 记录,也可以在每个系统上的 `/etc/hosts`(Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。这样可以通过域名而不是 IP 地址进行数据库连接。有关详细信息,请参阅您系统的文档。
- 您需要两个有效的 TLS 证书,一个用于数据库实例(数据库服务器),一个用于 Gitea 实例(数据库客户端)。两个证书都必須由受信任的 CA 签名。
- 数据库证书必須在 `X509v3 Extended Key Usage` 扩展属性中包含 `TLS Web Server Authentication`,而客户端证书则需要在相應的属性中包含 `TLS Web Client Authentication`。
- 在数据库服务器证书中,`Subject Alternative Name` 或 `Common Name` 条目之一必須是数据库实例的完全限定域名(FQDN)(例如 `db.example.com`)。在数据库客户端证书中,上述提到的条目之一必須包含 Gitea 将用于连接的数据库使用者名。
- 您需要将 Gitea 和数据库服务器的域名映射到它们各自的 IP 地址。可以為它们设置 DNS 记录,也可以在每个系统上的 `/etc/hosts`(Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。这样可以通過域名而不是 IP 地址進行数据库连接。有关详细信息,請参阅您系统的文檔。
### PostgreSQL TLS
Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,数据库客户端和服务器通过将各自的证书发送给对方进行验证来相互认证。换句话说,服务器验证客户端证书,客户端验证服务器证书。
Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,数据库客户端和服务器通過将各自的证书发送给对方進行驗證来相互認證。换句话说,服务器驗證客户端证书,客户端驗證服务器证书。
1. 在数据库实例所在的服务器上,放置以下凭据:
- `/path/to/postgresql.crt`: 数据库实例证书
- `/path/to/postgresql.key`: 数据库实例私钥
- `/path/to/root.crt`: 用于验证客户端证书的 CA 证书链
- `/path/to/root.crt`: 用于驗證客户端证书的 CA 证书链
2. 在 `postgresql.conf` 中添加以下选项:
2. 在 `postgresql.conf` 中添加以下選项:
```ini
ssl = on
@@ -206,31 +206,31 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
chmod 0600 /path/to/root.crt /path/to/postgresql.crt /path/to/postgresql.key
```
4. 编辑 `pg_hba.conf` 规则,仅允许 Gitea 数据库用户通过 SSL 连接,并要求客户端证书验证。
4. 编辑 `pg_hba.conf` 規則,僅允许 Gitea 数据库使用者通過 SSL 连接,並要求客户端证书驗證。
对于 PostgreSQL 12:
對於 PostgreSQL 12:
```ini
hostssl giteadb gitea 192.0.2.10/32 scram-sha-256 clientcert=verify-full
```
对于 PostgreSQL 11 及更早版本:
對於 PostgreSQL 11 及更早版本:
```ini
hostssl giteadb gitea 192.0.2.10/32 scram-sha-256 clientcert=1
```
根据需要替换数据库名称、用户和 Gitea 实例的 IP 地址。
根据需要替换数据库名稱、使用者和 Gitea 实例的 IP 地址。
5. 重新启动 PostgreSQL 以应用上述配置。
5. 重新启动 PostgreSQL 以應用上述配置。
6. 在运行 Gitea 实例的服务器上,将以下凭据放置在运行 Gitea 的用户的主目录下(例如 `git`):
6. 在运行 Gitea 实例的服务器上,将以下凭据放置在运行 Gitea 的使用者的主目錄下(例如 `git`):
- `~/.postgresql/postgresql.crt`: 数据库客户端证书
- `~/.postgresql/postgresql.key`: 数据库客户端私钥
- `~/.postgresql/root.crt`: 用于验证服务器证书的 CA 证书链
- `~/.postgresql/root.crt`: 用于驗證服务器证书的 CA 证书链
注意:上述文件名在 PostgreSQL 中是硬编码的,无法更改。
注意:上述文件名在 PostgreSQL 中是硬编码的,無法更改。
7. 根据需要调整凭据、所有权和权限:
@@ -245,21 +245,21 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
psql "postgres://gitea@example.db/giteadb?sslmode=verify-full"
```
您将被提示输入数据库用户的密码,然后连接到数据库。
您将被提示输入数据库使用者的密碼,然后连接到数据库。
### MySQL/MariaDB TLS
虽然 Gitea 使用的 MySQL 驱动程序也支持双向 TLS,但目前 Gitea 仅支持单向 TLS。有关详细信息,请参见工单#10828。
虽然 Gitea 使用的 MySQL 驱动程序也支持双向 TLS,但目前 Gitea 僅支持單向 TLS。有关详细信息,請参见工單#10828。
在单向 TLS 中,数据库客户端在连接握手期间验证服务器发送的证书,而服务器则假定连接的客户端是合法的,因为不进行客户端证书验证。
在單向 TLS 中,数据库客户端在连接握手期间驗證服务器发送的证书,而服务器则假定连接的客户端是合法的,因為不進行客户端证书驗證。
1. 在数据库实例上放置以下凭据:
- `/path/to/mysql.crt`: 数据库实例证书
- `/path/to/mysql.key`: 数据库实例密钥
- `/path/to/ca.crt`: CA 证书链。在单向 TLS 中不使用此文件,但用于验证双向 TLS 中的客户端证书。
- `/path/to/ca.crt`: CA 证书链。在單向 TLS 中不使用此文件,但用于驗證双向 TLS 中的客户端证书。
2. 将以下选项添加到 `my.cnf`:
2. 将以下選项添加到 `my.cnf`:
```ini
[mysqld]
@@ -276,9 +276,9 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
chmod 0600 /path/to/ca.crt /path/to/mysql.crt /path/to/mysql.key
```
4. 重新启动 MySQL 以应用设置。
4. 重新启动 MySQL 以應用设置。
5. Gitea 的数据库用户可能已经创建过,但只会对运行 Gitea 的服务器的 IP 地址进行身份验证。要对其域名进行身份验证,请重新创建用户,并设置其需要通过 TLS 连接到数据库:
5. Gitea 的数据库使用者可能已经建立過,但只会对运行 Gitea 的服务器的 IP 地址進行身份驗證。要对其域名進行身份驗證,請重新建立使用者,並设置其需要通過 TLS 连接到数据库:
```sql
DROP USER 'gitea'@'192.0.2.10';
@@ -287,9 +287,9 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
FLUSH PRIVILEGES;
```
根据需要替换数据库用户名、密码和 Gitea 实例域名。
根据需要替换数据库使用者名、密碼和 Gitea 实例域名。
6. 确保用于验证数据库服务器证书的 CA 证书链位于数据库和 Gitea 服务器的系统证书存储中。请参考系统文档中有关将 CA 证书添加到证书存储的说明。
6. 确保用于驗證数据库服务器证书的 CA 证书链位于数据库和 Gitea 服务器的系统证书存儲中。請参考系统文檔中有关将 CA 证书添加到证书存儲的说明。
7. 在运行 Gitea 的服务器上,测试与数据库的连接:
@@ -297,4 +297,4 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
mysql -u gitea -h example.db -p --ssl
```
至此应该成功连接到数据库了。
至此應該成功连接到数据库了。
@@ -6,59 +6,59 @@ aliases:
- /zh-tw/install-from-binary
---
# 使用二进制文件安装
# 使用二進制文件安裝
所有打包的二进制程序均包含 SQLite,MySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可执行程序中,这一点和曾经的 Gogs 有所不同。
所有打包的二進制程序均包含 SQLite,MySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可執行程序中,这一点和曾经的 Gogs 有所不同。
## 下载
你可以从 [下载页面](https://dl.gitea.com/gitea/) 选择对应平台的二进制文件。
你可以从 [下载页面](https://dl.gitea.com/gitea/) 選择对應平台的二進制文件。
### 选择架构
### 選择架构
- **对于 Linux**,`linux-amd64` 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 `arm64` (Raspberry PI 4),`386` (32-bit),`arm-5` 以及 `arm-6`。
- **對於 Linux**,`linux-amd64` 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 `arm64` (Raspberry PI 4),`386` (32-bit),`arm-5` 以及 `arm-6`。
- **对于 Windows**,`windows-4.0-amd64` 适用于 64-bit 的 Intel/AMD 平台,`386` 适用于 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本内建了 gogit 可能缓解在旧的 Windows 平台上 Go 程序调用 git 子程序时面临的 [性能问题](https://github.com/go-gitea/gitea/pull/15482))
- **對於 Windows**,`windows-4.0-amd64` 适用于 64-bit 的 Intel/AMD 平台,`386` 适用于 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本内建了 gogit 可能缓解在旧的 Windows 平台上 Go 程序调用 git 子程序时面临的 [性能问题](https://github.com/go-gitea/gitea/pull/15482))
- **对于 macOS**,`darwin-arm64` 适用于 Apple Silicon 架构,`darwin-amd64` 适用于 Intel 架构.
- **對於 macOS**,`darwin-arm64` 适用于 Apple Silicon 架构,`darwin-amd64` 适用于 Intel 架构.
- **对于 FreeBSD**,`freebsd12-amd64` 适用于 64-bit 的 Intel/AMD 平台。
- **對於 FreeBSD**,`freebsd12-amd64` 适用于 64-bit 的 Intel/AMD 平台。
### 使用 wget 下载
使用以下命令下载适用于 64-bit Linux 平台的二进制文件。
使用以下命令下载适用于 64-bit Linux 平台的二進制文件。
```sh
wget -O gitea https://dl.gitea.com/gitea/@version@/gitea-@version@-linux-amd64
chmod +x gitea
```
## 验证 GPG 签名
## 驗證 GPG 签名
Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/search?q=teabot%40gitea.io) 签名以防止篡改。
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
Gitea 对打包的二進制文件使用 [GPG 密钥](https://keys.openpgp.org/search?q=teabot%40gitea.io) 签名以防止篡改。
請根据对應文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```
校验正确时的信息为 `Good signature from "Teabot <teabot@gitea.io>"`。
校验错误时的信息为 `This key is not certified with a trusted signature!`。
校验正确时的信息為 `Good signature from "Teabot <teabot@gitea.io>"`。
校验错误时的信息為 `This key is not certified with a trusted signature!`。
## 服务器设置
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路径。以下路径可以通过 [环境变量](../administration/environment-variables.md) 初始化。
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路径。以下路径可以通過 [环境变量](../administration/environment-variables.md) 初始化。
### 准备环境
检查是否安装 Git。要求 Git 版本 >= 2.0。
检查是否安裝 Git。要求 Git 版本 >= 2.0。
```sh
git --version
```
创建用户(推荐使用名称 `git`)
建立使用者(推荐使用名稱 `git`)
```sh
# On Ubuntu/Debian:
@@ -83,7 +83,7 @@ adduser \
git
```
### 创建工作路径
### 建立工作路径
```sh
mkdir -p /var/lib/gitea/{custom,data,log}
@@ -94,31 +94,31 @@ chown root:git /etc/gitea
chmod 770 /etc/gitea
```
> **注意:** 为了让 Web 安装程序可以写入配置文件,我们临时为 `/etc/gitea` 路径授予了组外用户 `git` 写入权限。建议在安装结束后将配置文件的权限设置为只读。
> **注意:** 為了让 Web 安裝程序可以写入配置文件,我们临时為 `/etc/gitea` 路径授予了组外使用者 `git` 写入权限。建议在安裝结束后将配置文件的权限设置為只读。
>
> ```sh
> chmod 750 /etc/gitea
> chmod 640 /etc/gitea/app.ini
> ```
如果您不希望通过 Web 安装程序创建配置文件,可以将配置文件设置为仅供 Gitea 用户只读(owner/group `root:git`, mode `0640`)并手工创建配置文件:
如果您不希望通過 Web 安裝程序建立配置文件,可以将配置文件设置為僅供 Gitea 使用者只读(owner/group `root:git`, mode `0640`)並手工建立配置文件:
- 设置 `INSTALL_LOCK=true` 关闭安装界面
- 手动配置数据库连接参数
- 使用 `gitea generate secret` 创建 `SECRET_KEY` 和 `INTERNAL_TOKEN`
- 设置 `INSTALL_LOCK=true` 关闭安裝界面
- 手动配置数据库连接參數
- 使用 `gitea generate secret` 建立 `SECRET_KEY` 和 `INTERNAL_TOKEN`
- 提供所有必要的密钥
详情参考 [命令行文档](../administration/command-line.md) 中有关 `gitea generate secret` 的内容。
详情参考 [命令行文檔](../administration/command-line.md) 中有关 `gitea generate secret` 的内容。
### 配置 Gitea 工作路径
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服务,你可以采用 `WorkingDirectory` 参数来配置工作路径。 否则,使用环境变量 `GITEA_WORK_DIR` 来明确指出程序工作和数据存放路径。
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服务,你可以采用 `WorkingDirectory` 參數来配置工作路径。 否则,使用环境变量 `GITEA_WORK_DIR` 来明确指出程序工作和数据存放路径。
```sh
export GITEA_WORK_DIR=/var/lib/gitea/
```
### 复制二进制文件到全局位置
### 复制二進制文件到全局位置
```sh
cp gitea /usr/local/bin/gitea
@@ -130,17 +130,17 @@ cp gitea /usr/local/bin/gitea
同样地,zsh 自动补全的脚本可以在 [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete) 找到。您可以将其复制到 `/usr/share/zsh/_gitea`,或在您的 `.zshrc` 中引用。
具体情况可能会有所不同,这些脚本可能需要进一步的改进。
具體情况可能会有所不同,这些脚本可能需要進一步的改進。
## 运行 Gitea
完成以上步骤后,可以通过两种方式运行 Gitea:
完成以上步骤后,可以通過两种方式运行 Gitea:
### 1. 创建服务自动启动 Gitea(推荐)
### 1. 建立服务自动启动 Gitea(推荐)
学习创建 [Linux 服务](installation/run-as-service-in-ubuntu.md)
学习建立 [Linux 服务](installation/run-as-service-in-ubuntu.md)
### 2. 通过命令行终端运行
### 2. 通過命令行终端运行
```sh
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
@@ -148,15 +148,15 @@ GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
## 升级到最新版本
您可以通过停止程序,替换 `/usr/local/bin/gitea` 并重启来更新到新版本。直接替换可执行程序时不要更改或使用新的文件名称,以避免数据出错。
您可以通過停止程序,替换 `/usr/local/bin/gitea` 並重启来更新到新版本。直接替换可執行程序时不要更改或使用新的文件名稱,以避免数据出错。
建议您在更新之前进行[备份](../administration/backup-and-restore.md)。
建议您在更新之前進行[备份](../administration/backup-and-restore.md)。
如果您按照上述描述执行了安装步骤,二进制文件的通用名称应为 gitea。请勿更改此名称,即不要包含版本号。
如果您按照上述描述執行了安裝步骤,二進制文件的通用名稱應為 gitea。請勿更改此名稱,即不要包含版本号。
### 1. 使用 systemd 重新启动 Gitea(推荐)
我们建议使用 systemd 作为服务管理器,使用 `systemctl restart gitea` 安全地重启程序。
我们建议使用 systemd 作為服务管理器,使用 `systemctl restart gitea` 安全地重启程序。
### 2. 非 systemd 重启方法
@@ -166,40 +166,40 @@ GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
**提示:** 我们不建议使用 SIGKILL 信号(`-9`),这会强制停止 Gitea 程序,但不会正确关闭队列、索引器等任务。
请参阅下面的疑难解答说明,以在 Gitea 版本更新后修复损坏的仓库。
請参阅下面的疑难解答说明,以在 Gitea 版本更新后修复损坏的存放庫。
## 排查故障
### 旧版 glibc
旧版 Linux 发行版(例如 Debian 7 和 CentOS 6)可能无法加载 Gitea 二进制文件,通常会产生类似于 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)` 的错误。这是由于 dl.gitea.com 提供的二进制文件中集成了 SQLite 支持。在这种情况下,通常可以选择[从源代码安装](installation/from-source.md),而不包括 SQLite 支持。
旧版 Linux 发行版(例如 Debian 7 和 CentOS 6)可能無法加载 Gitea 二進制文件,通常会产生类似于 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)` 的错误。这是由于 dl.gitea.com 提供的二進制文件中集成了 SQLite 支持。在这种情况下,通常可以選择[从源代码安裝](installation/from-source.md),而不包括 SQLite 支持。
### 在另一个端口上运行 Gitea
对于出现类似于 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use` 的错误,需要将 Gitea 启动在另一个空闲端口上。您可以使用 `./gitea web -p $PORT` 来实现。可能已经有另一个 Gitea 实例在运行。
對於出現类似于 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use` 的错误,需要将 Gitea 启动在另一个空闲端口上。您可以使用 `./gitea web -p $PORT` 来实現。可能已经有另一个 Gitea 实例在运行。
### 在 Raspbian 上运行 Gitea
从 v1.8 版本开始,arm7 版本的 Gitea 存在问题,无法在树莓派和类似设备上运行。
从 v1.8 版本开始,arm7 版本的 Gitea 存在问题,無法在树莓派和类似设备上运行。
建议切换到 arm6 版本,该版本经过测试并已被证明可以在树莓派和类似设备上运行。
建议切换到 arm6 版本,該版本经過测试並已被证明可以在树莓派和类似设备上运行。
### 更新到新版本的 Gitea 后出现的 Git 错误
### 更新到新版本的 Gitea 后出現的 Git 错误
如果在更新过程中,二进制文件的名称已更改为新版本的 Gitea,则现有仓库中的 Git 钩子将不再起作用。在这种情况下,当推送到仓库时,会显示 Git 错误。
如果在更新過程中,二進制文件的名稱已更改為新版本的 Gitea,则現有存放庫中的 Git 钩子将不再起作用。在这种情况下,当推送到存放庫时,会显示 Git 错误。
```
remote: ./hooks/pre-receive.d/gitea: line 2: [...]: No such file or directory
```
错误信息中的 `[...]` 部分将包含您先前 Gitea 二进制文件的路径。
错误信息中的 `[...]` 部分将包含您先前 Gitea 二進制文件的路径。
要解决此问题,请转到管理选项,并运行任务 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以将所有钩子更新为包含新的二进制文件路径。请注意,这将覆盖所有 Git 钩子,包括自定义的钩子。
要解决此问题,請转到管理選项,並运行任务 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以将所有钩子更新為包含新的二進制文件路径。請注意,这将覆盖所有 Git 钩子,包括自定义的钩子。
如果您没有使用 Gitea 内置的 SSH 服务器,您还需要通过在管理选项中运行任务 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 来重新编写授权密钥文件。
如果您没有使用 Gitea 内置的 SSH 服务器,您還需要通過在管理選项中运行任务 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 来重新编写授权密钥文件。
> 更多经验总结,请参考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
> 更多经验总结,請参考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
如果从本页中没有找到你需要的内容,请访问 [帮助页面](help/support.md)
如果从本页中没有找到你需要的内容,請访问 [帮助页面](help/support.md)
@@ -6,13 +6,13 @@ aliases:
- /zh-tw/install-from-package
---
# 包管理器安装
# 包管理器安裝
## 官方包管理器
### macOS
macOS 平台下当前我们仅支持通过 `brew` 来安装。如果你没有安装 [Homebrew](http://brew.sh/),你也可以查看 [从二进制安装](installation/from-binary.md)。在你安装了 `brew` 之后, 你可以执行以下命令:
macOS 平台下当前我们僅支持通過 `brew` 来安裝。如果你没有安裝 [Homebrew](http://brew.sh/),你也可以查看 [从二進制安裝](installation/from-binary.md)。在你安裝了 `brew` 之后, 你可以執行以下命令:
```
brew install gitea
@@ -22,7 +22,7 @@ brew install gitea
### Alpine Linux
Gitea 已经包含在 Alpine Linux 的[社区存储库](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本与 Gitea 官方保持同步。
Gitea 已经包含在 Alpine Linux 的[社区存儲库](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本与 Gitea 官方保持同步。
```sh
apk add gitea
@@ -30,7 +30,7 @@ apk add gitea
### Arch Linux
Gitea 已经在滚动发布发行版的官方[社区存储库](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本与 Gitea 官方保持同步。
Gitea 已经在滚动發佈发行版的官方[社区存儲库](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本与 Gitea 官方保持同步。
```sh
pacman -S gitea
@@ -46,7 +46,7 @@ pacman -S gitea
### Gentoo Linux
滚动发布的发行版在其官方社区软件仓库中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea),并且会随着新的 Gitea 发布提供软件包更新。
滚动發佈的发行版在其官方社区软件存放庫中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea),並且会随着新的 Gitea 發佈提供軟體包更新。
```sh
emerge gitea -va
@@ -54,7 +54,7 @@ emerge gitea -va
### Canonical Snap
目前 Gitea 已在 Snap Store 中发布,名称为 [gitea](https://snapcraft.io/gitea)。
目前 Gitea 已在 Snap Store 中發佈,名稱為 [gitea](https://snapcraft.io/gitea)。
```sh
snap install gitea
@@ -62,29 +62,29 @@ snap install gitea
### SUSE/openSUSE
OpenSUSE 构建服务为 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在开发软件配置管理存储库中找到它们。
OpenSUSE 构建服务為 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在开发软件配置管理存儲库中找到它们。
### Windows
目前你可以通过 [Chocolatey](https://chocolatey.org/) 来安装 [Gitea](https://chocolatey.org/packages/gitea)。
目前你可以通過 [Chocolatey](https://chocolatey.org/) 来安裝 [Gitea](https://chocolatey.org/packages/gitea)。
```sh
choco install gitea
```
你也可以 [从二进制安装](installation/from-binary.md) 。
你也可以 [从二進制安裝](installation/from-binary.md) 。
### FreeBSD
可以使用 Gitea 的 FreeBSD port `www/gitea`。 请安装预构建的二进制包:
可以使用 Gitea 的 FreeBSD port `www/gitea`。 請安裝预构建的二進制包:
```
pkg install gitea
```
对于最新版本,或使用自定义选项构建 port,请
[从 port 安装](https://www.freebsd.org/doc/handbook/ports-using.html):
對於最新版本,或使用自定义選项构建 port,請
[从 port 安裝](https://www.freebsd.org/doc/handbook/ports-using.html):
```
su -
@@ -92,13 +92,13 @@ cd /usr/ports/www/gitea
make install clean
```
该 port 使用标准的 FreeBSD 文件系统布局:配置文件在 `/usr/local/etc/gitea` 目录中,
模板、选项、插件和主题在 `/usr/local/share/gitea` 目录中,启动脚本在 `/usr/local/etc/rc.d/gitea` 目录中。
該 port 使用标准的 FreeBSD 文件系统布局:配置文件在 `/usr/local/etc/gitea` 目錄中,
模板、選项、插件和主题在 `/usr/local/share/gitea` 目錄中,启动脚本在 `/usr/local/etc/rc.d/gitea` 目錄中。
要使 Gitea 作为服务运行,请运行 `sysrc gitea_enable=YES` 并使用 `service gitea start` 命令启动它。
要使 Gitea 作為服务运行,請运行 `sysrc gitea_enable=YES` 並使用 `service gitea start` 命令启动它。
### 其它
如果这里没有找到你喜欢的包管理器,可以使用 Gitea 第三方软件包。这里有一个完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果这里没有找到你喜欢的包管理器,可以使用 Gitea 第三方軟體包。这里有一个完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果你知道其他 Gitea 第三方软件包,请发送 PR 来添加它。
如果你知道其他 Gitea 第三方軟體包,請发送 PR 来添加它。
@@ -6,40 +6,40 @@ aliases:
- /zh-tw/install-from-source
---
# 使用源代码安装
# 使用源代码安裝
你需要 [安装 Go](https://golang.google.cn/doc/install) 并正确设置 Go 环境。特别的,建议设置`$GOPATH`环境变量,并将 Go 的二进制目录或目录`${GOPATH//://bin:}/bin`添加到`$PATH`中。请参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的词条。
你需要 [安裝 Go](https://golang.google.cn/doc/install) 並正确设置 Go 环境。特别的,建议设置`$GOPATH`环境变量,並将 Go 的二進制目錄或目錄`${GOPATH//://bin:}/bin`添加到`$PATH`中。請参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的詞条。
接下来,[安装 Node.js 和 npm](https://nodejs.org/zh-tw/download/), 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。
接下来,[安裝 Node.js 和 npm](https://nodejs.org/zh-tw/download/), 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不过,建议获取与我们的持续集成(continuous integration, CI)相同的版本,请参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不過,建议获取与我们的持续集成(continuous integration, CI)相同的版本,請参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。
## 下载
首先,我们需要获取源码。由于引入了 Go 模块,最简单的方法是直接使用 Git,因为我们不再需要在 GOPATH 内构建 Gitea。
首先,我们需要获取源码。由于引入了 Go 模組,最简單的方法是直接使用 Git,因為我们不再需要在 GOPATH 内构建 Gitea。
```bash
git clone https://github.com/go-gitea/gitea
```
(之前的版本中建议使用 `go get`,但现在不再需要。)
(之前的版本中建议使用 `go get`,但現在不再需要。)
你可以选择编译和安装的版本,当前有多个选择。`main` 分支代表当前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [构建](#构建) 部分。
你可以選择编译和安裝的版本,当前有多个選择。`main` 分支代表当前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [构建](#构建) 部分。
如果你想编译带有标签的发行版本,可以使用以下命令签出:
如果你想编译带有標籤的发行版本,可以使用以下命令签出:
```bash
git branch -a
git checkout @sourceBranch@
```
要验证一个拉取请求(Pull Request, PR),要先启用新的分支(其中 `xyz` 是 PR 的 ID;例如,对于 [#2663](https://github.com/go-gitea/gitea/pull/2663),ID 是 `2663 `):
要驗證一个拉取請求(Pull Request, PR),要先启用新的分支(其中 `xyz` 是 PR 的 ID;例如,對於 [#2663](https://github.com/go-gitea/gitea/pull/2663),ID 是 `2663 `):
```bash
git fetch origin pull/xyz/head:pr-xyz
```
要以指定发行版本(如 @sourceVersion@ )的源代码来构建 Gitea,可执行以下命令列出可用的版本并选择某个版本签出。
要以指定发行版本(如 @sourceVersion@ )的源代码来构建 Gitea,可執行以下命令列出可用的版本並選择某个版本签出。
使用以下命令列出可用的版本:
```bash
@@ -49,41 +49,41 @@ git checkout @sourceVersion@ # or git checkout pr-xyz
## 构建
要从源代码进行构建,系统必须预先安装以下程序:
要从源代码進行构建,系统必須预先安裝以下程序:
- `go` @minGoVersion@ 或更高版本,请参阅 [这里](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,并且安装 `npm`, 请参阅 [这里](https://nodejs.org/zh-tw/download/)
- `make`, 请参阅 [这里](development/hacking-on-gitea.md)
- `go` @minGoVersion@ 或更高版本,請参阅 [这里](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,並且安裝 `npm`, 請参阅 [这里](https://nodejs.org/zh-tw/download/)
- `make`, 請参阅 [这里](development/hacking-on-gitea.md)
为了尽可能简化编译过程,提供了各种 [make 任务](https://github.com/go-gitea/gitea/blob/main/Makefile)。
為了尽可能简化编译過程,提供了各种 [make 任务](https://github.com/go-gitea/gitea/blob/main/Makefile)。
根据你的构建需求,以下 tags 可以使用:
- `bindata`: 构建一个单一的整体二进制文件,包含所有资源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支持。仅建议在少数人使用时使用这个模式。
- `pam`: 启用对 PAM( Linux 可插拔认证模块)的支持。可用于对本地用户进行身份验证或扩展身份验证到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 变体的 Git 命令。
- `bindata`: 构建一个單一的整體二進制文件,包含所有资源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支持。僅建议在少数人使用时使用这个模式。
- `pam`: 启用对 PAM( Linux 可插拔認證模組)的支持。可用于对本地使用者進行身份驗證或扩展身份驗證到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 变體的 Git 命令。
将所有资源(JS/CSS/模板等)打包到二进制文件中。在生产环境部署时,使用`bindata`构建标签是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`。
将所有资源(JS/CSS/模板等)打包到二進制文件中。在生产环境部署时,使用`bindata`构建標籤是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`。
要包含所有资源,请使用 `bindata` 标签:
要包含所有资源,請使用 `bindata` 標籤:
```bash
TAGS="bindata" make build
```
在我们的持续集成系统的默认发行版中,构建标签为:`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最简单、推荐方式是:
在我们的持续集成系统的默认发行版中,构建標籤為:`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最简單、推荐方式是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build`目标分为两个子目标:
`build`目标分為两个子目标:
- `make backend` 需要 [Go @minGoVersion@](https://golang.google.cn/doc/install) 或更高版本。
- `make frontend` 需要 [Node.js @minNodeVersion@](https://nodejs.org/zh-tw/download/) 或更高版本。
如果存在预构建的前端文件,可以仅构建后端:
如果存在预构建的前端文件,可以僅构建后端:
```bash
TAGS="bindata" make backend
@@ -91,7 +91,7 @@ TAGS="bindata" make backend
## 测试
按照上述步骤完成后,工作目录中将会有一个`gitea`二进制文件。可以从该目录进行测试,或将其移动到带有测试数据的目录中。当手动从命令行启动 Gitea 时,可以通过按下`Ctrl + C`来停止程序。
按照上述步骤完成后,工作目錄中将会有一个`gitea`二進制文件。可以从該目錄進行测试,或将其移动到带有测试数据的目錄中。当手动从命令行启动 Gitea 时,可以通過按下`Ctrl + C`来停止程序。
```bash
./gitea web
@@ -99,35 +99,35 @@ TAGS="bindata" make backend
## 更改默认路径
Gitea 将从`CustomPath`中查找许多信息。默认的,这会在运行 Gitea 时当前工作目录下的`custom/`目录中(译者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它还将在`$(CustomPath)/conf/app.ini`中查找其配置文件`CustomConf`,并将当前工作目录用作一些可配置值的相对基本路径`AppWorkPath`。最后,静态文件将从默认为 `AppWorkPath`的`StaticRootPath`提供。
Gitea 将从`CustomPath`中查找许多信息。默认的,这会在运行 Gitea 时当前工作目錄下的`custom/`目錄中(译者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它還将在`$(CustomPath)/conf/app.ini`中查找其配置文件`CustomConf`,並将当前工作目錄用作一些可配置值的相对基本路径`AppWorkPath`。最后,静态文件将从默认為 `AppWorkPath`的`StaticRootPath`提供。
尽管在开发时这些值很有用,但可能与下游用户的偏好冲突。
尽管在开发时这些值很有用,但可能与下游使用者的偏好冲突。
一种选择是使用脚本文件来隐藏`gitea`二进制文件,并在运行 Gitea 之前创建适当的环境。然而,在构建时,可以使用`make`的`LDFLAGS`环境变量来更改这些默认值。适当的设置如下:
一种選择是使用脚本文件来隐藏`gitea`二進制文件,並在运行 Gitea 之前建立适当的环境。然而,在构建时,可以使用`make`的`LDFLAGS`环境变量来更改这些默认值。适当的设置如下:
- 要设置`CustomPath`,请使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 对于`CustomConf`,应该使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 对于`AppWorkPath`,应该使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 对于`StaticRootPath`,应该使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的 PID 文件位置,请使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
- 要设置`CustomPath`,請使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 對於`CustomConf`,應該使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 對於`AppWorkPath`,應該使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 對於`StaticRootPath`,應該使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的 PID 文件位置,請使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
将这些字符串与其前导的`-X`添加到`LDFLAGS`变量中,并像上面那样使用适当的`TAGS`运行`make build`。
将这些字符串与其前导的`-X`添加到`LDFLAGS`变量中,並像上面那样使用适当的`TAGS`运行`make build`。
运行`gitea help`将允许您查看配置的`gitea`设置。
## 交叉编译
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。请参考[`GOOS`和`GOARCH`环境变量](https://go.dev/doc/install/source#environment) 以获取支持的目标列表。如果您想为性能较弱的系统(如树莓派)构建 Gitea,交叉编译非常有用。
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。請参考[`GOOS`和`GOARCH`环境变量](https://go.dev/doc/install/source#environment) 以获取支持的目标列表。如果您想為性能较弱的系统(如树莓派)构建 Gitea,交叉编译非常有用。
要使用构建标签(`TAGS`)进行交叉编译 Gitea,您还需要一个 C 交叉编译器,该编译器的目标架构与`GOOS`和`GOARCH`变量选择的架构相同。例如,要为 Linux ARM64(`GOOS=linux`和`GOARCH=arm64`)进行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。这是因为 Gitea 构建标签使用了`cgo`的外部函数接口(FFI)。
要使用构建標籤(`TAGS`)進行交叉编译 Gitea,您還需要一个 C 交叉编译器,該编译器的目标架构与`GOOS`和`GOARCH`变量選择的架构相同。例如,要為 Linux ARM64(`GOOS=linux`和`GOARCH=arm64`)進行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。这是因為 Gitea 构建標籤使用了`cgo`的外部函数接口(FFI)。
在没有任何标签的情况下,交叉编译的 Gitea 为 Linux ARM64 版本:
在没有任何標籤的情况下,交叉编译的 Gitea 為 Linux ARM64 版本:
```
GOOS=linux GOARCH=arm64 make build
```
要交叉编译 Linux ARM64 下的 Gitea,这是推荐的构建标签:
要交叉编译 Linux ARM64 下的 Gitea,这是推荐的构建標籤:
```
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sqlite_unlock_notify" make build
@@ -135,7 +135,7 @@ CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sq
根据您的目标架构,适当替换`CC`、`GOOS`和`GOARCH`。
有时您需要构建一个静态编译的镜像。为此,您需要添加以下内容:
有时您需要构建一个静态编译的镜像。為此,您需要添加以下内容:
```
LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo $TAGS" make build
@@ -145,15 +145,15 @@ LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo
### 添加 bash/zsh 自动补全(从 1.19 版本起)
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一个启用 bash 自动补全的脚本。您可以根据需要进行修改,并在您的 `.bashrc` 中使用 `source` 命令加载该脚本,或者将其复制到 `/usr/share/bash-completion/completions/gitea`。
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一个启用 bash 自动补全的脚本。您可以根据需要進行修改,並在您的 `.bashrc` 中使用 `source` 命令加载該脚本,或者将其复制到 `/usr/share/bash-completion/completions/gitea`。
类似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 `/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载该脚本。
类似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 `/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载該脚本。
可能需要你根据具体情况进一步改进这些脚本。
可能需要你根据具體情况進一步改進这些脚本。
## 在 Linux 上使用 Zig 进行编译或交叉编译
## 在 Linux 上使用 Zig 進行编译或交叉编译
请按照 [Zig 的入门指南](https://ziglang.org/learn/getting-started/#installing-zig) 安装 Zig。
請按照 [Zig 的入门指南](https://ziglang.org/learn/getting-started/#installing-zig) 安裝 Zig。
- 编译 (Linux ➝ Linux)
@@ -180,7 +180,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```
## 在 Windows 上使用 Zig 进行编译或交叉编译
## 在 Windows 上使用 Zig 進行编译或交叉编译
使用`GIT BASH`编译。
@@ -211,7 +211,7 @@ make build
## Source Map
默认情况下,gitea 会为前端文件生成精简的 Source Map 以节省空间。 这可以通过“ENABLE_SOURCEMAP”环境变量进行控制:
默认情况下,gitea 会為前端文件生成精简的 Source Map 以节省空间。 这可以通過“ENABLE_SOURCEMAP”环境变量進行控制:
- `ENABLE_SOURCEMAP=true` 生成所有 Source Map,这是开发版本的默认设置
- `ENABLE_SOURCEMAP=reduced` 生成有限的 Source Map,这是生产版本的默认设置
@@ -6,30 +6,30 @@ aliases:
- /zh-tw/install-on-cloud-provider
---
# 在云服务器上安装 Gitea
# 在云服务器上安裝 Gitea
## Cloudron
Gitea 可以在 [Cloudron](https://cloudron.io) 上进行一键安装。
Cloudron 使得在您的服务器上运行 Gitea,并保持其更新和安全变得简单。
Gitea 可以在 [Cloudron](https://cloudron.io) 上進行一键安裝。
Cloudron 使得在您的服务器上运行 Gitea,並保持其更新和安全变得简單。
[![Install](/cloudron.svg)](https://cloudron.io/button.html?app=io.gitea.cloudronapp)
Gitea 软件包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea-app).
Gitea 軟體包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea-app).
这里有一个[demo 实例](https://my.demo.cloudron.io) (用户名: cloudron 密码: cloudron) 您可以在其中尝试运行 Gitea。
这里有一个[demo 实例](https://my.demo.cloudron.io) (使用者名: cloudron 密碼: cloudron) 您可以在其中尝试运行 Gitea。
## Linode
[Linode](https://www.linode.com/) 将 Gitea 作为其市场中的一个应用程序.
[Linode](https://www.linode.com/) 将 Gitea 作為其市场中的一个應用程序.
要将 Gitea 部署到 Linode, 请参考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
要将 Gitea 部署到 Linode, 請参考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
## alwaysdata
[alwaysdata](https://www.alwaysdata.com/) 将 Gitea 作为其市场中的一个 droplet.
[alwaysdata](https://www.alwaysdata.com/) 将 Gitea 作為其市场中的一个 droplet.
要将 Gitea 部署到 alwaysdata, 请参考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
要将 Gitea 部署到 alwaysdata, 請参考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
## Exoscale
@@ -37,6 +37,6 @@ Gitea 软件包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea
Exoscale 是一家欧洲的云服务提供商。
该软件包通过开源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 进行维护和更新。
該軟體包通過开源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 進行维护和更新。
要在 Exoscale 上部署 Gitea,请参考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
要在 Exoscale 上部署 Gitea,請参考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
@@ -6,11 +6,11 @@ aliases:
- /zh-tw/install-on-kubernetes
---
# 在 Kubernetes 中安装 Gitea
# 在 Kubernetes 中安裝 Gitea
Gitea 已经提供了便于在 Kubernetes 云原生环境中安装所需的 Helm Chart
Gitea 已经提供了便于在 Kubernetes 云原生环境中安裝所需的 Helm Chart
默认安装指令为:
默认安裝指令為:
```bash
helm repo add gitea https://dl.gitea.com/charts
@@ -18,9 +18,9 @@ helm repo update
helm install gitea gitea/gitea
```
如果采用默认安装指令,Helm 会部署单实例的 Gitea, PostgreSQL, Memcached。若您想实现自定义安装(包括配置 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久存储等),请前往阅读:[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
如果采用默认安裝指令,Helm 会部署單实例的 Gitea, PostgreSQL, Memcached。若您想实現自定义安裝(包括配置 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久存儲等),請前往阅读:[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
您也可以通过 `helm show` 命令导出 `README.md` 和配置文件 `values.yaml` 进行学习和编辑,例如:
您也可以通過 `helm show` 命令导出 `README.md` 和配置文件 `values.yaml` 進行学习和编辑,例如:
```bash
helm show values gitea/gitea > values.yaml
@@ -46,7 +46,7 @@ livenessProbe:
failureThreshold: 10
```
成功的运行状况检查响应代码为 HTTP `200`,下面是示例:
成功的运行状况检查響應代码為 HTTP `200`,下面是示例:
```json
HTTP/1.1 200 OK
@@ -71,4 +71,4 @@ HTTP/1.1 200 OK
}
```
有关更多信息,请参考 Kubernetes 文档 [配置存活、就绪和启动探测器](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
有关更多信息,請参考 Kubernetes 文檔 [配置存活、就绪和启动探测器](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
@@ -12,17 +12,17 @@ aliases:
### systemd 方式
在 terminal 中执行以下命令:
在 terminal 中執行以下命令:
```
sudo vim /etc/systemd/system/gitea.service
```
接着拷贝示例代码 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 并取消对任何需要运行在主机上的服务部分的注释,譬如 MySQL。
接着拷贝示例代码 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 並取消对任何需要运行在主机上的服务部分的注释,譬如 MySQL。
修改 user,home 目录以及其他必须的初始化参数,如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
修改 user,home 目錄以及其他必須的初始化參數,如果使用自定义端口,则需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记。
激活 gitea 并将它作为系统自启动服务:
激活 gitea 並将它作為系统自启动服务:
```
sudo systemctl enable gitea
@@ -31,13 +31,13 @@ sudo systemctl start gitea
### 使用 supervisor
在 terminal 中执行以下命令安装 supervisor:
在 terminal 中執行以下命令安裝 supervisor:
```
sudo apt install supervisor
```
为 supervisor 配置日志路径:
為 supervisor 配置日志路径:
```
# assuming gitea is installed in /home/git/gitea/
@@ -53,9 +53,9 @@ sudo vim /etc/supervisor/supervisord.conf
增加如下示例配置
[supervisord config](https://github.com/go-gitea/gitea/blob/main/contrib/supervisor/gitea)。
将 user(git) 和 home(/home/git) 设置为与上文部署中匹配的值。如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
将 user(git) 和 home(/home/git) 设置為与上文部署中匹配的值。如果使用自定义端口,则需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记。
最后激活 supervisor 并将它作为系统自启动服务:
最后激活 supervisor 並将它作為系统自启动服务:
```
sudo systemctl enable supervisor
@@ -8,17 +8,17 @@ sidebar_position: 100
在升级之前,您需要做如下的准备工作。
## 为重大变更检查更新日志
## 為重大变更检查更新日志
为了让 Gitea 变得更好,进行重大变更是不可避免的,尤其是一些里程碑更新的发布。
在更新前,请 [在 Gitea 博客上阅读更新日志](https://blog.gitea.com/)
并检查重大变更是否会影响你的 Gitea 实例。
為了让 Gitea 变得更好,進行重大变更是不可避免的,尤其是一些里程碑更新的發佈。
在更新前,請 [在 Gitea 博客上阅读更新日志](https://blog.gitea.com/)
並检查重大变更是否会影響你的 Gitea 实例。
## 在控制面板中检查过期的配置项
## 在控制面板中检查過期的配置项
一些配置项可能会在后续版本中过期,你需要在控制面板中检查他们。如果不解决过期的配置项,
Gitea也许会在升级后无法重启。你可以访问 https://docs.gitea.com 获得要升级的版本
对应的文档来修改你的配置文件。
一些配置项可能会在后续版本中過期,你需要在控制面板中检查他们。如果不解决過期的配置项,
Gitea也许会在升级后無法重启。你可以访问 https://docs.gitea.com 获得要升级的版本
对應的文檔来修改你的配置文件。
## 降级前的备份
@@ -32,13 +32,13 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
| 当前 | 目标 | 结果 |
| --- | --- | --- |
| 1.4.0 | 1.4.1 | ✅ |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,让它可以正常工作。我们强烈建议降级前进行完全的备份。 |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,让它可以正常工作。我们强烈建议降级前進行完全的备份。 |
| 1.4.x | 1.5.y | ✅ 数据库会被自动升级。你可以直接从 1.4.x 升级到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且无法用于旧版本Gitea,使用备份来进行降级。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且無法用于旧版本Gitea,使用备份来進行降级。 |
**因为你不能基于升级后的数据库运行旧版 Gitea,所以你应该在数据库升级前完成数据备份。**
**因為你不能基于升级后的数据库运行旧版 Gitea,所以你應該在数据库升级前完成数据备份。**
如果你在生产环境下使用 Gitea,你应该在升级前做好备份,哪怕只是小版本的补丁更新。
如果你在生产环境下使用 Gitea,你應該在升级前做好备份,哪怕只是小版本的补丁更新。
备份步骤:
@@ -46,18 +46,18 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
* 备份数据库
* 备份 Gitea 配置文件
* 备份 Gitea 在 `APP_DATA_PATH` 中的数据文件
* 备份 Gitea 的外部存储 (例如: S3/MinIO 或被使用的其他存储)
* 备份 Gitea 的外部存儲 (例如: S3/MinIO 或被使用的其他存儲)
如果你在使用云服务或拥有快照功能的文件系统,
最好对 Gitea 的数据盘及相关资料存储进行一次快照。
最好对 Gitea 的数据盘及相关资料存儲進行一次快照。
在所有上述步骤准备妥当之后,要升级 Gitea,只需要下载新版,停止运行旧版,进行数据备份,然后运行新版就好。
每次 Gitea 实例启动时,它都会检查是否要进行数据库迁移。
如果需要进行数据库迁移,Gitea 会花一些时间完成升级然后继续服务。
在所有上述步骤准备妥当之后,要升级 Gitea,只需要下载新版,停止运行旧版,進行数据备份,然后运行新版就好。
每次 Gitea 实例启动时,它都会检查是否要進行数据库迁移。
如果需要進行数据库迁移,Gitea 会花一些时间完成升级然后继续服务。
## 从 Docker 升级
* `docker pull` 拉取 Gitea 的最新发布版。
* `docker pull` 拉取 Gitea 的最新發佈版。
* 停止运行中的实例,备份数据。
* 使用 `docker` 或 `docker-compose` 启动较新的 Gitea Docker 容器.
@@ -67,18 +67,18 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
* 使用你的包管理器更新 Gitea 到最新版本。
* 启动 Gitea 实例。
## 从二进制升级
## 从二進制升级
* 下载最新的 Gitea 二进制文件到临时文件夹中。
* 下载最新的 Gitea 二進制文件到临时文件夹中。
* 停止运行中的实例,备份数据。
* 将旧的 Gitea 二进制文件覆盖成新的。
* 将旧的 Gitea 二進制文件覆盖成新的。
* 启动 Gitea 实例。
在 Linux 系统上自动执行以上步骤的脚本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 来获取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
在 Linux 系统上自动執行以上步骤的脚本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 来获取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
## 小心你的自定义模板
Gitea 的模板结构与变量可能会随着各个版本的发布发生变化,如果你使用了自定义模板,
Gitea 的模板结构与变量可能会随着各个版本的發佈发生变化,如果你使用了自定义模板,
你得注意你的模板与你使用的 Gitea 版本的兼容性。
如果自定义模板与 Gitea 版本不兼容,你可能会遇到:
@@ -6,45 +6,45 @@ aliases:
- /zh-tw/windows-service
---
# 注册为 Windows 服务
# 注册為 Windows 服务
## 准备工作
在 C:\gitea\custom\conf\app.ini 中进行了以下更改:
在 C:\gitea\custom\conf\app.ini 中進行了以下更改:
```ini title="app.ini"
RUN_USER = COMPUTERNAME$
```
将 Gitea 设置为以本地系统用户运行。
将 Gitea 设置為以本地系统使用者运行。
COMPUTERNAME 是从命令行中运行 `echo %COMPUTERNAME%` 后得到的响应。如果响应是 `USER-PC`,那么 `RUN_USER = USER-PC$`。
COMPUTERNAME 是从命令行中运行 `echo %COMPUTERNAME%` 后得到的響應。如果響應是 `USER-PC`,那么 `RUN_USER = USER-PC$`。
### 使用绝对路径
如果您使用 SQLite3,请将 `PATH` 更改为包含完整路径:
如果您使用 SQLite3,請将 `PATH` 更改為包含完整路径:
```ini title="app.ini"
[database]
PATH = c:/gitea/data/gitea.db
```
## 注册为 Windows 服务
## 注册為 Windows 服务
要注册为 Windows 服务,首先以 Administrator 身份运行 `cmd`,然后执行以下命令:
要注册為 Windows 服务,首先以 Administrator 身份运行 `cmd`,然后執行以下命令:
```
sc.exe create gitea start= auto binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""
```
别忘了将 `C:\gitea` 替换成你的 Gitea 安装目录。
别忘了将 `C:\gitea` 替换成你的 Gitea 安裝目錄。
之后在控制面板打开 "Windows Services",搜索 "gitea",右键选择 "Run"。在浏览器打开 `http://localhost:3000` 就可以访问了。(如果你修改了端口,请访问对应的端口,3000 是默认端口)。
之后在控制面板打开 "Windows Services",搜索 "gitea",右键選择 "Run"。在浏览器打开 `http://localhost:3000` 就可以访问了。(如果你修改了端口,請访问对應的端口,3000 是默认端口)。
### 服务启动类型
### 服务启动類型
据观察,在启动期间加载的系统上,Gitea 服务可能无法启动,并在 Windows 事件日志中记录超时。
在这种情况下,将启动类型更改为`Automatic-Delayed`。这可以在服务创建期间完成,或者通过运行配置命令来完成。
据观察,在启动期间加载的系统上,Gitea 服务可能無法启动,並在 Windows 事件日志中记录超时。
在这种情况下,将启动類型更改為`Automatic-Delayed`。这可以在服务建立期间完成,或者通過运行配置命令来完成。
```
sc.exe config gitea start= delayed-auto
@@ -52,7 +52,7 @@ sc.exe config gitea start= delayed-auto
### 添加启动依赖项
要将启动依赖项添加到 Gitea Windows 服务(例如 Mysql、Mariadb),作为管理员,然后运行以下命令:
要将启动依赖项添加到 Gitea Windows 服务(例如 Mysql、Mariadb),作為管理员,然后运行以下命令:
```
sc.exe config gitea depend= mariadb
@@ -62,7 +62,7 @@ sc.exe config gitea depend= mariadb
## 从 Windows 服务中删除
以 Administrator 身份运行 `cmd`,然后执行以下命令:
以 Administrator 身份运行 `cmd`,然后執行以下命令:
```
sc.exe delete gitea
@@ -6,19 +6,19 @@ aliases:
- /zh-tw/install-with-docker-rootless
---
# 使用 Docker 安装 (rootless)
# 使用 Docker 安裝 (rootless)
Gitea 在其 Docker Hub 组织中提供自动更新的 Docker 镜像。您可以始终使用最新的稳定标签,或使用其他处理 Docker 镜像更新的服务。
Gitea 在其 Docker Hub 組織中提供自动更新的 Docker 镜像。您可以始终使用最新的稳定標籤,或使用其他处理 Docker 镜像更新的服务。
rootless 镜像使用 Gitea 内部 SSH 功能来提供 Git 协议,但不支持 OpenSSH。
本参考设置指南将用户引导通过基于 `docker-compose` 的设置。但是,`docker-compose` 的安装超出了本文档的范围。要安装`docker-compose` 本身, 请按照官方的 [安装说明](https://docs.docker.com/compose/install/)进行操作。
本参考设置指南将使用者引导通過基于 `docker-compose` 的设置。但是,`docker-compose` 的安裝超出了本文檔的范围。要安裝`docker-compose` 本身, 請按照官方的 [安裝说明](https://docs.docker.com/compose/install/)進行操作。
## 基础设置
最简单的设置只需创建一个卷和一个网络,并将 `docker.gitea.com/gitea:latest-rootless` 镜像作为服务启动。由于没有可用的数据库,可以使用 SQLite3 来初始化一个。
最简單的设置只需建立一个卷和一个网络,並将 `docker.gitea.com/gitea:latest-rootless` 镜像作為服务启动。由于没有可用的数据库,可以使用 SQLite3 来初始化一个。
创建一个名为 `data` 和 `config`:
建立一个名為 `data` 和 `config`:
```sh
mkdir -p gitea/{data,config}
@@ -26,7 +26,7 @@ cd gitea
touch docker-compose.yml
```
然后将以下内容粘贴到名为 `docker-compose.yml` 的文件中:
然后将以下内容粘贴到名為 `docker-compose.yml` 的文件中:
```yaml
version: "2"
@@ -45,19 +45,19 @@ services:
- "2222:2222"
```
请注意,卷应由在配置文件中指定的 UID/GID 的用户/组所有。默认情况下,Docker 中的 Gitea 将使用 uid:1000 gid:1000。如果需要,您可以使用以下命令设置这些文件夹的所有权:
請注意,卷應由在配置文件中指定的 UID/GID 的使用者/组所有。默认情况下,Docker 中的 Gitea 将使用 uid:1000 gid:1000。如果需要,您可以使用以下命令设置这些文件夹的所有权:
```sh
sudo chown 1000:1000 config/ data/
```
> 如果未为卷设置正确的权限,容器可能无法启动。
> 如果未為卷设置正确的权限,容器可能無法启动。
对于稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-dev-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。
對於稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 標籤。如果您想运行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。
## 自定义端口
要将集成的 SSH 和 Web 服务器绑定到不同的端口,请调整端口部分。通常只需更改主机端口并保持容器内的端口不变。
要将集成的 SSH 和 Web 服务器绑定到不同的端口,請调整端口部分。通常只需更改主机端口並保持容器内的端口不变。
```diff
version: "2"
@@ -80,7 +80,7 @@ services:
## MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,请对上面创建的 `docker-compose.yml` 文件进行以下更改。
要将 Gitea 与 MySQL 数据库结合使用,請对上面建立的 `docker-compose.yml` 文件進行以下更改。
```diff
version: "2"
@@ -120,7 +120,7 @@ services:
## PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,请对上面创建的 `docker-compose.yml` 文件进行以下更改。
要将 Gitea 与 PostgreSQL 数据库结合使用,請对上面建立的 `docker-compose.yml` 文件進行以下更改。
```diff
version: "2"
@@ -159,7 +159,7 @@ services:
## 命名卷 (Named Volumes)
要使用命名卷 (Named Volumes) 而不是主机卷 (Host Volumes),请在 `docker-compose.yml` 配置中定义和使用命名卷。这样的更改将自动创建所需的卷。您不需要担心权限问题,Docker 会自动处理。
要使用命名卷 (Named Volumes) 而不是主机卷 (Host Volumes),請在 `docker-compose.yml` 配置中定义和使用命名卷。这样的更改将自动建立所需的卷。您不需要担心权限问题,Docker 会自动处理。
```diff
version: "2"
@@ -186,13 +186,13 @@ services:
- "2222:2222"
```
MySQL 或 PostgreSQL 容器需要单独创建。
MySQL 或 PostgreSQL 容器需要單独建立。
## 自定义用户
## 自定义使用者
你可以选择使用自定义用户 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主机用户 `git` 的定义,请使用命令 `id -u git` 并将其添加到 `docker-compose.yml` 文件中:
请确用户对保挂载的文件夹具有写权限。
你可以選择使用自定义使用者 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主机使用者 `git` 的定义,請使用命令 `id -u git` 並将其添加到 `docker-compose.yml` 文件中:
請确使用者对保挂载的文件夹具有写权限。
```diff
version: "2"
@@ -214,19 +214,19 @@ services:
## 启动
要启动基于 `docker-compose` 的这个设置,请执行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正确启动。可以使用 `docker-compose logs` 命令查看日志。
要启动基于 `docker-compose` 的这个设置,請執行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正确启动。可以使用 `docker-compose logs` 命令查看日志。
要关闭设置,请执行 `docker-compose down` 命令。这将停止和终止容器,但卷仍将存在。
要关闭设置,請執行 `docker-compose down` 命令。这将停止和终止容器,但卷仍将存在。
注意:如果在 HTTP 上使用的是非 3000 端口,请将 app.ini 更改为匹配 `LOCAL_ROOT_URL = http://localhost:3000/`。
注意:如果在 HTTP 上使用的是非 3000 端口,請将 app.ini 更改為匹配 `LOCAL_ROOT_URL = http://localhost:3000/`。
## 安装
## 安裝
在通过 `docker-compose` 启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea,完成安装过程。访问 `http://<服务器-IP>:3000` 并按照安装向导进行操作。如果数据库是使用上述文档中的 `docker-compose` 设置启动的,请注意必须使用 `db` 作为数据库主机名。
在通過 `docker-compose` 启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea,完成安裝過程。访问 `http://<服务器-IP>:3000` 並按照安裝向导進行操作。如果数据库是使用上述文檔中的 `docker-compose` 设置启动的,請注意必須使用 `db` 作為数据库主机名。
## 自定义
自定义文件的位置位于 `/var/lib/gitea/custom` 目录中,可以在这里找到有关自定义的文件说明。如果使用主机卷(host volumes),很容易访问这些文件;如果使用命名卷(named volumes),则可以通过另一个容器或直接访问 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea` 来进行访问。在安装后,配置文件将保存在 `/etc/gitea/app.ini` 中。
自定义文件的位置位于 `/var/lib/gitea/custom` 目錄中,可以在这里找到有关自定义的文件说明。如果使用主机卷(host volumes),很容易访问这些文件;如果使用命名卷(named volumes),则可以通過另一个容器或直接访问 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea` 来進行访问。在安裝后,配置文件将保存在 `/etc/gitea/app.ini` 中。
## 升级
@@ -234,10 +234,10 @@ services:
:exclamation::exclamation: **确保您已将数据卷迁移到 Docker 容器之外的其他位置** :exclamation::exclamation:
:::
要将安装升级到最新版本,请按照以下步骤操作:
要将安裝升级到最新版本,請按照以下步骤操作:
```bash
# 如果在 docker-compose.yml 中指定了版本,请编辑该文件以更新版本
# 如果在 docker-compose.yml 中指定了版本,請编辑該文件以更新版本
# 拉取新的镜像
docker-compose pull
# 启动一个新的容器,自动移除旧的容器
@@ -247,18 +247,18 @@ docker-compose up -d
## 从标准镜像升级
- 备份您的设置
- 将卷挂载点从 `/data` 更改为 `/var/lib/gitea`
- 如果使用了自定义的 `app.ini`,请将其移动到新的挂载到 `/etc/gitea` 的卷中
- 将卷中的文件夹(gitea)重命名为 custom
- 将卷挂载点从 `/data` 更改為 `/var/lib/gitea`
- 如果使用了自定义的 `app.ini`,請将其移动到新的挂载到 `/etc/gitea` 的卷中
- 将卷中的文件夹(gitea)重命名為 custom
- 如果需要,编辑 `app.ini`
- 设置 `START_SSH_SERVER = true`
- 使用镜像 ` docker.gitea.com/gitea:@dockerVersion@-rootless`
## 使用环境变量管理部署
除了上述的环境变量外,`app.ini` 中的任何设置都可以通过形式为 `GITEA__SECTION_NAME__KEY_NAME` 的环境变量进行设置或覆盖。这些设置在每次 Docker 容器启动时都会生效。完整信息请参考[这里](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
除了上述的环境变量外,`app.ini` 中的任何设置都可以通過形式為 `GITEA__SECTION_NAME__KEY_NAME` 的环境变量進行设置或覆盖。这些设置在每次 Docker 容器启动时都会生效。完整信息請参考[这里](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
这些环境变量可以在 `docker-compose.yml` 中传递给 Docker 容器。以下示例将启用 SMTP 邮件服务器,如果主机上设置了所需的环境变量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD,或者在与 `docker-compose.yml` 相同目录中的 `.env` 文件中设置了这些环境变量:
这些环境变量可以在 `docker-compose.yml` 中传递给 Docker 容器。以下示例将启用 SMTP 邮件服务器,如果主机上设置了所需的环境变量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD,或者在与 `docker-compose.yml` 相同目錄中的 `.env` 文件中设置了这些环境变量:
```bash
...
@@ -278,32 +278,32 @@ services:
# SSH 容器透传
由于 SSH 在容器内运行,如果需要 SSH 支持,需要将 SSH 从主机透传到容器。一种选择是在容器内运行 SSH,并使用非标准端口(或将主机端口移动到非标准端口)。另一种可能更直接的选择是将主机上的 SSH 命令转发到容器。下面解释了这种设置。
由于 SSH 在容器内运行,如果需要 SSH 支持,需要将 SSH 从主机透传到容器。一种選择是在容器内运行 SSH,並使用非标准端口(或将主机端口移动到非标准端口)。另一种可能更直接的選择是将主机上的 SSH 命令转发到容器。下面解释了这种设置。
本指南假设您已在主机上创建了一个名为 `git` 的用户,并具有运行 `docker exec` 的权限,并且 Gitea 容器的名称为 `gitea`。您需要修改该用户的 shell,以将命令转发到容器内的 `sh` 可执行文件,使用 `docker exec`。
本指南假设您已在主机上建立了一个名為 `git` 的使用者,並具有运行 `docker exec` 的权限,並且 Gitea 容器的名稱為 `gitea`。您需要修改該使用者的 shell,以将命令转发到容器内的 `sh` 可執行文件,使用 `docker exec`。
首先,在主机上创建文件 `/usr/local/bin/gitea-shell`,并填入以下内容:
首先,在主机上建立文件 `/usr/local/bin/gitea-shell`,並填入以下内容:
```bash
#!/bin/sh
/usr/bin/docker exec -i --env SSH_ORIGINAL_COMMAND="$SSH_ORIGINAL_COMMAND" gitea sh "$@"
```
注意上述 docker 命令中的 `gitea` 是容器的名称。如果您的容器名称不同,请记得更改。
注意上述 docker 命令中的 `gitea` 是容器的名稱。如果您的容器名稱不同,請记得更改。
还应确保正确设置了 shell 包装器的权限:
還應确保正确设置了 shell 包装器的权限:
```bash
sudo chmod +x /usr/local/bin/gitea-shell
```
一旦包装器就位,您可以将其设置为 `git` 用户的 shell:
一旦包装器就位,您可以将其设置為 `git` 使用者的 shell:
```bash
sudo usermod -s /usr/local/bin/gitea-shell git
```
现在,所有的 SSH 命令都会被转发到容器,您需要在主机上设置 SSH 认证。这可以通过利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 来匹配 Gitea 接受的密钥。在主机的 `/etc/ssh/sshd_config` 文件中添加以下代码块:
現在,所有的 SSH 命令都会被转发到容器,您需要在主机上设置 SSH 認證。这可以通過利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 来匹配 Gitea 接受的密钥。在主机的 `/etc/ssh/sshd_config` 文件中添加以下代码块:
```bash
Match User git
@@ -311,7 +311,7 @@ Match User git
AuthorizedKeysCommand /usr/bin/docker exec -i gitea /usr/local/bin/gitea keys -c /etc/gitea/app.ini -e git -u %u -t %t -k %k
```
(从 1.16.0 开始,您将不需要设置 `-c /etc/gitea/app.ini` 选项。)
(从 1.16.0 开始,您将不需要设置 `-c /etc/gitea/app.ini` 選项。)
剩下的就是重新启动 SSH 服务器:
@@ -321,5 +321,5 @@ sudo systemctl restart sshd
**注意**
这实际上并没有使用 Docker 的 SSH,而是仅仅使用了围绕它的命令。
这实际上並没有使用 Docker 的 SSH,而是僅僅使用了围绕它的命令。
从理论上讲,您可以不运行内部的 SSH 服务器。
@@ -6,15 +6,15 @@ aliases:
- /zh-tw/install-with-docker
---
# 使用 Docker 安装
# 使用 Docker 安裝
Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始终使用最新的稳定标签或使用其他服务来更新 Docker 镜像。
Gitea 在其 Docker Hub 組織内提供自动更新的 Docker 镜像。可以始终使用最新的稳定標籤或使用其他服务来更新 Docker 镜像。
该参考设置指导用户完成基于 `docker-compose` 的设置,但是 `docker-compose` 的安装不在本文档的范围之内。要安装 `docker-compose` 本身,请遵循官方[安装说明](https://docs.docker.com/compose/install/)。
該参考设置指导使用者完成基于 `docker-compose` 的设置,但是 `docker-compose` 的安裝不在本文檔的范围之内。要安裝 `docker-compose` 本身,請遵循官方[安裝说明](https://docs.docker.com/compose/install/)。
## 基本
最简单的设置只是创建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 `gitea` 的目录,并将以下内容粘贴到名为 `docker-compose.yml` 的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 `:latest` 将安装当前的开发版本。对于稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。
最简單的设置只是建立一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作為服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。建立一个类似 `gitea` 的目錄,並将以下内容粘贴到名為 `docker-compose.yml` 的文件中。請注意,該卷應由配置文件中指定的 UID/GID 的使用者/组拥有。如果您不授予卷正确的权限,则容器可能無法启动。另請注意,標籤 `:latest` 将安裝当前的开发版本。對於稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。
```yaml
version: "3"
@@ -44,7 +44,7 @@ services:
## 端口
要将集成的 openSSH 守护进程和 Web 服务器绑定到其他端口,请调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。
要将集成的 openSSH 守护進程和 Web 服务器绑定到其他端口,請调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。
```diff
version: "3"
@@ -78,7 +78,7 @@ services:
### MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,请将这些更改应用于上面创建的 `docker-compose.yml` 文件。
要将 Gitea 与 MySQL 数据库结合使用,請将这些更改應用于上面建立的 `docker-compose.yml` 文件。
```diff
version: "3"
@@ -128,7 +128,7 @@ services:
### PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,请将这些更改应用于上面创建的 `docker-compose.yml` 文件。
要将 Gitea 与 PostgreSQL 数据库结合使用,請将这些更改應用于上面建立的 `docker-compose.yml` 文件。
```diff
version: "3"
@@ -177,7 +177,7 @@ services:
## 命名卷
要使用命名卷而不是主机卷,请在 `docker-compose.yml` 配置中定义并使用命名卷。此更改将自动创建所需的卷。您无需担心命名卷的权限;Docker 将自动处理该问题。
要使用命名卷而不是主机卷,請在 `docker-compose.yml` 配置中定义並使用命名卷。此更改将自动建立所需的卷。您無需担心命名卷的权限;Docker 将自动处理該问题。
```diff
version: "3"
@@ -207,51 +207,51 @@ services:
- "222:22"
```
MySQL 或 PostgreSQL 容器将需要分别创建。
MySQL 或 PostgreSQL 容器将需要分别建立。
## 启动
要基于 `docker-compose` 启动此设置,请执行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 将显示 Gitea 是否正确启动。可以使用 `docker-compose logs` 查看日志。
要基于 `docker-compose` 启动此设置,請執行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 将显示 Gitea 是否正确启动。可以使用 `docker-compose logs` 查看日志。
要关闭设置,请执行 `docker-compose down`。这将停止并杀死容器。这些卷将仍然存在。
要关闭设置,請執行 `docker-compose down`。这将停止並杀死容器。这些卷将仍然存在。
注意:如果在 http 上使用非 3000 端口,请更改 app.ini 以匹配 `LOCAL_ROOT_URL = http://localhost:3000/`。
注意:如果在 http 上使用非 3000 端口,請更改 app.ini 以匹配 `LOCAL_ROOT_URL = http://localhost:3000/`。
## 安装
## 安裝
通过 `docker-compose` 启动 Docker 安装后,应该可以使用喜欢的浏览器访问 Gitea,以完成安装。访问 http://server-ip:3000 并遵循安装向导。如果数据库是通过上述 `docker-compose` 设置启动的,请注意,必须将 `db` 用作数据库主机名。
通過 `docker-compose` 启动 Docker 安裝后,應該可以使用喜欢的浏览器访问 Gitea,以完成安裝。访问 http://server-ip:3000 並遵循安裝向导。如果数据库是通過上述 `docker-compose` 设置启动的,請注意,必須将 `db` 用作数据库主机名。
## 环境变量
您可以通过环境变量配置 Gitea 的一些设置:
您可以通過环境变量配置 Gitea 的一些设置:
(默认值以**粗体**显示)
(默认值以**粗體**显示)
- `APP_NAME`:**“Gitea: Git with a cup of tea”**:应用程序名称,在页面标题中使用。
- `RUN_MODE`:**prod**:应用程序运行模式,会影响性能和调试。"dev","prod"或"test"。
- `APP_NAME`:**“Gitea: Git with a cup of tea”**:應用程序名稱,在页面标题中使用。
- `RUN_MODE`:**prod**:應用程序运行模式,会影響性能和调试。"dev","prod"或"test"。
- `DOMAIN`:**localhost**:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
- `SSH_DOMAIN`:**localhost**:该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- `SSH_DOMAIN`:**localhost**:該服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安裝页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- `SSH_PORT`:**22**:克隆 URL 中显示的 SSH 端口。
- `SSH_LISTEN_PORT`:**%(SSH_PORT)s**:内置 SSH 服务器的端口。
- `DISABLE_SSH`:**false**:如果不可用,请禁用 SSH 功能。如果要禁用 SSH 功能,则在安装 Gitea 时应将 SSH 端口设置为 `0`。
- `DISABLE_SSH`:**false**:如果不可用,請禁用 SSH 功能。如果要禁用 SSH 功能,则在安裝 Gitea 时應将 SSH 端口设置為 `0`。
- `HTTP_PORT`:**3000**:HTTP 监听端口。
- `ROOT_URL`:**""**:覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
- `LFS_START_SERVER`:**false**:启用 git-lfs 支持。
- `DB_TYPE`:**sqlite3**:正在使用的数据库类型[mysql,postgres,mssql,sqlite3]。
- `DB_TYPE`:**sqlite3**:正在使用的数据库類型[mysql,postgres,mssql,sqlite3]。
- `DB_HOST`:**localhost:3306**:数据库主机地址和端口。
- `DB_NAME`:**gitea**:数据库名称。
- `DB_USER`:**root**:数据库用户名。
- `DB_PASSWD`:**"_empty_"** :数据库用户密码。如果您在密码中使用特殊字符,请使用“您的密码”进行引用。
- `INSTALL_LOCK`:**false**:禁止访问安装页面。
- `SECRET_KEY`:**""** :全局密钥。这应该更改。如果它具有一个值并且 `INSTALL_LOCK` 为空,则 `INSTALL_LOCK` 将自动设置为 `true`。
- `DISABLE_REGISTRATION`:**false**:禁用注册,之后只有管理员才能为用户创建帐户。
- `REQUIRE_SIGNIN_VIEW`:**false**:启用此选项可强制用户登录以查看任何页面。
- `USER_UID`:**1000**:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与 `/data` 卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。
- `USER_GID`:**1000**:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与 `/data` 卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。
- `DB_NAME`:**gitea**:数据库名稱。
- `DB_USER`:**root**:数据库使用者名。
- `DB_PASSWD`:**"_empty_"** :数据库使用者密碼。如果您在密碼中使用特殊字符,請使用“您的密碼”進行引用。
- `INSTALL_LOCK`:**false**:禁止访问安裝页面。
- `SECRET_KEY`:**""** :全局密钥。这應該更改。如果它具有一个值並且 `INSTALL_LOCK` 為空,则 `INSTALL_LOCK` 将自动设置為 `true`。
- `DISABLE_REGISTRATION`:**false**:禁用注册,之后只有管理员才能為使用者建立帳戶。
- `REQUIRE_SIGNIN_VIEW`:**false**:启用此選项可强制使用者登入以查看任何页面。
- `USER_UID`:**1000**:在容器内运行 Gitea 的使用者的 UID(Unix 使用者 ID)。如果使用主机卷,则将其与 `/data` 卷的所有者的 UID 匹配(對於命名卷,则不需要这样做)。
- `USER_GID`:**1000**:在容器内运行 Gitea 的使用者的 GID(Unix 组 ID)。如果使用主机卷,则将其与 `/data` 卷的所有者的 GID 匹配(對於命名卷,则不需要这样做)。
## 自定义
[此处](../administration/customizing-gitea.md)描述的定制文件应放在 `/data/gitea` 目录中。如果使用主机卷,则访问这些文件非常容易;对于命名卷,可以通过另一个容器或通过直接访问 `/var/lib/docker/volumes/gitea_gitea/_data` 来完成。安装后,配置文件将保存在 `/data/gitea/conf/app.ini` 中。
[此处](../administration/customizing-gitea.md)描述的定制文件應放在 `/data/gitea` 目錄中。如果使用主机卷,则访问这些文件非常容易;對於命名卷,可以通過另一个容器或通過直接访问 `/var/lib/docker/volumes/gitea_gitea/_data` 来完成。安裝后,配置文件将保存在 `/data/gitea/conf/app.ini` 中。
## 升级
@@ -259,7 +259,7 @@ MySQL 或 PostgreSQL 容器将需要分别创建。
:exclamation::exclamation: **确保已将数据卷到 Docker 容器外部的某个位置** :exclamation::exclamation:
:::
要将安装升级到最新版本:
要将安裝升级到最新版本:
```bash
# Edit `docker-compose.yml` to update the version, if you have one specified
@@ -271,7 +271,7 @@ docker-compose up -d
## 使用环境变量管理部署
除了上面的环境变量之外,`app.ini` 中的任何设置都可以使用以下形式的环境变量进行设置或覆盖:`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器启动时都会应用这些设置。 完整信息在[这里](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
除了上面的环境变量之外,`app.ini` 中的任何设置都可以使用以下形式的环境变量進行设置或覆盖:`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器启动时都会應用这些设置。 完整信息在[这里](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
```bash
...
@@ -286,7 +286,7 @@ services:
- GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}"""
```
Gitea 将为每次新安装自动生成新的 `SECRET_KEY` 并将它们写入 `app.ini`。 如果您想手动设置 `SECRET_KEY`,您可以使用以下 docker 命令来使用 Gitea 内置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安装后请妥善保管您的 `SECRET_KEY`,如若丢失则无法解密已加密的数据。
Gitea 将為每次新安裝自动生成新的 `SECRET_KEY` 並将它们写入 `app.ini`。 如果您想手动设置 `SECRET_KEY`,您可以使用以下 docker 命令来使用 Gitea 内置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安裝后請妥善保管您的 `SECRET_KEY`,如若丢失则無法解密已加密的数据。
以下命令将向 `stdout` 输出一个新的 `SECRET_KEY` 和 `INTERNAL_TOKEN`,然后您可以将其放入环境变量中。
@@ -307,9 +307,9 @@ services:
## SSH 容器直通
由于 SSH 在容器内运行,因此,如果需要 SSH 支持,则需要将 SSH 从主机传递到容器。一种选择是在非标准端口上运行容器 SSH(或将主机端口移至非标准端口)。另一个可能更直接的选择是将 SSH 连接从主机转发到容器。下面将说明此设置。
由于 SSH 在容器内运行,因此,如果需要 SSH 支持,则需要将 SSH 从主机传递到容器。一种選择是在非标准端口上运行容器 SSH(或将主机端口移至非标准端口)。另一个可能更直接的選择是将 SSH 连接从主机转发到容器。下面将说明此设置。
本指南假定您已经在名为 `git` 的主机上创建了一个用户,该用户与容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`。这些值可以在 `docker-compose.yml` 中设置为环境变量:
本指南假定您已经在名為 `git` 的主机上建立了一个使用者,該使用者与容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`。这些值可以在 `docker-compose.yml` 中设置為环境变量:
```bash
environment:
@@ -317,26 +317,26 @@ environment:
- USER_GID=1000
```
接下来将主机的 `/home/git/.ssh` 装入容器。否则,SSH 身份验证将无法在容器内运行。
接下来将主机的 `/home/git/.ssh` 装入容器。否则,SSH 身份驗證将無法在容器内运行。
```bash
volumes:
- /home/git/.ssh/:/data/git/.ssh
```
现在,需要在主机上创建 SSH 密钥对。该密钥对将用于向主机验证主机上的 `git` 用户。
現在,需要在主机上建立 SSH 密钥对。該密钥对将用于向主机驗證主机上的 `git` 使用者。
```bash
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
```
在下一步中,需要在主机上创建一个名为 `/usr/local/bin/gitea` 的文件(具有可执行权限)。该文件将发出从主机到容器的 SSH 转发。将以下内容添加到 `/usr/local/bin/gitea`:
在下一步中,需要在主机上建立一个名為 `/usr/local/bin/gitea` 的文件(具有可執行权限)。該文件将发出从主机到容器的 SSH 转发。将以下内容添加到 `/usr/local/bin/gitea`:
```bash
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
```
为了使转发正常工作,需要将容器(22)的 SSH 端口映射到 `docker-compose.yml` 中的主机端口 2222。由于此端口不需要暴露给外界,因此可以将其映射到主机的 `localhost`:
為了使转发正常工作,需要将容器(22)的 SSH 端口映射到 `docker-compose.yml` 中的主机端口 2222。由于此端口不需要暴露给外界,因此可以将其映射到主机的 `localhost`:
```bash
ports:
@@ -344,9 +344,9 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此,将您在上面创建的密钥(“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式進行操作。因此,将您在上面建立的密钥(“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通過 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 使用者的公钥需要“按原样”添加,而通過 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作為前缀。
该文件应该看起来像:
該文件應該看起来像:
```bash
# SSH pubkey from git user
@@ -356,18 +356,18 @@ ssh-rsa <Gitea Host Key>
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <user pubkey>
```
这是详细的说明,当发出 SSH 请求时会发生什么:
这是详细的说明,当发出 SSH 請求时会发生什么:
1. 使用 `git` 用户向主机发出 SSH 请求,例如 `git clone git@domain:user/repo.git`。
2. 在 `/home/git/.ssh/authorized_keys` 中,该命令执行 `/usr/local/bin/gitea` 脚本。
3. `/usr/local/bin/gitea` 将 SSH 请求转发到端口 2222,该端口已映射到容器的 SSH 端口(22)。
4. 由于 `/home/git/.ssh/authorized_keys` 中存在 `git` 用户的公钥,因此身份验证主机 → 容器成功,并且 SSH 请求转发到在 docker 容器中运行的 Gitea。
1. 使用 `git` 使用者向主机发出 SSH 請求,例如 `git clone git@domain:user/repo.git`。
2. 在 `/home/git/.ssh/authorized_keys` 中,該命令執行 `/usr/local/bin/gitea` 脚本。
3. `/usr/local/bin/gitea` 将 SSH 請求转发到端口 2222,該端口已映射到容器的 SSH 端口(22)。
4. 由于 `/home/git/.ssh/authorized_keys` 中存在 `git` 使用者的公钥,因此身份驗證主机 → 容器成功,並且 SSH 請求转发到在 docker 容器中运行的 Gitea。
如果在 Gitea Web 界面中添加了新的 SSH 密钥,它将以与现有密钥相同的方式附加到 `.ssh/authorized_keys` 中。
如果在 Gitea Web 界面中添加了新的 SSH 密钥,它将以与現有密钥相同的方式附加到 `.ssh/authorized_keys` 中。
**注意**
SSH 容器直通仅在以下情况下有效
SSH 容器直通僅在以下情况下有效
- 在容器中使用 `opensshd`
- 如果未将 `AuthorizedKeysCommand` 与 `SSH_CREATE_AUTHORIZED_KEYS_FILE = false` 结合使用以禁用授权文件密钥生成