为什么选择 Gitea?
GitHub 虽然好用,但有些场景还是需要私有代码仓库:公司内部代码不想放在公有云;私有项目不想付费 GitHub 团队版;想完全掌控自己的代码数据;需要内网部署的代码托管。
GitLab 功能全面但太重了——最低配置要 4GB 内存。而 Gitea 是 Go 语言编写的轻量级 Git 服务,内存占用不到 100MB,树莓派都能跑。
Gitea vs GitLab vs Gogs
| 特性 | Gitea | GitLab | Gogs |
|---|---|---|---|
| 内存占用 | ~80MB | ~4GB | ~50MB |
| CI/CD | 需配合 Drone | 内置 | 需配合 Drone |
| Docker 镜像大小 | ~50MB | ~2.5GB | ~30MB |
| 更新频率 | 月度 | 月度 | 较慢 |
| 社区活跃度 | 高 | 高 | 中 |
Gitea 是 Gogs 的社区 fork,更新更活跃,功能更多。
Docker Compose 部署
version: "3"
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: always
ports:
- "3000:3000"
- "2222:22"
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__server__DOMAIN=git.yourdomain.com
- GITEA__server__ROOT_URL=https://git.yourdomain.com/
- GITEA__server__SSH_DOMAIN=git.yourdomain.com
- GITEA__server__SSH_PORT=2222
- GITEA__database__DB_TYPE=sqlite3
- GITEA__service__DISABLE_REGISTRATION=true使用 SQLite 数据库,无需额外安装 MySQL/PostgreSQL,小团队完全够用。DISABLE_REGISTRATION=true 关闭公开注册,管理员手动创建账号更安全。
启动:docker-compose up -d,访问 http://your-ip:3000 进入安装页面。
Nginx 反向代理配置
server {
listen 443 ssl http2;
server_name git.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
client_max_body_size 512M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Git SSH 配置
因为 22 端口被宿主机的 SSH 占用,Gitea 的 SSH 映射到了 2222 端口。
编辑 ~/.ssh/config:
Host git.yourdomain.com
HostName git.yourdomain.com
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519然后就可以像普通 git 一样操作:git clone [email protected]:username/repo.git
实用功能
1. 创建组织/团队
适合小团队使用:创建 Organization,添加成员,设置仓库权限。
2. 镜像仓库
可以将 GitHub 仓库镜像到 Gitea,定时同步:仓库设置,镜像设置,填入 GitHub 仓库地址,设置同步间隔。
3. Webhook 自动部署
配合 GitHub Actions 或自写接收脚本:仓库设置,Webhook,添加 URL,选择事件。
4. Package Registry
Gitea 支持 Docker 镜像仓库和 npm/PyPI 等包管理。
备份策略
#!/bin/bash
cd /path/to/gitea
docker exec gitea gitea dump -c /data/gitea/conf/app.ini
docker cp gitea:/tmp/gitea-dump-*.zip /backup/
find /backup/ -name "gitea-dump-*.zip" -mtime +7 -deletecrontab 每日备份:0 4 * * * /path/to/backup_gitea.sh
常见问题
Q: 1核1G 服务器能跑吗?
A: 完全没问题。Gitea 用 Go 写的,内存占用 80-150MB,CPU 几乎无感。
Q: 能和 CI/CD 配合吗?
A: 推荐搭配 Drone CI 或 Woodpecker CI,都支持 Gitea 作为代码源。
Q: 能和 VS Code 配合吗?
A: VS Code 原生支持 Git,直接 clone 即可。
总结
Gitea 是我最推荐的轻量级 Git 托管方案。一个 Docker 命令就能跑起来,功能却一点不少。个人开发者、小团队完全够用,再也不用为代码托管付费了。