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:
48
README.md
48
README.md
@@ -1,26 +1,39 @@
|
||||
# Gitea 局域网部署
|
||||
# Gitea Docker 部署(Caddy 反向代理 + 自动 HTTPS)
|
||||
|
||||
使用 Docker Compose 部署的 Gitea Git 服务。
|
||||
使用 Docker Compose 部署 Gitea,通过 Caddy 反向代理实现自动 HTTPS(Let'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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user