用云主机搭建代码仓库和 CI 流水线,轻量组合推荐 Gitea + Drone CI,一台 1 核 2G 的云主机就能流畅运行,月成本控制在几十元,适合 5 人以下团队或个人开发者,维护简单且数据自主可控。
云主机搭建代码仓库:需要多大配置才够用?
很多人在启动自建方案时,第一个问题就是配置选型,配置低了怕跑不动,高了又怕浪费预算,根据开源社区的实际运行反馈,代码仓库本身对资源消耗不大,真正吃资源的是 CI 流水线中的构建任务。
不同规模下的配置推荐
- 1-5 人团队:代码仓库用 Gitea,CI 用 Drone,1 核 2G 内存足够,日常 push、拉取代码、跑简单构建(如打包、测试)毫无压力,如果同时频繁跑大规模编译,建议升级到 2 核 4G。
- 5-10 人团队:建议 2 核 4G 起步,因为并行构建任务增多,内存和 CPU 都要留余量,也可以把代码仓库和 CI 分开部署到两台云主机上,但会增加成本。
- 10 人以上团队:推荐 4 核 8G 或更高,或者考虑将构建节点分散到多台机器,避免单点瓶颈。
国内云主机搭建代码仓库的常见配置示例
| 场景 | 云主机配置 | 预估月成本(国内主流云厂商,按量或轻量型) |
|---|---|---|
| 个人或 1-3 人小项目 | 1 核 2G,40GB 系统盘 | 约 50-80 元 |
| 5-10 人团队,轻量 CI | 2 核 4G,60GB 系统盘 | 约 100-150 元 |
| 10 人以上,频繁构建 | 4 核 8G,80GB 系统盘 | 约 200-350 元 |
业内专家指出,在大部分情况下,1 核 2G 的云主机跑 Gitea + Drone 已经足够,瓶颈往往出现在 CI 构建的并发数上,而非代码仓库本身。
自建 CI 流水线对比托管服务:哪个更适合轻量团队?
选择自建还是用现成的 SaaS 服务(如 GitHub Actions、GitLab CI 托管版),需要看团队的核心诉求,自建的优势在于数据隐私、无用户数限制、可自定义运行环境;劣势是需要自己维护,初期有一定学习成本。
自建 vs 托管:几个关键对比点
- 成本

:托管服务通常按分钟数或并发数收费,对于频繁构建的团队,月费可能超过一台云主机的费用,自建只需支付云主机固定成本,构建次数不限,长期来看更划算。
- 数据安全:代码托管在第三方平台,即使私有仓库也存在合规风险,自建代码仓库和 CI 流水线,所有数据都在自己云主机上,适合对隐私要求较高的项目。
- 灵活度:自建可以完全控制 CI 环境,安装任意依赖、自定义镜像、接入私有网络,托管服务受限于平台提供的运行环境,部分特殊配置可能无法实现。
- 维护成本:托管服务不用操心更新、备份、安全补丁,自建需要定期升级软件、备份数据、监控磁盘空间,Gitea、Drone 等轻量级工具升级简单,容器化部署后通常只需拉取新镜像重启。
什么情况下应该优先考虑自建?
- 团队人数超过 5 人,但不想按人头付费购买托管服务的私有仓库。
- 项目需要频繁构建,且每次构建时长较长,用托管服务累计费用较高。
- 对代码和数据有严格合规要求,不能存放在境外或第三方平台。
- 希望完全掌控 CI 流水线的执行逻辑,不依赖特定平台的语言和限制。
轻量级代码仓库与 CI 工具选型:Gitea + Drone 的组合实践
在自建方案中,最轻量的组合是 Gitea(代码仓库) + Drone CI(持续集成),两者都用 Go 编写,资源占用低,安装简单,社区活跃。
为什么首选 Gitea?
- 安装包仅几十 MB,支持 Docker 一键部署,单进程运行,内存占用常年在 200MB 以内。
- 功能完整:支持 Web 管理、仓库镜像、Issue、Pull Request、Webhook、LFS 等,对 50 人以下团队完全够用。
- 升级方便:容器化部署下,替换镜像即可,配置和数据卷分离。
为什么选择 Drone CI?
- 同样用 Go 编写,轻量级,与 Gitea 集成天然顺畅,通过 OAuth 一键登录。
- 流水线配置采用 YAML 文件,直接放在仓库中,与代码版本管理。
- 支持多种执行环境(Docker、Kubernetes、SSH),且自带丰富的插件生态。
- 部署简单,一条 Docker 命令即可启动,依赖 SQLite 或外部数据库。

实操步骤:在云主机上部署 Gitea + Drone
以下步骤基于 Docker 和 Docker Compose,假设你已有一台云主机并安装了 Docker。
- 创建目录和配置文件
mkdir -p /opt/gitea /opt/drone cd /opt
- 编写 docker-compose.yml
version: '3' services: gitea: image: gitea/gitea:latest restart: always volumes: - ./gitea:/data ports: - "3000:3000" - "2222:22" environment: - USER_UID=1000 - USER_GID=1000 drone: image: drone/drone:latest restart: always ports: - "80:80" volumes: - ./drone:/data environment: - DRONE_GITEA_SERVER=http://gitea:3000 - DRONE_GITEA_CLIENT_ID=你的ClientID - DRONE_GITEA_CLIENT_SECRET=你的ClientSecret - DRONE_RPC_SECRET=共享密钥 - DRONE_SERVER_HOST=你的域名或IP - DRONE_SERVER_PROTO=http depends_on: - gitea注意:需要先在 Gitea 中创建 OAuth 应用,获取 ClientID 和 Secret,DRONE_RPC_SECRET 是一个随机字符串,用于 Agent 通信。
- 启动服务
docker-compose up -d
- 配置反向代理(可选但推荐)
使用 Nginx 或 Caddy 为 Gitea 和 Drone 配置域名和 HTTPS,避免通过 IP 访问,同时提升安全性。 - 添加 CI Agent
如果需要在云主机上本地执行构建,可以再启动一个 Drone Agent,使用相同的 RPC_SECRET 连接到 Server。
这样一套环境就搭建好了,通过 Gitea 的 Webhook 自动触发 Drone 执行流水线。
核心配置建议
- 数据备份:定期备份 Gitea 的
/data目录和数据库,建议使用云厂商的快照或定时任务拷贝到对象存储。 - 安全加固:设置防火墙只开放必要端口(80/443、3000、22),禁用 root 密码登录,使用 SSH 密钥。
- 资源监控:使用
htop或docker stats观察资源占用,如果发现内存不足,可以适当增加 swap 或升级配置。
低预算云主机 CI 方案:Gitea + Drone 的日常维护

很多团队关心的是,搭建之后日常需不需要花大量时间管理,根据行业共识,这套组合的维护工作量很小,关键在于自动化。
自动更新
- 使用 Watchtower 容器,自动拉取 Gitea 和 Drone 的最新镜像并重启。
- 也可以手动通过
docker-compose pull && docker-compose up -d完成升级,通常几分钟内完成,不会影响已有数据。
构建缓存优化
- Drone 默认会在每次构建时拉取全新镜像,可以通过配置 volume 挂载 Docker 缓存目录来加速后续构建,避免重复下载依赖。
- 对于 Maven、npm 等包管理器,建议在云主机上配置本地缓存代理,减少外网带宽消耗。
成本控制
- 云主机按需付费或包年包月,如果构建频率不高,可以考虑使用抢占式实例,降低成本。
- 如果构建任务对 CPU 要求高,但平时空闲,可以设置 Drone 的并发限制,避免资源被占满导致 Gitea 响应变慢。
关于云主机搭建代码仓库和 CI 流水线的常见问题
Q1: 云主机搭建代码仓库和 CI 流水线,一个月大概需要多少钱?
主要开销是云主机费用,以国内主流云厂商的轻量应用服务器为例,1 核 2G 配置月费约 50-80 元,2 核 4G 约 100-150 元,如果使用抢占式实例或按量付费,成本可以更低,域名和 HTTPS 证书(免费)无需额外费用,总体预算可控。
Q2: 自建 CI 流水线比用 GitHub Actions 慢吗?
取决于云主机的配置,如果云主机有良好的上行带宽和 CPU 性能,且构建任务不依赖外网下载大文件,自建 CI 的响应速度通常更快,因为省去了排队和网络延迟,但如果构建需要频繁拉取外部依赖,且云主机带宽较小,可能会比托管服务稍慢,可以通过优化镜像层级和利用缓存来缩小差距。
Q3: Gitea 和 GitLab 在轻量方案中怎么选?
Gitea 更轻量,资源占用只有 GitLab 的十分之一左右,适合小团队和低配置云主机,GitLab 功能更全面,支持内置 CI、Registry、Wiki 等,但至少需要 2 核 4G 才能流畅运行,且升级和维护成本更高,如果只需要基础的代码托管和 CI 流水线,Gitea + Drone 是更经济的组合。