自建轻量级 Git 服务 Gitea

zheng头像
zheng 2026-07-19 08:35
楼主

为什么选择 Gitea?

GitHub 虽然好用,但有些场景还是需要私有代码仓库:公司内部代码不想放在公有云;私有项目不想付费 GitHub 团队版;想完全掌控自己的代码数据;需要内网部署的代码托管。

GitLab 功能全面但太重了——最低配置要 4GB 内存。而 Gitea 是 Go 语言编写的轻量级 Git 服务,内存占用不到 100MB,树莓派都能跑。

Gitea vs GitLab vs Gogs

特性GiteaGitLabGogs
内存占用~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 -delete

crontab 每日备份: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 命令就能跑起来,功能却一点不少。个人开发者、小团队完全够用,再也不用为代码托管付费了。

Tailscale 异地组网实战 家庭影音中心 Jellyfin 搭建指南

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:6143