Git 服务器自建:Gitea 实战部署完整指南
结论先行:3 人以上团队、或有隐私合规要求的独立开发者,花 5 美元/月的小 VPS 用 Docker 自建 Gitea 就值得,1G 内存跑得动,数据完全在自己手里。个人或 1-2 人小团队直接用 GitHub 免费私有仓库更省心,别为自建掏维护时间。
想要代码完全自主可控?不想把私有项目放到 GitHub?这篇带你用 Gitea 搭建属于自己的 Git 服务器。
0、写在前面
GitHub虽好,但有两个硬伤:跨国网络访问慢,私有代码终究在别人平台。
如果你遇到以下场景,值得自建:
✅ 3 人以上小团队:需要权限管理、私有仓库,但 GitLab CE 太重
✅ 公司合规要求:代码不能上第三方平台
✅ 学习 DevOps:想练手 Docker Compose、Nginx、SSL、CI 集成
❌ 这些场景没必要:
- 个人开发者:GitHub 私有仓库免费又省心
- 1-2 人小团队:Git 托管平台够用,维护成本 > 收益
这时候,考虑自建 Git 服务器吧。
你可能听过 GitLab,但它太重了,4G 内存起步,CPU 跑满,小 VPS 根本扛不住。
Gitea 是个更好的选择:轻量、功能全、社区活跃,1G 内存就能跑得很欢。
1、期望目标
这篇文章带你完成:
- ✅ 搭建自托管 Git 服务器:完全自主可控,支持私有/公开仓库
- ✅ 配置域名访问 + HTTPS:不用记 IP,SSL 证书自动续期
- ✅ 设置邮件通知:Push/PR/Issue 时收到邮件提醒
- ✅ 配置自动备份:数据安全有保障
- ✅ 了解资源占用:知道需要多大 VPS 才够用
做完这些,你就有了一个功能完整的代码托管平台,可以给自己、小团队用,甚至作为内部 Git 服务器。
2、计划思考
为什么要自建 Git 服务器?
先判断你是否真的需要自建:
适合自建的场景:
- ✅ 3 人以上小团队:需要权限管理、私有仓库,但 GitLab CE 太重
- ✅ 公司合规要求:代码不能上第三方平台
- ✅ 学习 DevOps:想练手 Docker Compose、Nginx、SSL、CI 集成
不适合自建的场景:
- ❌ 个人开发者:GitHub 私有仓库免费又省心
- ❌ 1-2 人小团队:Git 托管平台够用,维护成本 > 收益
如果确定要自建,先了解差异:
| 谁能看到代码 | GitHub员工(理论上) | 只有你和团队成员 |
| 数据存在哪 | GitHub服务器(多地域备份) | 你的VPS(硬盘坏了可能丢数据) |
| 谁负责维护 | GitHub团队(24/7) | 你自己(周末出问题得自己修) |
| 成本 | 私有仓库免费 | VPS月费$5起 |
为什么选 Gitea 而不是 GitLab CE?
这俩是最流行的自托管 Git 平台,但定位不同:
| 对比项 | Gitea | GitLab CE |
|---|---|---|
| 资源占用 | 1G 内存够用 | 建议 4G+ |
| 部署难度 | Docker 一条命令 | 需要配置 Redis、PostgreSQL |
| 功能完整性 | 85%(够用) | 95%(更全) |
| CI/CD | 需要配置 Drone/Jenkins | 内置 GitLab CI |
| 性能 | 轻量快速 | 较重 |
| 适合场景 | 个人/小团队 | 中大型团队 |
如果你只是想要一个 GitHub 替代品,不需要 GitLab CI 那些复杂功能,Gitea 够用且省资源。
Gitea vs Gogs vs Forgejo
Gogs 是这一系的鼻祖,2016 年 Gitea 从它 fork 出来,起因就是 Gogs 更新太慢。到现在 Gitea 的活跃度和功能早超过 Gogs,新项目别再选 Gogs。
Forgejo 是 2026 年选型绕不开的名字。2022 年底 Gitea 被悄悄转给一家盈利公司(Gitea Ltd.),社区对治理透明度不满,于 2022 年 12 月 fork 出 Forgejo,2024 年初正式成为硬分叉,交由德国非营利组织 Codeberg e.V. 托管。两者界面和功能几乎一样,Gitea 的镜像、配置 Forgejo 基本能直接套。
差别在哪:Gitea 背后有公司,Forgejo 坚持社区非营利;Forgejo 自带 Forgejo Actions(兼容 GitHub Actions 语法的 CI),而 Gitea 要跑 CI 得另接 Drone 或 Jenkins。介意「谁掌控这个项目」的,选 Forgejo;只想要轻量 Git 托管、不在意治理的,Gitea 用着没区别。
部署方式:Docker vs 二进制
推荐 Docker,原因:
- 环境隔离,不会搞乱系统
- 升级简单,换个镜像就行
- 数据卷管理方便
- 一键部署 PostgreSQL/Redis
二进制方式更灵活,但需要自己配置服务、数据库、权限,容易出错。
数据库选择:SQLite vs PostgreSQL vs MySQL
| 数据库 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| SQLite | 个人使用、小团队 | 零配置,文件即数据库 | 并发性能差 |
| PostgreSQL | 推荐 | 性能好,功能强大 | 需要额外部署 |
| MySQL/MariaDB | 现有环境 | 兼容性好 | 性能略逊 PostgreSQL |
推荐:小项目用 SQLite,生产环境用 PostgreSQL。
整体架构
架构说明:
这个架构是这样跑起来的:Nginx 在前面处理 HTTPS 和域名,Gitea 跑在 Docker 容器里负责核心功能,PostgreSQL 存数据,SMTP 发邮件,最后用 cron 定期备份保平安。
这就像你家小区的门卫:来访客人先到门卫登记,门卫确认没问题后才把你带到你要去的楼栋。
访问流程(简化版):
- 你 → 浏览器打开 https://git.yourdomain.com
- Nginx → 转发到 Gitea 容器(端口 3000)
- Gitea → 读写 PostgreSQL 数据库
其他(邮件/备份)是可选配置,后面章节再说。
3、操作步骤
3.1 前置准备
需要 VPS
推荐配置:
| 配置 | 最低 | 推荐 |
|---|---|---|
| CPU | 1 核 | 2 核 |
| 内存 | 1G | 2G |
| 磁盘 | 20G | 40G+ |
| 带宽 | 1M | 5M+ |
推荐 VPS 商(按预算选):
- Vultr:全球节点多,按小时计费,支持高配
- DigitalOcean:稳定,文档全
- Linode:性能好,适合长期
- 搬瓦工:CN2 线路快,适合国内访问
域名(可选)
如果你有域名,解析到 VPS IP 即可:
1 | git.yourdomain.com A 记录 → 你的 VPS IP |
没有域名也可以,直接用 IP + 端口访问(但没有 HTTPS)。
系统要求
- 推荐:Ubuntu 22.04 LTS / 24.04 LTS
- 其他:Debian 11+、CentOS 8+ 也可以,命令略有差异
本文以 Ubuntu 为例。
3.2 安装 Docker + Docker Compose
Gitea 官方提供了 Docker 镜像,部署最方便。
💡 为什么用 Docker Compose?
Gitea + PostgreSQL + Nginx 三个服务,用 Compose 一个配置文件就能管起来,方便备份和迁移。
Docker 27.0+已内置 compose,低版本需单独安装 docker-compose plugin
一键安装 Docker
1 | # 更新系统 |
验证安装
1 | docker --version |
💡 为什么用 Docker Compose?
Gitea + PostgreSQL + Nginx 三个服务,用 Compose 一个配置文件就能管起来,方便备份和迁移。
3.3 部署 Gitea 容器
创建项目目录
1 | # 创建工作目录 |
编写 docker-compose.yml
1 | nano docker-compose.yml |
💡 版本说明:示例用的是
gitea/gitea:1.26(锁定版本,避免意外升级)。截至 2026 年 8 月最新稳定版是 1.27.1,建议把下面两处镜像都改成gitea/gitea:1.27.1(或latest,但锁版本更稳);升级时记得先docker compose pull+up -d,数据卷不丢。
按 Ctrl+X 退出,Y 粘贴后保存,Enter 确认文件名
粘贴以下配置:
新手直接用 SQLite 版本(下面第一个),生产环境再用 PostgreSQL
SQLite 版本(适合个人使用):
1 | services: |
如果是 PostgreSQL 版本(生产环境推荐):
1 | services: |
⚠️ 重要:把两处
your_password_here都换成强密码(DB_PASSWD 和 POSTGRES_PASSWORD)!
启动容器
1 | # 启动 |
看到包含 Listen on http://0.0.0.0:3000 的日志就说明启动成功了:
1 | gitea | 2026/07/02 12:00:00 ... Listen on http://0.0.0.0:3000 |
访问测试
浏览器打开:http://YOUR_SERVER_IP:3000
应该能看到 Gitea 的初始化页面。
3.4 初始化 Gitea
首次访问会进入初始化向导,按步骤填写:
第一步:数据库设置
SQLite(选了这个就不用管其他的):
- 数据库类型:SQLite3
- 路径:
/data/gitea/gitea.db
PostgreSQL(如果用了 compose 的 db 服务):
- 数据库类型:PostgreSQL
- 主机:
db:5432 - 用户:
gitea - 密码:你设置的密码
- 数据库名:
gitea
第二步:基本设置
-
Gitea 基础设置:
- 服务器域名:
git.yourdomain.com(或你的 IP) - Gitea 运行端口:
3000 - Gitea 基础 URL:
https://git.yourdomain.com/(或http://YOUR_SERVER_IP:3000/)
- 服务器域名:
-
可选设置:
- SSH 服务器域名:
git.yourdomain.com或YOUR_SERVER_IP - SSH 端口:
222(容器映射的 22) - Gitea SSH 端口:
222
- SSH 服务器域名:
💡 SSH 端口说明
容器内部 SSH 是 22,映射到宿主机是 222,所以 clone 时用:
git clone ssh://[email protected]:222/user/repo.git
第三步:管理员账户
- 用户名:
admin(或其他) - 密码:设置强密码
- 邮箱:你的邮箱
⚠️ 重要:管理员密码一定要用强密码,建议包含大小写字母+数字+符号
第四步:完成安装
点击「立即安装 Gitea」,几秒后跳转到登录页。
用刚才创建的管理员账户登录,你就能看到类似 GitHub 的界面了!
接下来可以开始创建仓库、邀请团队成员,或者配置更多高级功能(邮件通知、CI 集成等)。
3.5 配置 Nginx 反向代理 + HTTPS
现在你已经可以通过 http://YOUR_SERVER_IP:3000 访问,但:
- 没有域名,不方便
- 没有 HTTPS,不安全
- 端口号太难记
没有域名?跳过本节,直接用 http://YOUR_SERVER_IP:3000 访问
用 Nginx 解决这些问题。
为什么需要 Nginx?
现在你能通过http://YOUR_SERVER_IP:3000访问 Gitea,但有 3 个问题:
- 没有 HTTPS,密码和代码是明文传输(不安全)
- 端口 3000 太难记,每次都要输入
- 没有域名,换个 VPS IP 又要重新配置
Nginx 作为反向代理帮你解决这些问题。
安装 Nginx
1 | sudo apt install -y nginx certbot python3-certbot-nginx |
创建站点配置
1 | sudo nano /etc/nginx/sites-available/git.yourdomain.com |
粘贴以下配置:
1 | server { |
⚠️ 把
git.yourdomain.com换成你的域名。
启用站点
1 | # 创建软链接 |
申请 Let’s Encrypt SSL 证书
1 | sudo certbot --nginx -d git.yourdomain.com |
按提示:
- 输入邮箱
- 同意服务条款
- 选择「Redirect HTTPS」(自动重定向到 HTTPS)
完成后,访问 https://git.yourdomain.com 应该能看到小绿锁了!
💡 证书自动续期:Let’s Encrypt 证书有效期 90 天,Certbot 会自动配置续期任务,不用担心过期。
修改 Gitea 配置
登录 Gitea,进入 Site Administration → Configuration:
1 | [server] |
或者在服务器上编辑:
1 | nano ~/gitea/data/gitea/conf/app.ini |
找到 [server] 段,修改:
1 | ROOT_URL = https://git.yourdomain.com/ |
重启容器:
1 | cd ~/gitea |
3.6 配置邮件通知
没有邮件通知,Push/Issue/PR 都会「静默」,容易错过更新。
注意:以下邮箱服务需要你有域名。如果没有域名,暂时跳过这一节,先用 Gmail
获取 SMTP 信息
推荐邮件服务商:
推荐方案(按场景选)
- 国内用户:QQ 企业邮箱(免费,配置简单)
- 海外用户:Gmail(每天 500 封,免费)
- 需要大量发信:SendGrid/Mailgun(付费)
新手从 QQ 企业邮箱开始,5 分钟搞定。
| 服务商 | 免费额度 | 适合场景 |
|---|---|---|
| Gmail | 每天 500 封 | 个人使用 |
| QQ 企业邮箱 | 无限免费 | 国内用户 |
| SendGrid | 每天 100 封 | 海外开发者 |
| Mailgun | 前 5000 封免费 | 需要 API 调用 |
QQ 企业邮箱示例(免费,推荐):
- 注册 腾讯企业邮箱
- 创建邮箱(如
[email protected]) - 获取 SMTP 信息:
- 服务器:
smtp.exmail.qq.com - 端口:
465(SSL)或587(STARTTLS) - 用户:你的完整邮箱地址
- 密码:客户端专用密码(不是登录密码,需在邮箱设置中生成)
- 服务器:
配置 Gitea 邮件
方式一:Web 界面配置
登录 Gitea → 右上角头像 → Site Administration → Configuration → Email
填写:
- SMTP Host:
smtp.exmail.qq.com:465 - User:
[email protected] - Password:你的邮箱密码或客户端专用密码
- From:
Gitea <[email protected]>
勾选 Enable Email Service 和 Use SMTP
路径说明:点击右上角头像 → 管理员面板 → 配置 → 邮件
方式二:编辑 app.ini
1 | nano ~/gitea/data/gitea/conf/app.ini |
找到 [email] 段(没有就添加):
1 | [email] |
重启容器:
1 | cd ~/gitea |
测试邮件
在 Gitea 中:Site Administration → Email → Send Test Email
填一个收件地址,发一封试试。
3.7 创建仓库和组织
创建第一个仓库
点击右上角 + → New Repository:
- 仓库所有者:你的用户名
- 仓库名:
my-first-repo(或其他) - 可见性:Private(私有)或 Public(公开)
- 初始化:勾选「添加 README」
点击「创建仓库」。
克隆仓库
HTTPS 方式(推荐):
1 | git clone https://git.yourdomain.com/YOUR_USERNAME/test-repo.git |
SSH 方式:
先生成 SSH 密钥(如果还没有):
1 | # 生成 SSH 密钥对 |
复制公钥内容,在 Gitea 中添加:
- 点击右上角头像 → Settings → SSH Keys → Add Key
- 粘贴公钥,点击「Add Key」
然后克隆仓库:
1 | git clone ssh://[email protected]:222/YOUR_USERNAME/test-repo.git |
⚠️ SSH 端口说明
clone 时用端口 222(宿主机映射端口),不用管容器内部的 22。
如果不想每次都加端口,在
~/.ssh/config中配置:
1
2 Host git.yourdomain.com
Port 222
创建组织
如果是团队使用,可以创建组织:
+ → New Organization:
- 组织名称:
my-team或dev - 组织描述:团队描述
创建后,可以在组织内创建仓库、添加成员。
组织的好处:
- 统一管理多个仓库
- 团队成员权限统一配置
- 便于项目分组和权限控制
3.8 配置备份策略
数据很重要,定期备份是必须的。
备份什么
Gitea 的数据主要在:
| 目录/文件 | 说明 |
|---|---|
/srv/gitea/data |
仓库数据、配置文件、附件 |
/srv/gitea/db |
PostgreSQL 数据库(如果用了) |
手动备份
1 | # 停止容器 |
💡 更安全的方案
- 用 rclone 同步到云存储(Google Drive / Dropbox / S3)
- 推荐用 Wasabi(对象存储便宜)或 Backblaze B2(有免费额度)
- 定期测试恢复流程,确保备份可用
自动备份(cron)
1 | # 编辑 crontab |
添加:
1 | # 每天凌晨 3 点备份 |
💡 更安全的方案
- 用 rclone 同步到云存储(Google Drive / Dropbox / S3)
- 定期测试恢复流程
4、收尾
关键配置文件位置
| 文件/目录 | 用途 |
|---|---|
~/gitea/docker-compose.yml |
Docker Compose 配置 |
~/gitea/data/gitea/conf/app.ini |
Gitea 主配置 |
/etc/nginx/sites-available/git.yourdomain.com |
Nginx 站点配置 |
/etc/letsencrypt/live/git.yourdomain.com/ |
SSL 证书路径 |
常用管理命令
1 | # 进入 Gitea 容器 |
安全检查清单
- [ ] SSH 密钥登录已配置(禁用密码登录)
- [ ] HTTPS 已启用(小绿锁)
- [ ] 防火墙只开放 80/443/SSH 端口
- [ ] Gitea 管理员密码够强
- [ ] PostgreSQL 密码够强
- [ ] 邮件通知已测试通过
- [ ] 定期备份已设置
- [ ] 数据卷权限正确
这些都是我踩过的坑,列出来帮你省时间。
性能参考
基于实际使用经验:
| 场景 | VPS 配置 | 用户体验 |
|---|---|---|
| 个人使用 | 1核1G | 流畅 |
| 2-5 人团队 | 2核2G | 流畅 |
| 5-20 人团队 | 2核4G | 良好 |
| 20+ 人团队 | 4核8G+ | 推荐 |
5、异常记录
Q1:SSH 克隆失败,提示「Permission denied」
排查步骤:
- 确认 SSH 端口:
1 | # 检查容器映射端口 |
- clone 时指定端口:
1 | git clone ssh://[email protected]:222/username/repo.git |
- 或者配置
~/.ssh/config:
1 | # 如果文件不存在,先创建: |
Q2:邮件发不出去
常见原因:
- SMTP 密码错误:QQ 企业邮箱要用「客户端专用密码」,不是登录密码(需在邮箱设置中生成)
- 端口/协议错误:SSL 用 465,STARTTLS 用 587
- 证书验证失败:测试时可以临时设置
SKIP_VERIFY = true - 防火墙阻止:确保 VPS 能访问 SMTP 端口(465/587)
查看日志:
1 | docker compose logs gitea | grep -i email |
Q3:Gitea 升级后打不开
回滚版本:
1 | cd ~/gitea |
如果数据库损坏:
- 停止容器
- 恢复之前的备份
- 检查 PostgreSQL 日志:
docker compose logs db
Q4:迁移到新服务器
步骤:
- 旧服务器备份:
1 | cd ~/gitea |
- 拷贝到新服务器:
1 | scp gitea-migration.tar.gz user@newserver:/tmp/ |
- 新服务器恢复:
1 | cd ~ |
- 修改域名解析(DNS 指向新 IP)
Q5:性能优化
如果 Gitea 变慢:
何时需要优化:如果你同时有 20+人活跃使用、仓库数 100+,再考虑这些优化。大部分独立开发者和小团队用不到。
- 检查资源占用:
1 | docker stats gitea |
- 启用缓存(在
app.ini):
1 | [cache] |
- 数据库优化(PostgreSQL):
1 | [database] |
6、一键部署脚本(完整版)
**想快速部署?**用这个脚本一键搞定。**想学习每个步骤?**跟着上面 3.1-3.8 手动操作一遍。
如果你想快速部署,用这个脚本:
⚠️ 新手建议:先手动跑一遍第 3.2-3.5 节,熟悉流程后再用脚本。
执行前请先看懂这 6 步在做什么:
- 安装 Docker
- 安装必要工具(nginx, certbot)
- 创建工作目录
- 创建 docker-compose.yml
- 启动容器
- 配置 Nginx + SSL
1 |
|
保存为 gitea-setup.sh,执行:
1 | chmod +x gitea-setup.sh |
7、最后说两句
自建 Git 服务器不是必须的,但对于想要数据自主可控的独立开发者来说,这是走向技术独立的一小步。
数据自主可控,从自建 Git 开始。
Gitea 的优势在于轻量,小 VPS 也能跑得欢,功能也够用。如果你需要 GitLab CI 那些高级功能,再去折腾 GitLab 也不迟。
下一步?用 Gitea + Drone CI 搭建完整的 DevOps 流水线,让你的出海项目真正跑起来。
什么情况下不要自建 Git? 如果你的项目少于 5 个仓库、团队少于 3 人、或者你没有运维经验,用 GitHub 更省心。自建 Git 是给有明确需求(隐私、合规、延迟)的人准备的。
8、FAQ(自建 Gitea 高频疑问)
Q1:自建 Gitea 一个月大概花多少钱?
1 核 1G 的小 VPS 就够个人和 3-5 人团队跑,Vultr、DigitalOcean 这类 5-6 美元/月的入门套餐足够;仓库上 GB 或 20+ 人再升到 2 核 4G。域名一年 10 美元左右,SSL 证书 Let’s Encrypt 免费。
Q2:SQLite 和 PostgreSQL 怎么选?
个人、小团队、仓库不多,直接用 SQLite,零配置、文件即数据库,省一个容器。等并发上来(多人同时 push/PR、仓库几百个)再换 PostgreSQL,数据可以导出迁移,不算大工程。
Q3:GitHub 上的老仓库怎么搬过来?
新建仓库时选「Migrate / 迁移」,填 GitHub 仓库地址和 access token,Gitea 会把代码、Issues、PR、Wiki 一起拉过来。只想搬代码不搬 Issue,本地 git remote set-url origin [email protected]:user/repo.git && git push -u origin --all 改个远端 push 上去就行。
Q4:Gitea 免费吗?商业上有没有风险?
Gitea 本体 MIT 开源、完全免费。但 2022 年它转给盈利公司 Gitea Ltd. 后,社区分叉出 Forgejo(Codeberg e.V. 非营利托管,自带 Forgejo Actions CI)。两者高度兼容。介意项目被一家公司掌控的,选 Forgejo;无所谓就用 Gitea,功能没差别。
Q5:日常维护要花多少时间?
Docker 跑起来后基本免维护,每月 docker compose pull && docker compose up -d 升级一次、确认 cron 备份在跑就行。真正费时间的是硬盘坏了或升级翻车那几次,所以备份加定期演练恢复,比日常盯服务更重要。
数据与引用
-
Gitea 与 GitLab 的定位差异:Gitea 单一二进制,资源占用约 200-400MB 内存;GitLab Omnibus 推荐 4GB 起步,CI 跑起来要 8GB+。独立开发者和小团队(< 20 人)跑 Gitea 更省心。
来源:Gitea 官方文档 - Requirements;GitLab 官方文档 - Requirements
含义:选型时按团队规模+机器配置取舍,5 人以下小团队没必要上 GitLab。 -
Gitea 1.27 vs Forgejo v9 的功能差异:Gitea 1.27 仍在持续维护,企业版(EE)拆分为独立产品;Forgejo v9 同步 Gitea v1.22 的代码基础后独立演进。Forgejo 自带 Forgejo Actions(兼容 GitHub Actions 语法),Gitea 需外接 Drone 或 Act Runner。
来源:Gitea 1.27 Release Notes;Forgejo 项目声明
含义:自带 CI 选 Forgejo,CI 用 Drone/Jenkins 选 Gitea 也无压力。 -
SQLite vs PostgreSQL 在 Gitea 上的实际表现:SQLite 适合 < 50 仓库、< 10 并发 push 的场景;超过这个量级单文件锁会成为瓶颈。PostgreSQL 14+ 支持 JSONB 索引,Gitea 的 Issue/PR 全文搜索在 PostgreSQL 上明显更快。
来源:Gitea 文档 - Database Support;Gitea 社区 issue #tracking 的多次 benchmark 讨论(2024-2025)
含义:个人/小团队直接 SQLite 起步;并发上来再迁 PostgreSQL,迁移工具官方提供。 -
Gitea → Gitea Ltd. 的治理变更(2022-11):原 Gitea 团队联合成立 Gitea Ltd. 负责商业开发,社区担忧后由部分核心维护者 fork 出 Forgejo,由德国非营利组织 Codeberg e.V. 托管。
来源:Forgejo 项目起源公告;Codeberg e.V. 关于 Forgejo 的声明
含义:选 Gitea 还是 Forgejo 是「公司主导 vs 社区非营利」路线选择,技术差异已近乎消失。 -
Gitea 1.27+ 内置 Package Registry:从 1.19 起支持 Cargo / Composer / npm / NuGet / PyPI / RubyGems 多种包仓库,Docker OCI 镜像仓库从 1.20 起内置;不需要单独跑 Nexus 或 Artifactory。
来源:Gitea 1.19 Release Notes;Gitea Package Registry 文档
含义:个人/小团队自建包仓库省一个容器;想要更复杂的功能(权限分级、扫描)再上 Nexus/Artifactory。 -
Forgejo Actions 与 GitHub Actions 兼容性:Forgejo Actions 完全复用 GitHub Actions 的 workflow 语法(.github/workflows → .forgejo/workflows),只是运行器从 GitHub-hosted runner 换成自托管 runner。
来源:Forgejo Actions 文档;GitHub Actions 文档
含义:迁移 GitHub Actions workflow 到 Forgejo 几乎零改动,自托管 runner 用 act-runner 即可。 -
自建 Gitea 的最小 VPS 配置:1 核 1GB 内存可起 SQLite 版 Gitea,仓库 < 50 个、用户 < 20 人流畅;切到 PostgreSQL 后内存建议 2GB 起。Gitea 1.27 镜像约 150MB,单进程常驻 200-400MB。
来源:Gitea 官方硬件建议 + 社区实测(2024-2025 多个 self-hosted 案例)
含义:5-6 美元/月入门 VPS(Vultr/DigitalOcean/Linode)跑 Gitea 完全够用,扩展成本低。 -
SSH over HTTPS 自定义端口支持:Gitea 同时支持 SSH(默认 22)和 HTTPS(默认 3000)两种 clone 协议,SSH 走 git 用户权限隔离,HTTPS 走 Access Token。
来源:Gitea SSH 文档;Gitea Access Token 文档
含义:CI 用 SSH deploy key、自动化脚本用 HTTPS token,两者并存按场景选。
💡 透明声明:本文包含 8 处推广链接(5 个独立服务,如 Vultr / DigitalOcean / Linode / Cloudflare / Bandwagonhost 等)。每次点击我会收到一笔佣金,不影响你的购买价格,也不影响我的内容判断,工具好不好用我自己用了才知道。完整推广政策见 ittinker.com/about。
💼 推荐工具
- Gitea 主机(按小时计费,全球节点):Vultr Cloud VPS,1GB 内存 5 美元/月跑 SQLite 版 Gitea 足够。
https://ittinker.com/go/vultr - Gitea 主机(文档完善,新用户赠费):DigitalOcean,Snapshots 备份免费,升级前后打个快照保平安。
https://ittinker.com/go/do - Gitea 主机(按小时计费,稳定):Linode,现已并入 Akamai 网络,全球节点稳定。
https://ittinker.com/go/linode - Forgejo(社区非营利分叉):如果更在意项目治理而非商业支持,Forgejo 是 Gitea 的硬分叉。
https://forgejo.org - Drone CI(Gitea 搭档):轻量 CI/CD 平台,原生支持 Gitea Webhook,跑 .drone.yml。
https://drone.io - 反向代理(Nginx):HTTPS + 域名访问的标准组合,配 Let’s Encrypt 自动续签。
https://nginx.org - Caddy:自动 HTTPS 反代,比 Nginx 配置简单,单文件就能跑。
https://caddyserver.com - Cloudflare:免费 CDN + 反代,隐藏 Gitea 服务器真实 IP。
https://ittinker.com/go/cloudflare
本文最后更新:2026年8月
独立开发者工具箱系列,欢迎关注!
