Files
Cloud-Index/docs/guide/configuration.md
2025-11-09 14:21:55 +08:00

335 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 配置指南
createTime: 2025/11/09 00:26:55
permalink: /guide/configuration
---
# 配置说明
本文档详细说明了 Cloud Index 的各种配置选项。
## 配置方式
Cloud Index 通过环境变量进行配置,有两种主要方式:
### 1. 环境变量文件 (.env)
在项目根目录创建 `.env` 文件:
```bash
cp .env.example .env
```
编辑 `.env` 文件,添加需要的配置。
### 2. 系统环境变量
直接在系统中设置环境变量(适用于 Docker、Serverless 等环境)。
## 存储后端配置
### STORAGE_TYPE必需
选择要使用的存储后端:
```env
# Cloudflare R2
STORAGE_TYPE=r2
# Amazon S3
STORAGE_TYPE=s3
# GitHub 仓库
STORAGE_TYPE=github
# GitHub Release
STORAGE_TYPE=github-release
```
## Cloudflare R2 配置
`STORAGE_TYPE=r2` 时,需要配置以下环境变量:
```env
# ===== R2 基础配置 =====
STORAGE_TYPE=r2
# R2 API 访问凭证
ACCESS_KEY_ID=your_access_key_id
SECRET_ACCESS_KEY=your_secret_access_key
# R2 存储桶信息
R2_ENDPOINT_URL=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your-bucket-name
R2_REGION=auto
# ===== 可选配置 =====
# 公开访问 URL用于生成可分享的文件链接
R2_PUBLIC_URL=https://pub-your-bucket.r2.dev
# 预签名 URL 过期时间(秒),默认 3600
R2_PRESIGN_EXPIRES=3600
```
**配置说明:**
| 配置项 | 说明 | 获取方式 |
|-------|------|---------|
| `ACCESS_KEY_ID` | R2 API Token ID | Cloudflare 控制面板 |
| `SECRET_ACCESS_KEY` | R2 API Token Secret | Cloudflare 控制面板 |
| `R2_ENDPOINT_URL` | R2 端点 URL | Cloudflare 控制面板Account ID |
| `R2_BUCKET_NAME` | 存储桶名称 | Cloudflare 控制面板 |
| `R2_PUBLIC_URL` | 公开 URL可选 | Cloudflare 控制面板 → Custom Domain |
**获取凭证步骤:**
1. 登录 [Cloudflare 控制面板](https://dash.cloudflare.com)
2. 进入 R2 → API Tokens
3. 创建新 Token复制 ID 和 Secret
4. 记录你的 Account ID在 R2 仓库页面显示)
## Amazon S3 配置
`STORAGE_TYPE=s3` 时,需要配置以下环境变量:
```env
# ===== S3 基础配置 =====
STORAGE_TYPE=s3
# AWS 访问凭证
ACCESS_KEY_ID=your_aws_access_key
SECRET_ACCESS_KEY=your_aws_secret_key
# S3 存储桶信息
S3_BUCKET_NAME=your-bucket-name
S3_REGION=us-east-1
# ===== 可选配置 =====
# 自定义 S3 端点(用于兼容的 S3 服务)
S3_ENDPOINT_URL=https://s3.amazonaws.com
# 公开访问 URL
S3_PUBLIC_URL=https://your-bucket-name.s3.amazonaws.com
# 预签名 URL 过期时间(秒)
S3_PRESIGN_EXPIRES=3600
```
**配置说明:**
| 配置项 | 说明 | 获取方式 |
|-------|------|---------|
| `ACCESS_KEY_ID` | AWS Access Key ID | AWS IAM 控制台 |
| `SECRET_ACCESS_KEY` | AWS Secret Access Key | AWS IAM 控制台 |
| `S3_BUCKET_NAME` | 存储桶名称 | AWS S3 控制台 |
| `S3_REGION` | 存储桶区域 | AWS S3 控制台 |
**常用区域代码:**
```
us-east-1 - 美国东部N. Virginia
us-west-2 - 美国西部Oregon
eu-west-1 - 欧洲Ireland
ap-northeast-1 - 亚太Tokyo
cn-north-1 - 中国(北京)
```
## GitHub 存储配置
`STORAGE_TYPE=github` 时,需要配置以下环境变量:
```env
# ===== GitHub 基础配置 =====
STORAGE_TYPE=github
# GitHub 账户信息
GITHUB_REPO_OWNER=your-username
GITHUB_REPO_NAME=your-repo-name
GITHUB_ACCESS_TOKEN=your_github_personal_token
# ===== 可选配置 =====
# 使用的分支,默认 main
GITHUB_BRANCH=main
# GitHub Raw 内容代理 URL用于加速访问
GITHUB_RAW_PROXY_URL=https://raw.ghproxy.com
# 预签名 URL 过期时间(秒)
GITHUB_PRESIGN_EXPIRES=3600
```
**配置说明:**
| 配置项 | 说明 | 获取方式 |
|-------|------|---------|
| `GITHUB_REPO_OWNER` | GitHub 用户名或组织名 | GitHub Profile |
| `GITHUB_REPO_NAME` | 仓库名称 | GitHub 仓库页面 |
| `GITHUB_ACCESS_TOKEN` | Personal Access Token | GitHub Settings → Developer settings |
| `GITHUB_RAW_PROXY_URL` | Raw 内容代理(可选) | 第三方代理服务 |
**获取 Token 步骤:**
1. 登录 GitHub
2. 进入 Settings → Developer settings → Personal access tokens
3. 创建新 TokenNew fine-grained personal access token
4. 勾选 `contents` 权限(读写仓库内容)
5. 复制 Token保存到 `.env` 文件
**推荐代理服务:**
```
https://raw.ghproxy.com - 国内加速
https://ghproxy.com - 国内加速
https://raw.githubusercontent.com - 官方(无加速)
```
## 应用配置
### 缓存配置
```env
# 缩略图缓存过期时间(秒),默认 36001小时
THUMB_TTL_SECONDS=3600
```
### 应用服务器配置
```env
# Flask 调试模式(开发环境推荐启用)
FLASK_ENV=development
FLASK_DEBUG=1
# 应用监听地址
FLASK_RUN_HOST=0.0.0.0
# 应用监听端口
FLASK_RUN_PORT=5000
```
### 日志配置
```env
# 日志级别
LOG_LEVEL=INFO
# 日志文件路径
LOG_FILE=/var/log/Cloud Index/app.log
```
## 完整配置示例
### R2 + 国内代理
```env
# 存储配置
STORAGE_TYPE=r2
ACCESS_KEY_ID=abc123xyz
SECRET_ACCESS_KEY=def456uvw
R2_ENDPOINT_URL=https://account123.r2.cloudflarestorage.com
R2_BUCKET_NAME=my-bucket
R2_REGION=auto
R2_PUBLIC_URL=https://pub-my-bucket.r2.dev
R2_PRESIGN_EXPIRES=7200
# 应用配置
FLASK_ENV=production
FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=8080
THUMB_TTL_SECONDS=7200
```
### GitHub + 加速代理
```env
# 存储配置
STORAGE_TYPE=github
GITHUB_REPO_OWNER=myusername
GITHUB_REPO_NAME=my-storage
GITHUB_ACCESS_TOKEN=ghp_xxxxxxxxxxxxxxxxxx
GITHUB_BRANCH=main
GITHUB_RAW_PROXY_URL=https://raw.ghproxy.com
# 应用配置
FLASK_ENV=production
THUMB_TTL_SECONDS=3600
```
### Amazon S3 + CDN
```env
# 存储配置
STORAGE_TYPE=s3
ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
S3_BUCKET_NAME=my-bucket
S3_REGION=us-west-2
S3_PUBLIC_URL=https://d123.cloudfront.net
# 应用配置
FLASK_ENV=production
FLASK_RUN_PORT=5000
```
## 环境变量优先级
1. 系统环境变量(最高)
2. `.env` 文件变量
3. 代码中的默认值(最低)
## 配置验证
启动应用后,检查日志输出确保配置正确:
```bash
python app.py
```
如果看到以下输出,说明配置成功:
```
* Serving Flask app 'app'
* Running on http://127.0.0.1:5000
[INFO] Storage backend initialized: R2
```
如果看到错误信息,检查:
1. 必需的环境变量是否都已设置
2. 凭证是否正确
3. 网络连接是否正常
## 故障排除
### 环境变量未被读取
确保:
1. `.env` 文件在项目根目录
2. 变量名称正确(区分大小写)
3. 没有多余的空格或引号
### 连接存储后端失败
检查:
1. 网络连接是否正常
2. 凭证是否有效
3. 防火墙是否阻止出站连接
4. 存储桶是否存在
### 公开 URL 不可用
确保:
1. 已配置公开 URL可选
2. 存储桶允许公开访问
3. CDN如有已配置
## 下一步
- [环境变量详解](./environment.md) - 每个环境变量的详细说明
- [部署指南](./deployment.md) - 生产环境部署
- [存储后端指南](../storage/) - 详细的后端配置指南