常见问题
本页面 包含一些常见问题和答案。
有关更多帮助资源,请查看所有支持选项。
1.x和1.x.x下载之间的区别
以1.7.x版本为例。
**注意:**此示例也适用于Docker镜像!
在我们的下载页面上,您会看到一个1.7目录,以及1.7.0、1.7.1、1.7.2、1.7.3、1.7.4、1.7.5和1.7.6的目录。
1.7目录和1.7.0目录是不同的。1.7目录是在每个合并到release/v1.7
分支的提交上构建的。
然而,1.7.0目录是在创建v1.7.0
标签时创建的构建。
这意味着1.x的下载会随着提交合并到各自的分支而改变(将其视为每个版本的单独的“main”分支)。
另一方面,1.x.x的下载应该永远不会改变。
如何从Gogs/GitHub等迁移到Gitea
要从Gogs迁移到Gitea:
要从GitHub迁移到Gitea,您可以使用Gitea内置的迁移表单。
为了迁移诸如问题、拉取请求等项目,您需要至少输入您的用户名。
要从GitLab迁移到Gitea,您可以使用这个非关联的工具:
https://github.com/loganinak/MigrateGitlabToGogs
Gitea存储文件的位置
AppWorkPath
--work-path
标志- 或者环境变量
GITEA_WORK_DIR
- 或者在构建时设置的内置值
- 或者包含Gitea二进制文件的目录
%(APP_DATA_PATH)
(数据库、索引器等的默认路径)app.ini
中的APP_DATA_PATH
- 或者_
AppWorkPath
_/data
CustomPath
(自定义模板)--custom-path
标志- 或者环境变量
GITEA_CUSTOM
- 或者在构建时设置的内置值
- 或者_
AppWorkPath
_/custom
- HomeDir
- Unix:环境变量
HOME
- Windows:环境变量
USERPROFILE
,或者环境变量HOMEDRIVE
+HOMEPATH
- Unix:环境变量
- RepoRootPath
app.ini
中[repository]部分的ROOT
(如果是绝对路径)- 否则_
AppWorkPath
_/ROOT
(如果app.ini
中[repository]部分的ROOT
是相对路径) - 默认值为
%(APP_DATA_PATH)/gitea-repositories
- INI(配置文件)
--config
标志- 或者在构建时设置的可能内置值
- 或者
CustomPath
/conf/app.ini
- SQLite数据库
- app.ini中database部分的PATH
- 或者
%(APP_DATA_PATH)/gitea.db
看不到克隆URL或克隆URL不正确
有几个地方可能会导致显示不正确。
- 如果使用反向代理,请确保按照反向代理指南中的正确说明进行设置。
- 确保在
app.ini
的server
部分中正确设置了ROOT_URL
。
如果某些克隆选项未显示(HTTP/S或SSH),可以在app.ini中
DISABLE_HTTP_GIT
: 如果设为true, 将会没有HTTP/HTTPS链接DISABLE_SSH
: 如果设为true, 将会没有SSH链接SSH_EXPOSE_ANONYMOUS
: 如果设为false, SSH链接将会对匿名用户隐藏
文件上传失败:413 Request Entity Too Large
当反向代理限制文件上传大小时,会出现此错误。
有关使用nginx解决此问题,请参阅反向代理指南。
自定义模板无法加载或运行错误
Gitea的自定义模板必须将其添加到正确的位置,否则Gitea将无法找到并使用自定义模板。
模板的正确路径应该相对于CustomPath
。
-
要找到
CustomPath
,请在站点管理 -> 配置 中查找自定义文件根路径。如果找不到,请尝试
echo $GITEA_CUSTOM
。 -
如果仍然找不到,默认值可以被计算
-
如果仍然找不到路径,则可以参考自定义Gitea页面,将模板添加到正确的位置。
Gitea是否有"GitHub/GitLab Pages"功能?
Gitea不提供内置的Pages服务器。您需要一个专用的域名来提供静态页面,以避免CSRF安全风险。
对于简单的用法,您可以使用反向代理来重写和提供Gitea的原始文件URL中的静态内容。
还有一些已经可用的第三方服务,比如独立pages server的或caddy plugin,可以提供所需的功能。
活跃用户与禁止登录用户
在Gitea中,"活跃用户"是指通过电子邮件激活其帐户的用户。
"禁止登录用户"是指不允许再登录到Gitea的用户。
设置日志记录
什么是Swagger?
Swagger 是Gitea用于其API文档的工具。
所有Gitea实例都有内置的API,无法完全禁用它。 但是,您可以在app.ini的api部分将ENABLE_SWAGGER设置为false,以禁用其文档显示。 有关更多信息,请参阅Gitea的API文档。
您可以在上查看最新的API(例如)https://try.gitea.io/api/swagger
您还可以在上查看swagger.json
文件的示例 https://try.gitea.io/swagger.v1.json
调整服务器用于公共/私有使用
防止垃圾邮件发送者
有多种方法可以组合使用来防止垃圾邮件发送者:
- 通过设置电子邮件域名的白名单或黑名单。
- 通过设置一些域名或者OpenID白名单(见下文)。
- 在您的
app.ini
中将ENABLE_CAPTCHA
设置为true
,并正确配置RECAPTCHA_SECRET
和RECAPTCHA_SITEKEY
。 - 将
DISABLE_REGISTRATION
设置为true
,并通过 CLI、API 或 Gitea 的管理界面创建新用户。
仅允许/阻止特定的电子邮件域名
您可以在app.ini
中的[service]
下的配置EMAIL_DOMAIN_WHITELIST
或 EMAIL_DOMAIN_BLOCKLIST
。
仅允许/阻止特定的 OpenID 提供商
您可以在app.ini
的[openid]
下配置WHITELISTED_URI
或BLACKLISTED_URIS
。
注意: 白名单优先,如果白名单非空,则忽略黑名单。
仅允许发布问题的用户
目前实现这一点的方法是创建/修改一个具有最大仓库创建限制为 0 的用户。
受限制的用户
受限制的用户仅能访问其组织/团队成员和协作所在的内容的子集,而忽略组织/仓库等的公共标志。
示例用例:一个公司运行一个需要登录的 Gitea 实例。大多数仓库是公开的(所有同事都可以访问/浏览)。
在某些情况下,某个客户或第三方需要访问特定的仓库,并且只能访问该仓库。通过将此类客户帐户设置为受限制帐户,并使用团队成员身份和/或协作来授予所需的任何访问权限,可以简单地实现这一点,而无需使所有内容都变为私有。
启用 Fail2ban
使用 Fail2Ban 监视并阻止基于日志模式的自动登录尝试或其他恶意行为。
如何添加/使用自定义主题
Gitea 目前支持三个官方主题,分别是 gitea
(亮色)、arc-green
(暗色)和 auto
(根据操作系统设置自动切换前两个主题)。
要添加自己的主题,目前唯一的方法是提供一个完整的主题(不仅仅是颜色覆盖)。
假设我们的主题是 arc-blue
(这是一个真实的主题,可以在此问题中找到)
将.css
文件命名为theme-arc-blue.css
并将其添加到custom/public/assets/css
文件夹中
通过将arc-blue
添加到app.ini
中的THEMES
列表中,允许用户使用该主题
SSHD vs 内建SSH
SSHD是大多数Unix系统上内建的SSH服务器。
Gitea还提供了自己的SSH服务器,用于在SSHD不可用时使用。
Gitea运行缓慢
导致此问题的最常见原因是加载联合头像。
您可以通过在app.ini
中将ENABLE_FEDERATED_AVATAR
设置 为false
来关闭此功能。
还有一个可能需要更改的选项是在app.ini
中将DISABLE_GRAVATAR
设置为true
。
无法创建仓库/文件
请确保Gitea具有足够的权限来写入其主目录和数据目录。
**适用于Arch用户的注意事项:**在撰写本文时,Arch软件包的systemd文件包含了以下行:
ReadWritePaths=/etc/gitea/app.ini
这将使得Gitea无法写入其他路径。
翻译不正确/如何添加更多翻译
我们当前的翻译是在我们的Crowdin项目上众包进行的
无论您想要更改翻译还是添加新的翻译,都需要在Crowdin集成中进行,因为所有翻译都会被CI覆盖。
推送钩子/ Webhook / Actions 未运行
如果您可以推送但无法在主页仪表板上看到推送活动,或 者推送不触发 Webhook 和 Actions,可能是 git 钩子不工作而导致的。
这可能是由于以下原因:
- Git钩子不同步:在站点管理面板上运行“重新同步所有仓库的pre-receive、update和post-receive钩子”
- Git仓库(和钩子)存储在一些不支持脚本执行的文件系统上(例如由NAS挂载),请确保文件系统支持
chmod a+x any-script
- 如果您使用的是Docker,请确保Docker Server(而不是客户端)的版本 >= 20.10.6
SSH问题
如果无法通过ssh
访问仓库,但https
正常工作,请考虑以下情况。
首先,请确保您可以通过SSH访问Gitea。
ssh git@myremote.example
如果连接成功,您应该会收到以下错误消息:
Hi there, You've successfully authenticated, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
如果您收到以上消息但仍然连接成功,这意味着您的 SSH 密钥没有由 Gitea 管理。这意味着钩子不会运行,在其他一些潜在问题中也包括在内。
如果您无法连接,可能是因为您的 SSH 密钥在本地配置不正确。 这是针对 SSH 而不是 Gitea 的问题,因此在此不涉及。
SSH 常见错误
Permission denied (publickey).
fatal: Could not read from remote repository.
此错误表示服务器拒绝登录尝试, 请检查以下事项:
-
在客户端:
- 确保公钥和私钥已添加到正确的 Gitea 用户。
- 确保远程 URL 中没有任何问题。特别是,请确保∂ Git 用户(@ 之前的部分)的名称拼写正确。
- 确保客户端机器上的公钥和私钥正确无误。
-
在服务器上:
- 确保存储库存在并且命名正确。
- 检查系统用户主目录中的
.ssh
目录的权限。 - 验证正确的公钥是否已添加到
.ssh/authorized_keys
中。
尝试在 Gitea 管理面板上运行
Rewrite '.ssh/authorized_keys' file (for Gitea SSH keys)
。 -
查看 Gitea 日志。
-
查看 /var/log/auth(或类似的文件)。
-
检查存储库的权限。
以下是一个示例,其中缺少公共 SSH 密钥, 认证成功,但是其他设置导致 SSH 无法访问正确的 存储库。
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.