Gitea在512MB单核服务器上可稳定运行,关键在于创建专用git用户、正确设置/home/git各目录权限、显式指定配置文件路径、禁用indexer与queue以降低资源占用,并注意Docker部署时SSH端口映射与防火墙配置。

512MB内存、单核CPU的Linux服务器完全能跑稳Gitea,关键不在“能不能装”,而在gitea启动时用对配置、避开默认陷阱。
为什么gitea web启动后立刻退出或报错permission denied
这是最常卡住新手的第一步:没创建专用用户,或目录权限没落到git用户身上。Gitea不推荐用root直接跑,一旦以root启动过,/home/git/data里会生成indexers等属主为root的子目录,后续切回git用户就因权限不足失败。
- 必须用
adduser --shell /bin/bash --disabled-password git新建用户,别用useradd(缺家目录和shell) -
/home/git/{data,custom,log}三目录建完,立刻执行sudo chown -R git:git /home/git,别漏log - 下载的
gitea二进制文件必须用sudo -u git -H chmod +x gitea赋权,-H确保HOME环境变量正确
systemd服务启动失败,日志显示failed to open database
默认SQLite路径写死在/home/git/data/gitea.db,但gitea web命令若没指定-c参数,会去$GITEA_WORK_DIR或/etc/gitea找配置,找不到就 fallback 到临时路径,数据库自然打不开。
抓取指定 GitHub用户的 Stars 项目,生成标准化中文 Markdown 报告。用户提及「分析 GitHub stars」「导出收藏项目」「汇总 GitHub 星标」「生成 stars 报告」或粘贴含 ?tab=stars 的链接时触发。执行通过 bash...
- 务必在
systemd服务文件的ExecStart中显式带-c /home/git/custom/conf/app.ini - 首次运行前先手动执行一次:
sudo -u git -H /home/git/gitea web -c /home/git/custom/conf/app.ini,让它自动生成初始配置 - 如果要用MySQL,必须提前建库+授权,且
app.ini里DB_TYPE设为mysql,HOST不能写localhost(Docker内会解析成容器内loopback),得写127.0.0.1:3306
Docker部署时端口3000能访问,但SSH克隆git@server:repo.git失败
Docker默认不暴露22端口,且宿主机防火墙、云服务商安全组、Gitea自身SSH设置三者必须全部放行,缺一不可。
-
docker run命令必须带-p 2222:22,然后在Gitea Web管理后台 →「站点管理」→「配置」里把SSH_PORT改成2222 - 宿主机执行
sudo ufw allow 2222(Ubuntu)或sudo firewall-cmd --add-port=2222/tcp --permanent(CentOS) - 阿里云/腾讯云控制台的安全组规则里,入方向要额外加一条TCP 2222端口
- 检查
docker exec -it gitea cat /data/gitea/conf/app.ini确认SSH_PORT和DOMAIN值是否匹配你实际访问的域名/IP
低配服务器上gitea响应慢、Web界面卡顿
不是CPU或内存真不够,而是SQLite在高并发下锁表现差,加上默认开启的INDEXER(代码搜索)和QUEUE(后台任务)吃资源。
- 编辑
/home/git/custom/conf/app.ini,在[indexer]段设ISSUE_INDEXER_PATH = ""禁用issue搜索(保留代码搜索可设REPO_INDEXER_PATH) - 在
[queue]段设TYPE = dummy关闭所有后台队列,牺牲邮件通知等异步功能换响应速度 - 确认
[database]下PATH指向的是SSD或本地磁盘,别挂在NFS或低速USB盘上 - 如果只供3人以内使用,
systemd服务里加MemoryLimit=512M反而更稳——防止OOM killer误杀
真正容易被忽略的是:Gitea每次升级后,/home/git/custom/conf/app.ini不会自动合并新配置项,旧版里缺失的[oauth2]或[cache]段会导致某些功能静默失效。升级前记得备份并比对官方app.example.ini。

















