switch to Caddy reverse proxy with auto HTTPS

Replace manual nginx + SSL certificates with Caddy for automatic
Let's Encrypt certificate management. Remove direct HTTP port exposure,
route web traffic through Caddy (80/443) via Docker internal network.
SSH remains on port 2222.
This commit is contained in:
2026-04-23 21:05:07 +08:00
parent 83ca0632f6
commit af7d49b685
9 changed files with 60 additions and 206 deletions

View File

@@ -1,26 +1,39 @@
# Gitea 局域网部署
# Gitea Docker 部署Caddy 反向代理 + 自动 HTTPS
使用 Docker Compose 部署 Gitea Git 服务
使用 Docker Compose 部署 Gitea,通过 Caddy 反向代理实现自动 HTTPSLet's Encrypt
## 架构
```
Client → Caddy (80/443, 自动 HTTPS) → Gitea (3000, Docker 内部网络)
Gitea SSH (22 → 宿主机 2222)
```
- **Caddy** 处理 HTTPS 证书的自动申请、续期和 HTTP→HTTPS 重定向
- **Gitea** Web 流量通过 Docker 内部网络由 Caddy 代理,不直接暴露端口
- **SSH** 直接映射到宿主机 2222 端口,不经过 Caddy
## 快速开始
### 1. 配置环境变量
### 前提条件
复制并编辑 `.env` 文件:
- 域名已解析到服务器公网 IP
- 服务器 80、443、2222 端口可从外网访问
### 1. 配置环境变量
```bash
cp .env.example .env
```
修改端口等配置:
编辑 `.env`,关键配置:
```env
HTTP_PORT=3000 # Web 界面端口
SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22
DOMAIN=git.example.com # 你的域名Caddy 将为此域名申请 HTTPS 证书)
SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22
```
> `GITEA__server__SSH_PORT` 通过 `.env` 传递给容器,告知 Gitea 对外 SSH 端口为 `2222`
> 使 Web 界面中的 SSH clone 地址正确显示端口号。
> `GITEA__server__SSH_PORT` 通过 `.env` 传递给容器,使 Web 界面中的 SSH clone 地址正确显示端口号。
### 2. 启动服务
@@ -28,21 +41,22 @@ SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22
docker compose up -d
```
Caddy 会自动为 `DOMAIN` 申请 Let's Encrypt 证书,稍等片刻后即可通过 HTTPS 访问。
### 3. 初始配置
首次访问 `http://<服务器IP>:3000` 会进入安装向导:
首次访问 `https://<DOMAIN>` 会进入安装向导:
1. 设置管理员账户
2. 配置服务器域名(可选)
3. 数据库已默认使用 SQLite
2. 数据库已默认使用 SQLite
## 访问方式
| 方式 | 地址 |
|-----|------|
| Web 界面 | `http://<IP>:3000` |
| HTTP 克隆 | `git clone http://<IP>:3000/<用户>/<仓库>.git` |
| SSH 克隆 | `git clone ssh://git@<IP>:2222/<用户>/<仓库>.git` |
| Web 界面 | `https://<DOMAIN>` |
| HTTPS 克隆 | `git clone https://<DOMAIN>/<用户>/<仓库>.git` |
| SSH 克隆 | `git clone ssh://git@<DOMAIN>:2222/<用户>/<仓库>.git` |
## Git LFS
@@ -69,6 +83,7 @@ tar -xzvf gitea-backup-20260320.tar.gz
```
重要文件:
- `data/gitea/gitea.db` - 用户和配置数据
- `data/git/repositories/` - 仓库数据
- `data/git/lfs/` - LFS 文件
@@ -85,6 +100,9 @@ docker compose down
# 查看日志
docker compose logs -f
# 查看 Caddy 日志
docker compose logs -f caddy
# 重启
docker compose restart