b68c715f6b2d3bb238e07d359a20c43e38f705b7
Gitea Docker 部署
使用 Docker Compose 部署 Gitea,支持两种模式:
- HTTP 模式:Gitea 直接暴露端口,仅 HTTP
- Caddy 模式:通过 Caddy 反向代理,同时支持 HTTP 和 HTTPS(自动证书)
架构
HTTP 模式(默认)
Client → Gitea (HTTP_PORT, e.g. 3000)
├─ PostgreSQL (5432, Docker 内部网络)
└─ Gitea SSH (22 → 宿主机 SSH_PORT)
Caddy 模式(--profile caddy)
Client → Caddy (80/443, HTTP + HTTPS) → Gitea (3000, Docker 内部网络)
├─ PostgreSQL (5432, Docker 内部网络)
└─ Gitea SSH (22 → 宿主机 SSH_PORT)
快速开始
前提条件
- 服务器
SSH_PORT(默认 2222)端口可从外网访问 - 如使用 Caddy 模式:域名已解析到服务器公网 IP,且 80、443 端口可从外网访问
1. 配置环境变量
cp .env.example .env
编辑 .env,关键配置:
DOMAIN=git.example.com # 你的域名
SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22)
POSTGRES_PASSWORD=changeme # PostgreSQL 密码(务必修改)
HTTP 模式
ROOT_URL=http://git.example.com:3000/
Caddy 模式
ROOT_URL=https://git.example.com/
2. 启动服务
# HTTP 模式(仅 Gitea + PostgreSQL,无 Caddy)
docker compose up -d
# Caddy 模式(HTTP + HTTPS,Caddy 反向代理)
docker compose --profile caddy up -d
Caddy 会自动为
DOMAIN申请 Let's Encrypt 证书,稍等片刻后即可通过 HTTPS 访问。
3. 初始配置
首次访问会进入安装向导:
- 设置管理员账户
- 数据库已通过环境变量配置为 PostgreSQL,无需手动设置
访问方式
HTTP 模式
| 方式 | 地址 |
|---|---|
| Web 界面 | http://<DOMAIN>:<HTTP_PORT> |
| HTTP 克隆 | git clone http://<DOMAIN>:<HTTP_PORT>/<用户>/<仓库>.git |
| SSH 克隆 | git clone ssh://git@<DOMAIN>:<SSH_PORT>/<用户>/<仓库>.git |
Caddy 模式
| 方式 | 地址 |
|---|---|
| Web 界面 | https://<DOMAIN> |
| HTTP 克隆 | git clone http://<DOMAIN>/<用户>/<仓库>.git |
| HTTPS 克隆 | git clone https://<DOMAIN>/<用户>/<仓库>.git |
| SSH 克隆 | git clone ssh://git@<DOMAIN>:<SSH_PORT>/<用户>/<仓库>.git |
Git LFS
已启用 Git LFS 支持,使用方法:
git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with LFS"
git push
数据备份
备份 PostgreSQL 数据库
docker exec postgres pg_dump -U gitea gitea > gitea-db-$(date +%Y%m%d).sql
备份全部数据
# 备份数据目录 + 数据库导出
tar -czvf gitea-data-$(date +%Y%m%d).tar.gz data/
docker exec postgres pg_dump -U gitea gitea > gitea-db-$(date +%Y%m%d).sql
恢复数据库
cat gitea-db-20260327.sql | docker exec -i postgres psql -U gitea gitea
重要文件:
data/postgres/- PostgreSQL 数据data/git/repositories/- 仓库数据data/git/lfs/- LFS 文件data/gitea/conf/app.ini- Gitea 配置
SQLite 迁移到 PostgreSQL
如果之前使用 SQLite,需执行以下步骤迁移到 PostgreSQL:
1. 停止 Gitea(保留 PostgreSQL 运行)
docker compose stop gitea
2. 备份现有数据
cp data/gitea/gitea.db data/gitea/gitea.db.bak
3. 修改 app.ini 数据库配置
编辑 data/gitea/conf/app.ini,将 [database] 段改为:
[database]
DB_TYPE = postgres
HOST = postgres:5432
NAME = gitea
USER = gitea
PASSWD = <你的 POSTGRES_PASSWORD>
SCHEMA =
SSL_MODE = disable
PATH =
注意:如果 docker-compose.yml 中已通过
GITEA__database__*环境变量配置,则 app.ini 中的值会被覆盖,可不修改 app.ini。
4. 执行数据迁移
docker compose exec gitea gitea migrate
5. 重启 Gitea
docker compose start gitea
6. 验证
访问 Web 界面,确认用户、仓库数据完整。
迁移成功后
data/gitea/gitea.db可以保留作为备份,不会影响 PostgreSQL 运行。
常用命令
# 启动(HTTP 模式)
docker compose up -d
# 启动(Caddy 模式)
docker compose --profile caddy up -d
# 停止
docker compose down
# 查看日志
docker compose logs -f
# 查看 PostgreSQL 日志
docker compose logs -f postgres
# 查看 Caddy 日志
docker compose logs -f caddy
# 重启
docker compose restart
# 更新版本
# 修改 .env 中的 GITEA_VERSION 后
docker compose up -d
# 连接 PostgreSQL
docker exec -it postgres psql -U gitea
Description
Languages
Caddyfile
100%