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 MB | Gitea 本身轻量,小套餐可用 |
| 磁盘 | 2 GB+ | 存放仓库数据 |
| 系统 | Debian 12 / Ubuntu 22.04 | 推荐 |
| Docker | 24+ | 含 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 改为 mysql 或 postgres,并在 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防火墙放行端口
ufw allow 80,443,2222/tcp。Gitea 的 3000 端口只需在本地监听,不必对外暴露。完成 Web 安装向导
浏览器访问 https://git.yourdomain.com,首次访问会进入安装向导:
- 数据库选择 SQLite3(已通过环境变量配置,无需额外填写)
- 站点 URL 填入
https://git.yourdomain.com - 设置管理员账号与密码
- 点击"安装 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定期备份脚本
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 数据库中的用户记录。