Gitea 是一款轻量、开源的自建 Git 服务,界面类似 GitHub,支持代码仓库、Issues、Pull Request、CI 钩子等功能,内存占用仅几十 MB,非常适合在搬瓦工小内存 VPS 上运行。本文演示如何用 Docker Compose 部署 Gitea,配置域名反向代理与 SSL,完成初始化并建立备份策略。

本文要点

  • Docker Compose 一键部署 Gitea + SQLite/MySQL
  • Nginx 反向代理 + Let's Encrypt SSL
  • 完成 Web 安装向导与初始化配置
  • 数据备份与恢复思路

环境要求

组件最低要求说明
内存256 MBGitea 本身轻量,小套餐可用
磁盘2 GB+存放仓库数据
系统Debian 12 / Ubuntu 22.04推荐
Docker24+含 docker compose plugin

目录结构与 Compose 文件

先创建存放配置与数据的目录:

mkdir -p /opt/gitea/{data,config}
cd /opt/gitea

创建 docker-compose.yml

# /opt/gitea/docker-compose.yml
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=sqlite3
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"   # Web UI
      - "2222:22"     # SSH 克隆
    restart: unless-stopped

使用 MySQL/PostgreSQL

生产环境建议将 DB_TYPE 改为 mysqlpostgres,并在 Compose 中添加对应数据库服务,以获得更好的并发性能。

启动 Gitea

cd /opt/gitea
docker compose up -d
# 查看日志
docker compose logs -f

配置 Nginx 反向代理与 SSL

在宿主机安装 Nginx 并申请证书:

apt install -y nginx certbot python3-certbot-nginx
certbot --nginx -d git.yourdomain.com

/etc/nginx/conf.d/gitea.conf 写入:

server {
    listen 80;
    server_name git.yourdomain.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name git.yourdomain.com;
    ssl_certificate     /etc/letsencrypt/live/git.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.yourdomain.com/privkey.pem;
    client_max_body_size 100m;
    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 https;
    }
}
nginx -t && systemctl reload nginx

防火墙放行端口

确保防火墙放行了 80、443 与 2222(SSH 克隆)端口:ufw allow 80,443,2222/tcp。Gitea 的 3000 端口只需在本地监听,不必对外暴露。

完成 Web 安装向导

浏览器访问 https://git.yourdomain.com,首次访问会进入安装向导:

  1. 数据库选择 SQLite3(已通过环境变量配置,无需额外填写)
  2. 站点 URL 填入 https://git.yourdomain.com
  3. 设置管理员账号与密码
  4. 点击"安装 Gitea",等待完成后跳转登录页

SSH 克隆配置

Gitea 的 SSH 克隆走宿主机的 2222 端口(容器内 22 映射至此)。用户在仓库页面看到的 SSH 地址需要与实际端口对应,可在 Gitea 管理后台→服务器管理→配置中核对 SSH 域名与端口。

备份与恢复

Gitea 的所有数据(仓库、数据库、附件、配置)都存放在 /opt/gitea/data,备份只需打包该目录:

# 备份
docker compose stop
tar czf /tmp/gitea_backup_$(date +%F).tar.gz -C /opt/gitea data
docker compose start

# 恢复
docker compose stop
tar xzf /tmp/gitea_backup_2026-05-31.tar.gz -C /opt/gitea
docker compose start

定期备份脚本

将上面的备份命令写入 cron,配合 rclone 上传到对象存储,实现全自动异地备份。

小结

  • Compose + SQLite 方案适合个人与小团队,资源占用极低
  • 反代 + SSL 是公网暴露的标配,certbot 自动续签无需人工干预
  • 所有数据集中在一个目录,备份恢复极为方便
  • SSH 克隆端口默认 2222,记得在防火墙放行并告知团队成员

常见问题

Gitea 支持多人协作吗?

支持。可创建组织和团队,设置仓库权限,支持 Fork、Pull Request 与 Issues,功能接近 GitHub 的核心特性。

能从 GitHub/GitLab 迁移仓库过来吗?

可以。Gitea 支持从 GitHub、GitLab、Gitea 等平台一键迁移仓库,包括 Issues 和 Pull Request 历史。

忘记管理员密码怎么办?

进入容器后执行 gitea admin user change-password --username admin --password 新密码,或直接修改 SQLite 数据库中的用户记录。