Source:
ops/02-gitea-domain-https-switch.md文档日期:2026-07-08 当前 Gitea 地址:http://<服务器公网 IP>:<Gitea Web 端口>/ 计划域名:<Gitea 域名>
公开版说明:本文中的公网 IP、域名、端口和仓库路径均已脱敏,实际执行前需要替换为真实值。
1. 当前状态
当前 Gitea 已通过 Docker 运行,访问方式为:
http://<服务器公网 IP>:<Gitea Web 端口>/这种方式适合临时使用和初始化排障。后续备案完成后,建议切换为:
https://<Gitea 域名>/切换目标不是简单改一个域名,而是同时完成:
- DNS A 记录
- 阿里云备案状态确认
- Nginx HTTP 反向代理
- Certbot HTTPS 证书
- Gitea
app.ini中的域名与 ROOT_URL - Git remote 地址更新
2. 切换前检查
确认容器正常:
cd <Gitea compose 目录>
docker compose ps
curl -I http://127.0.0.1:<Gitea Web 端口>/确认公网 IP 访问正常:
curl -I http://<服务器公网 IP>:<Gitea Web 端口>/确认已备份:
docker run --rm \
-v gitea_gitea-data:/data \
-v "$PWD":/backup \
alpine \
tar -czf /backup/gitea-data-before-https-$(date +%F).tar.gz -C /data .3. DNS 配置
在 DNS 平台添加 A 记录:
主机记录:git
记录类型:A
记录值:<服务器公网 IP>验证解析:
nslookup <Gitea 域名>如果返回的 IP 是 <服务器公网 IP>,说明 DNS 基本生效。
4. 先配置 HTTP 反向代理
不要一开始就写 HTTPS 证书路径。证书文件不存在时,Nginx 会直接启动失败。
先写 HTTP:
server {
listen 80;
server_name <Gitea 域名>;
client_max_body_size 512M;
location / {
proxy_pass http://127.0.0.1:<Gitea Web 端口>;
proxy_http_version 1.1;
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;
}
}检查并重载:
nginx -t
systemctl reload nginx验证:
curl -I http://<Gitea 域名>/5. 申请 HTTPS 证书
HTTP 可访问后,再执行:
certbot --nginx -d <Gitea 域名>成功后检查:
curl -I https://<Gitea 域名>/自动续期检查:
certbot renew --dry-run6. 修改 Gitea app.ini
进入容器编辑:
docker exec -it gitea vi <Gitea app.ini>建议 [server] 段调整为:
[server]
PROTOCOL = http
DOMAIN = <Gitea 域名>
ROOT_URL = https://<Gitea 域名>/
HTTP_PORT = <Gitea Web 端口>
SSH_DOMAIN = <Gitea 域名>
SSH_PORT = <Gitea SSH 端口>注意:PROTOCOL = http 是指 Gitea 容器内部仍以 HTTP 对 Nginx 提供服务;公网 HTTPS 由 Nginx 处理。
重启:
cd <Gitea compose 目录>
docker compose restart7. 更新 Git remote
查看现有地址:
git remote -vHTTP 地址切换:
git remote set-url gitea https://<Gitea 域名>/<用户名>/<仓库名>.gitSSH 地址切换:
git remote set-url gitea ssh://git@<Gitea 域名>:<Gitea SSH 端口>/<用户名>/<仓库名>.git测试:
git ls-remote gitea8. 安全收口
确认域名和 HTTPS 可用后,可以考虑把 Docker 的 <Gitea Web 端口> 端口限制为本机访问:
ports:
- "127.0.0.1:<Gitea Web 端口>:<Gitea Web 端口>"
- "<Gitea SSH 端口>:22"这样外部访问只能通过 Nginx 进入,减少绕过 HTTPS 的入口。
修改后重建:
docker compose up -d9. 回滚方式
如果域名或 HTTPS 出问题,可以先回到 IP 访问:
[server]
DOMAIN = <服务器公网 IP>
ROOT_URL = http://<服务器公网 IP>:<Gitea Web 端口>/
SSH_DOMAIN = <服务器公网 IP>
SSH_PORT = <Gitea SSH 端口>重启:
docker compose restart临时访问:
http://<服务器公网 IP>:<Gitea Web 端口>/10. 最小检查清单
[ ] Gitea 数据已备份
[ ] DNS A 记录指向 <服务器公网 IP>
[ ] 备案状态允许访问
[ ] HTTP 反向代理可访问
[ ] Certbot 证书申请成功
[ ] ROOT_URL 已改为 https://<Gitea 域名>/
[ ] Git remote 已更新
[ ] <Gitea Web 端口> 端口已考虑本机绑定