support HTTP-only and Caddy (HTTP+HTTPS) modes via compose profiles
This commit is contained in:
@@ -18,5 +18,10 @@ GITEA__lfs__PATH=/data/git/lfs
|
|||||||
# 禁用公开注册(仅管理员可创建账号)
|
# 禁用公开注册(仅管理员可创建账号)
|
||||||
GITEA__service__DISABLE_REGISTRATION=true
|
GITEA__service__DISABLE_REGISTRATION=true
|
||||||
|
|
||||||
# 域名配置(Caddy 反向代理 + 自动 HTTPS)
|
# 域名配置
|
||||||
DOMAIN=git.example.com
|
DOMAIN=git.example.com
|
||||||
|
|
||||||
|
# ROOT_URL:决定 Gitea UI 中的链接生成
|
||||||
|
# 不使用 Caddy(仅 HTTP):ROOT_URL=http://${DOMAIN}:${HTTP_PORT}/
|
||||||
|
# 使用 Caddy(HTTP + HTTPS):ROOT_URL=https://${DOMAIN}/
|
||||||
|
ROOT_URL=http://${DOMAIN}:${HTTP_PORT}/
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
{$DOMAIN} {
|
http://{$DOMAIN} {
|
||||||
|
reverse_proxy gitea:3000
|
||||||
|
}
|
||||||
|
|
||||||
|
https://{$DOMAIN} {
|
||||||
reverse_proxy gitea:3000
|
reverse_proxy gitea:3000
|
||||||
}
|
}
|
||||||
|
|||||||
66
README.md
66
README.md
@@ -1,24 +1,32 @@
|
|||||||
# Gitea Docker 部署(Caddy 反向代理 + 自动 HTTPS)
|
# Gitea Docker 部署
|
||||||
|
|
||||||
使用 Docker Compose 部署 Gitea,通过 Caddy 反向代理实现自动 HTTPS(Let's Encrypt)。
|
使用 Docker Compose 部署 Gitea,支持两种模式:
|
||||||
|
|
||||||
|
- **HTTP 模式**:Gitea 直接暴露端口,仅 HTTP
|
||||||
|
- **Caddy 模式**:通过 Caddy 反向代理,同时支持 HTTP 和 HTTPS(自动证书)
|
||||||
|
|
||||||
## 架构
|
## 架构
|
||||||
|
|
||||||
|
### HTTP 模式(默认)
|
||||||
|
|
||||||
```
|
```
|
||||||
Client → Caddy (80/443, 自动 HTTPS) → Gitea (3000, Docker 内部网络)
|
Client → Gitea (HTTP_PORT, e.g. 3000)
|
||||||
Gitea SSH (22 → 宿主机 2222)
|
Gitea SSH (22 → 宿主机 SSH_PORT)
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Caddy** 处理 HTTPS 证书的自动申请、续期和 HTTP→HTTPS 重定向
|
### Caddy 模式(--profile caddy)
|
||||||
- **Gitea** Web 流量通过 Docker 内部网络由 Caddy 代理,不直接暴露端口
|
|
||||||
- **SSH** 直接映射到宿主机 2222 端口,不经过 Caddy
|
```
|
||||||
|
Client → Caddy (80/443, HTTP + HTTPS) → Gitea (3000, Docker 内部网络)
|
||||||
|
Gitea SSH (22 → 宿主机 SSH_PORT)
|
||||||
|
```
|
||||||
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
|
|
||||||
### 前提条件
|
### 前提条件
|
||||||
|
|
||||||
- 域名已解析到服务器公网 IP
|
- 服务器 `SSH_PORT`(默认 2222)端口可从外网访问
|
||||||
- 服务器 80、443、2222 端口可从外网访问
|
- 如使用 Caddy 模式:域名已解析到服务器公网 IP,且 80、443 端口可从外网访问
|
||||||
|
|
||||||
### 1. 配置环境变量
|
### 1. 配置环境变量
|
||||||
|
|
||||||
@@ -29,34 +37,59 @@ cp .env.example .env
|
|||||||
编辑 `.env`,关键配置:
|
编辑 `.env`,关键配置:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
DOMAIN=git.example.com # 你的域名(Caddy 将为此域名申请 HTTPS 证书)
|
DOMAIN=git.example.com # 你的域名
|
||||||
SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22)
|
SSH_PORT=2222 # SSH 端口(宿主机端口,容器内仍为 22)
|
||||||
```
|
```
|
||||||
|
|
||||||
> `GITEA__server__SSH_PORT` 通过 `.env` 传递给容器,使 Web 界面中的 SSH clone 地址正确显示端口号。
|
#### HTTP 模式
|
||||||
|
|
||||||
|
```env
|
||||||
|
ROOT_URL=http://git.example.com:3000/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Caddy 模式
|
||||||
|
|
||||||
|
```env
|
||||||
|
ROOT_URL=https://git.example.com/
|
||||||
|
```
|
||||||
|
|
||||||
### 2. 启动服务
|
### 2. 启动服务
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# HTTP 模式(仅 Gitea,无 Caddy)
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
|
# Caddy 模式(HTTP + HTTPS,Caddy 反向代理)
|
||||||
|
docker compose --profile caddy up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Caddy 会自动为 `DOMAIN` 申请 Let's Encrypt 证书,稍等片刻后即可通过 HTTPS 访问。
|
> Caddy 会自动为 `DOMAIN` 申请 Let's Encrypt 证书,稍等片刻后即可通过 HTTPS 访问。
|
||||||
|
|
||||||
### 3. 初始配置
|
### 3. 初始配置
|
||||||
|
|
||||||
首次访问 `https://<DOMAIN>` 会进入安装向导:
|
首次访问会进入安装向导:
|
||||||
|
|
||||||
1. 设置管理员账户
|
1. 设置管理员账户
|
||||||
2. 数据库已默认使用 SQLite
|
2. 数据库已默认使用 SQLite
|
||||||
|
|
||||||
## 访问方式
|
## 访问方式
|
||||||
|
|
||||||
|
### 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>` |
|
| Web 界面 | `https://<DOMAIN>` |
|
||||||
|
| HTTP 克隆 | `git clone http://<DOMAIN>/<用户>/<仓库>.git` |
|
||||||
| HTTPS 克隆 | `git clone https://<DOMAIN>/<用户>/<仓库>.git` |
|
| HTTPS 克隆 | `git clone https://<DOMAIN>/<用户>/<仓库>.git` |
|
||||||
| SSH 克隆 | `git clone ssh://git@<DOMAIN>:2222/<用户>/<仓库>.git` |
|
| SSH 克隆 | `git clone ssh://git@<DOMAIN>:<SSH_PORT>/<用户>/<仓库>.git` |
|
||||||
|
|
||||||
## Git LFS
|
## Git LFS
|
||||||
|
|
||||||
@@ -91,9 +124,12 @@ tar -xzvf gitea-backup-20260320.tar.gz
|
|||||||
## 常用命令
|
## 常用命令
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 启动
|
# 启动(HTTP 模式)
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
|
# 启动(Caddy 模式)
|
||||||
|
docker compose --profile caddy up -d
|
||||||
|
|
||||||
# 停止
|
# 停止
|
||||||
docker compose down
|
docker compose down
|
||||||
|
|
||||||
|
|||||||
@@ -8,18 +8,21 @@ services:
|
|||||||
- GITEA__lfs__PATH=${GITEA__lfs__PATH}
|
- GITEA__lfs__PATH=${GITEA__lfs__PATH}
|
||||||
- GITEA__service__DISABLE_REGISTRATION=${GITEA__service__DISABLE_REGISTRATION}
|
- GITEA__service__DISABLE_REGISTRATION=${GITEA__service__DISABLE_REGISTRATION}
|
||||||
- GITEA__server__SSH_PORT=${GITEA__server__SSH_PORT}
|
- GITEA__server__SSH_PORT=${GITEA__server__SSH_PORT}
|
||||||
- GITEA__server__ROOT_URL=https://${DOMAIN}/
|
- GITEA__server__ROOT_URL=${ROOT_URL}
|
||||||
- GITEA__server__DOMAIN=${DOMAIN}
|
- GITEA__server__DOMAIN=${DOMAIN}
|
||||||
- GITEA__server__SSH_DOMAIN=${DOMAIN}
|
- GITEA__server__SSH_DOMAIN=${DOMAIN}
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
ports:
|
ports:
|
||||||
|
- "${HTTP_PORT}:3000"
|
||||||
- "${SSH_PORT}:22"
|
- "${SSH_PORT}:22"
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
image: caddy:2
|
image: caddy:2
|
||||||
container_name: caddy
|
container_name: caddy
|
||||||
|
profiles:
|
||||||
|
- caddy
|
||||||
environment:
|
environment:
|
||||||
- DOMAIN=${DOMAIN}
|
- DOMAIN=${DOMAIN}
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
Reference in New Issue
Block a user