fix: 修正Cloudflare Pages构建配置,简化部署文档,添加Vercel环境变量示例

This commit is contained in:
katelya
2025-09-04 20:47:55 +08:00
parent fac3f4bfc7
commit 11779e6d24
2 changed files with 974 additions and 81 deletions
+62
View File
@@ -0,0 +1,62 @@
# KatelyaTV Vercel 环境变量配置示例
# 复制此文件为 .env.local 并填入实际值
# ==============================================
# 基础配置(必填)
# ==============================================
# 访问密码(必填)
PASSWORD=your_secure_password_here
# 管理员用户名(可选,用于管理界面登录)
USERNAME=admin
# ==============================================
# 存储配置
# ==============================================
# 存储类型:localstorage(默认)/ redis / upstash / d1
NEXT_PUBLIC_STORAGE_TYPE=localstorage
# ==============================================
# Upstash Redis 配置(选择 upstash 存储时需要)
# ==============================================
# Upstash Redis REST API 地址
# UPSTASH_REDIS_REST_URL=https://xxx.upstash.io
# Upstash Redis REST API 令牌
# UPSTASH_REDIS_REST_TOKEN=AX_xxx
# ==============================================
# Redis 配置(选择 redis 存储时需要)
# ==============================================
# Redis 连接字符串
# REDIS_URL=redis://localhost:6379
# ==============================================
# 站点配置(可选)
# ==============================================
# 站点显示名称
NEXT_PUBLIC_SITE_NAME=KatelyaTV
# 站点描述
NEXT_PUBLIC_SITE_DESCRIPTION=高性能影视播放平台
# 是否允许用户注册(true/false)
NEXT_PUBLIC_ENABLE_REGISTER=false
# ==============================================
# 高级配置(可选)
# ==============================================
# 跨域配置
# CORS_ORIGIN=*
# 启用访问统计(true/false
# ENABLE_ANALYTICS=false
# Node.js 运行时优化
# NODE_OPTIONS=--max-old-space-size=1024
+912 -81
View File
@@ -179,62 +179,496 @@ NEXT_PUBLIC_ENABLE_REGISTER=true
**适合场景**:无服务器,免费部署,支持多用户
1. **Fork 仓库**Fork [KatelyaTV](https://github.com/katelya77/KatelyaTV) 到你的 GitHub
#### 基础部署(仅密码保护)
1. **Fork 仓库**
- 访问 [KatelyaTV](https://github.com/katelya77/KatelyaTV)
- 点击右上角 `Fork` 按钮,将项目 Fork 到你的 GitHub 账号
2. **部署到 Vercel**
- 登录 [Vercel](https://vercel.com/)(推荐使用 GitHub 账号登录)
- 点击 `New Project`,选择刚才 Fork 的 `KatelyaTV` 仓库
-`Environment Variables` 部分添加:
```
PASSWORD=your_password
```
- 点击 `Deploy` 开始部署
- 等待 2-3 分钟部署完成,获得访问链接
- 登录 [Vercel](https://vercel.com/),导入你的仓库
- 添加环境变量:`PASSWORD=your_password`
- 点击 Deploy
#### 高级配置(多用户支持)
3. **配置多用户(可选)**
3. **创建 Upstash Redis 数据库**
- 访问 [Upstash](https://upstash.com/),使用 GitHub 账号登录
- 点击 `Create Database`,选择免费的区域(推荐选择离你最近的区域)
- 记录数据库的 `UPSTASH_REDIS_REST_URL` 和 `UPSTASH_REDIS_REST_TOKEN`
4. **在 Vercel 中添加环境变量**
- 进入 Vercel 项目设置页面
- 在 `Environment Variables` 添加以下变量:
```bash
# 创建 Upstash Redis 数据库
# 在 Vercel 中添加环境变量:
# 存储配置
NEXT_PUBLIC_STORAGE_TYPE=upstash
UPSTASH_URL=https://xxx.upstash.io
UPSTASH_TOKEN=your_token
NEXT_PUBLIC_ENABLE_REGISTER=true
UPSTASH_REDIS_REST_URL=https://xxx.upstash.io
UPSTASH_REDIS_REST_TOKEN=your_token
# 管理员账号
USERNAME=admin
PASSWORD=admin_password
# 用户注册
NEXT_PUBLIC_ENABLE_REGISTER=true
# 站点配置
NEXT_PUBLIC_SITE_NAME=KatelyaTV
NEXT_PUBLIC_SITE_DESCRIPTION=高性能影视播放平台
```
### 方案五:Cloudflare + D1(技术爱好者)
5. **重新部署**
- 在 Vercel 项目页面点击 `Deployments` 标签
- 点击最新部署旁的三点菜单,选择 `Redeploy`
**适合场景**全球 CDN 加速,免费但配置稍复杂
### 方案五:Cloudflare Pages + D1全球CDN加速
**适合场景**:全球访问,免费CDN,无限带宽,支持多用户
#### 方法一:网页操作部署(推荐新手)
1. **准备代码仓库**
- Fork [KatelyaTV](https://github.com/katelya77/KatelyaTV) 到你的 GitHub 账号
2. **创建 Cloudflare Pages 项目**
- 登录 [Cloudflare Dashboard](https://dash.cloudflare.com/)
- 左侧菜单选择 `Workers and Pages` → `Create application` → `Pages` → `Connect to Git`
3. **连接仓库并配置**
- 选择 Fork 的 `KatelyaTV` 仓库,分支选择 `main`
- **构建设置**
```
Build command: pnpm install --frozen-lockfile && pnpm run pages:build
Build output directory: .vercel/output/static
```
- **兼容性标志**:添加 `nodejs_compat`
4. **环境变量配置**
```bash
PASSWORD=your_password
USERNAME=admin
NEXT_PUBLIC_STORAGE_TYPE=d1
NEXT_PUBLIC_ENABLE_REGISTER=true
```
5. **创建 D1 数据库**(多用户支持):
```bash
wrangler d1 create katelyatv-db
wrangler d1 execute katelyatv-db --file=./scripts/d1-init.sql
```
在 `wrangler.toml` 中配置数据库 ID
#### 方法二:命令行部署
```bash
# 下载配置文件
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/wrangler.toml
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/.env.cloudflare.example
# 安装 CLI 并登录
npm install -g wrangler
wrangler login
# 创建 D1 数据库
wrangler d1 create katelyatv-db
wrangler d1 execute katelyatv-db --file=./scripts/d1-init.sql
# 克隆并部署
git clone https://github.com/your-username/KatelyaTV.git
cd KatelyaTV
pnpm install
pnpm run pages:build
wrangler pages deploy .vercel/output/static --project-name katelyatv
```
# 部署
wrangler pages deploy
### 方案六:Netlify 部署(备选方案)
**适合场景**:GitHub 集成,自动部署,免费额度充足
1. **准备仓库**
- Fork [KatelyaTV](https://github.com/katelya77/KatelyaTV) 到你的 GitHub
2. **部署到 Netlify**
- 登录 [Netlify](https://app.netlify.com/)
- 点击 `New site from Git`
- 选择 GitHub 并授权访问
- 选择 KatelyaTV 仓库
3. **配置构建设置**
```
Build command: pnpm run build
Publish directory: .next
```
4. **添加环境变量**
- 在站点设置中找到 `Environment variables`
- 添加:
```bash
PASSWORD=your_password
NEXT_PUBLIC_STORAGE_TYPE=localstorage
```
5. **部署完成**
- 获得 `xxx.netlify.app` 访问链接
- 可以在设置中配置自定义域名
---
## 📝 部署注意事项
### 🚀 性能优化建议
**Cloudflare Pages 优化**
- 启用 Brotli 压缩:在 Cloudflare Dashboard 的 Speed 标签中启用
- 配置缓存规则:静态资源缓存 30 天,API 缓存 5 分钟
- 开启 Auto MinifyJS、CSS、HTML 自动压缩
**Vercel 优化**
- 使用 Edge Functions 替代 Serverless Functions
- 配置合理的缓存头:`Cache-Control: public, max-age=3600`
- 启用分析面板监控性能
**Docker 优化**
- 使用多阶段构建减小镜像体积
- 配置健康检查:`HEALTHCHECK --interval=30s CMD curl -f http://localhost:3000 || exit 1`
- 设置合理的内存限制:`--memory=512m`
### 🔧 常见问题排除
**构建失败**
```bash
# 检查 Node.js 版本(需要 18+
node --version
# 清理缓存重新安装
rm -rf node_modules pnpm-lock.yaml
pnpm install
# 检查环境变量配置
echo $PASSWORD
```
**视频播放问题**
- 检查 config.json 格式是否正确
- 确认视频源 API 地址可访问
- 查看浏览器控制台错误信息
**数据库连接失败**
```bash
# Redis 连接测试
redis-cli -u $REDIS_URL ping
# D1 数据库状态检查
wrangler d1 info your-database-name
# Upstash 连接测试
curl -H "Authorization: Bearer $UPSTASH_REDIS_REST_TOKEN" \
$UPSTASH_REDIS_REST_URL/ping
```
**内存溢出**
- 调整 Node.js 内存限制:`NODE_OPTIONS="--max-old-space-size=1024"`
- Docker 增加内存分配:`--memory=1g`
- 优化视频缓存策略
### 🔒 安全配置
**生产环境必配**
```bash
# 强密码策略
PASSWORD="$(openssl rand -base64 32)"
# HTTPS 强制重定向
FORCE_HTTPS=true
# 跨域配置
CORS_ORIGIN="https://your-domain.com"
# 限制管理员访问
ADMIN_IP_WHITELIST="192.168.1.0/24,10.0.0.0/8"
```
**防护措施**
- 启用 DDoS 防护(Cloudflare 免费提供)
- 配置 CSP 内容安全策略
- 定期更新依赖包:`pnpm update`
- 监控异常访问日志
### 💾 数据备份
**定期备份策略**
```bash
# Redis 数据备份
redis-cli -u $REDIS_URL --rdb backup.rdb
# D1 数据库备份
wrangler d1 export your-db-name --output=backup-$(date +%Y%m%d).sql
# 配置文件备份
cp config.json config-backup-$(date +%Y%m%d).json
# 自动化备份脚本
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p backups/$DATE
# 备份逻辑...
```
### 📊 监控和日志
**性能监控**
- Vercel Analytics:自动启用
- Cloudflare Analytics:在 Dashboard 查看
- 自定义监控:集成 Sentry 或类似服务
**日志分析**
```bash
# Docker 容器日志
docker logs katelyatv-container -f
# Vercel 函数日志
vercel logs your-project
# Cloudflare 实时日志
wrangler tail --format=pretty
```
---
## ⚙️ 配置说明
### 🔧 环境变量
### 🔧 环境变量详解
| 变量名 | 说明 | 默认值 |
| ----------------------------- | ---------------- | ------------ |
| `PASSWORD` | 访问密码(必填) | 无 |
| `USERNAME` | 管理员用户名 | 无 |
| `SITE_NAME` | 站点名称 | KatelyaTV |
| `NEXT_PUBLIC_STORAGE_TYPE` | 存储类型 | localstorage |
| `REDIS_URL` | Redis 连接地址 | 无 |
| `NEXT_PUBLIC_ENABLE_REGISTER` | 开启用户注册 | false |
| 变量名 | 说明 | 默认值 | 示例值 |
|--------|------|--------|--------|
| `PASSWORD` | 访问密码(必填) | 无 | `mySecretPass123` |
| `USERNAME` | 管理员用户名 | 无 | `admin` |
| `NEXT_PUBLIC_SITE_NAME` | 站点显示名称 | KatelyaTV | `我的影视站` |
| `NEXT_PUBLIC_SITE_DESCRIPTION` | 站点描述 | 高性能... | `专业的在线影视平台` |
| `NEXT_PUBLIC_STORAGE_TYPE` | 数据存储方式 | localstorage | `redis/d1/upstash` |
| `REDIS_URL` | Redis 连接字符串 | 无 | `redis://localhost:6379` |
| `UPSTASH_REDIS_REST_URL` | Upstash REST API 地址 | 无 | `https://xxx.upstash.io` |
| `UPSTASH_REDIS_REST_TOKEN` | Upstash 访问令牌 | 无 | `AX_xxx` |
| `NEXT_PUBLIC_ENABLE_REGISTER` | 是否允许用户注册 | false | `true/false` |
| `ENABLE_ANALYTICS` | 启用访问统计 | false | `true/false` |
| `CORS_ORIGIN` | 允许的跨域来源 | * | `https://example.com` |
### 📁 视频源配置
### 🎨 自定义主题
> **重要**:为保障项目合规性,需要配置视频源才能正常使用。
**颜色配置**
```css
/* 在 src/styles/colors.css 中自定义 */
:root {
--primary-color: #3b82f6; /* 主色调 */
--secondary-color: #64748b; /* 次要颜色 */
--background-color: #0f172a; /* 背景色 */
--text-color: #e2e8f0; /* 文字颜色 */
}
```
#### 方法一:使用推荐配置(推荐)
**Logo 替换**
- 替换 `public/logo.png`(推荐尺寸:200x60px
- 更新 `public/favicon.ico`
- 修改 `public/manifest.json` 中的图标路径
### 📁 视频源配置详解
#### 推荐配置源
1. **基础版配置**
- 包含 20+ 优质片源
- 下载:[config.json](https://www.mediafire.com/file/xl3yo7la2ci378w/config.json/file)
- 适合个人使用
2. **增强版配置**
- 包含 94 个精选片源
- 下载:[configplus.json](https://www.mediafire.com/file/fbpk1mlupxp3u3v/configplus.json/file)
- 重命名为 config.json 使用
#### 配置方式说明
**Docker 部署**
```bash
# 方法1:挂载本地配置文件
docker run -d \
-v ./config.json:/app/config.json:ro \
-p 3000:3000 \
ghcr.io/katelya77/katelyatv:latest
# 方法2:环境变量传入
docker run -d \
-e CONFIG_JSON='{"cache_time":7200,"api_site":{...}}' \
-p 3000:3000 \
ghcr.io/katelya77/katelyatv:latest
```
**Vercel 部署**
1. 将配置内容复制到仓库的 `config.json` 文件中
2. 提交并推送到 GitHub
3. Vercel 会自动重新部署
**Cloudflare Pages**
1. 编辑仓库的 `config.json` 文件
2. 推送更改触发自动部署
3. 或在管理员界面 `/admin` 上传配置
**管理员界面配置**
1. 访问 `https://你的域名/admin`
2. 使用管理员账号登录
3. 在「配置管理」中导入或编辑 JSON 配置
4. 实时生效,无需重启
#### 手动配置格式
```json
{
"cache_time": 7200,
"api_site": {
"resource1": {
"api": "https://api.example1.com/provide/vod",
"name": "优质资源站1",
"detail": "https://example1.com",
"type": 1,
"playMode": "parse"
},
"resource2": {
"api": "https://api.example2.com/provide/vod",
"name": "高清资源站2",
"detail": "https://example2.com",
"type": 2,
"playMode": "direct"
}
}
}
```
**字段说明**
- `cache_time`:缓存时间(秒)
- `api`:资源站 API 接口地址
- `name`:资源站显示名称
- `detail`:资源站主页地址
- `type`:资源类型(1=电影电视,2=直播等)
- `playMode`:播放模式(parse=解析播放,direct=直接播放)
---
## 📱 高级功能使用指南
### 🎯 跳过片头片尾
**功能介绍**
- 自动识别并跳过片头片尾
- 支持手动设置跳过时间点
- 多设备同步跳过记录(需配置数据库)
**使用方法**
1. 播放视频时点击「设置」按钮
2. 选择「跳过片段设置」
3. 设置片头结束时间和片尾开始时间
4. 下次播放自动跳过
**批量设置**
```json
// 在管理员界面批量导入跳过配置
{
"skip_settings": {
"电视剧名称": {
"intro_end": 90, // 片头结束时间(秒)
"outro_start": 2700 // 片尾开始时间(秒)
}
}
}
```
### 📺 TVBox 兼容模式
**配置地址生成**
- JSON 格式:`https://你的域名/api/tvbox?format=json`
- TXT 格式:`https://你的域名/api/tvbox?format=txt`
- XML 格式:`https://你的域名/api/tvbox?format=xml`
**支持的 TVBox 应用**
- TVBox(开源版)
- CatVodTVOfficial
- EasyBox
- FongMi TV
- 其他兼容应用
**配置导入步骤**
1. 打开 TVBox 应用
2. 进入「配置」或「设置」页面
3. 选择「导入配置」或「添加配置」
4. 输入上述配置地址
5. 等待导入完成
### 🔄 多设备数据同步
**支持的数据**
- 观看历史记录
- 收藏夹内容
- 跳过片段设置
- 用户偏好配置
**同步方式对比**
| 存储方式 | 同步范围 | 配置难度 | 免费程度 |
|----------|----------|----------|----------|
| LocalStorage | 单设备 | 无需配置 | 完全免费 |
| Redis | 全同步 | 需要服务器 | 自建免费 |
| Upstash | 全同步 | 简单配置 | 有免费额度 |
| D1 | 全同步 | 中等难度 | 完全免费 |
| Kvrocks | 全同步 | 需要部署 | 自建免费 |
### 🎨 界面自定义
**主题切换**
- 支持深色/浅色主题自动切换
- 跟随系统主题设置
- 手动切换并记忆偏好
**界面布局**
- 响应式设计,适配手机/平板/桌面
- 可调节视频播放器大小
- 隐藏/显示侧边栏
- 自定义首页展示内容
**个性化设置**
```json
// 在用户设置中自定义
{
"ui_preferences": {
"theme": "dark", // 主题:dark/light/auto
"layout": "grid", // 布局:grid/list
"items_per_page": 24, // 每页显示数量
"auto_play": true, // 自动播放下一集
"video_quality": "auto", // 默认清晰度
"subtitle_language": "zh-cn" // 字幕语言偏好
}
}
```
### 📊 数据统计分析
**管理员面板功能**
- 访问量统计图表
- 热门内容排行榜
- 用户活跃度分析
- 系统性能监控
**访问数据**
```bash
# 通过管理员界面查看或API获取
GET /api/admin/analytics
{
"daily_visits": 1250,
"total_users": 89,
"popular_content": [
{"title": "热门电影", "views": 456},
{"title": "热播剧集", "views": 321}
]
}
```
- 下载:[configplus.json](https://www.mediafire.com/file/fbpk1mlupxp3u3v/configplus.json/file)
- 重命名为 config.json 使用
1. 下载配置文件:
@@ -296,95 +730,492 @@ wrangler pages deploy
### 升级更新
```bash
# Docker 升级
docker compose pull && docker compose up -d
### 🔄 升级更新
# 查看服务状态
**自动更新检测**
- 网站会自动检测新版本
- 在管理员界面查看更新状态
- 支持一键更新提醒
**手动更新步骤**
**Docker 更新**
```bash
# 停止并更新服务
docker compose pull
docker compose up -d
# 查看运行状态
docker compose ps
# 查看日志
docker compose logs -f
# 查看更新日志
docker compose logs -f katelyatv
```
### 数据备份
**Git 部署更新**
```bash
# Redis 数据备份
docker compose exec redis redis-cli BGSAVE
# 备份当前配置
cp config.json config.json.backup
# 拉取最新代码
git pull origin main
# 安装新依赖
pnpm install
# 重新构建
pnpm run build
# 恢复配置文件
cp config.json.backup config.json
# 重启服务
pm2 restart katelyatv
```
**Vercel/Cloudflare 更新**
- Fork 的仓库会自动接收上游更新提醒
- 在 GitHub 中点击 `Sync fork` 同步更新
- 平台会自动重新部署
### 💾 数据备份与恢复
**备份脚本示例**
```bash
#!/bin/bash
# backup.sh - 完整备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="backups/$DATE"
mkdir -p $BACKUP_DIR
echo "开始备份 KatelyaTV 数据..."
# 备份配置文件
cp config.json $BACKUP_DIR/config.json
echo "✓ 配置文件备份完成"
# 根据存储类型备份数据
if [ -f .env ] && grep -q "REDIS_URL" .env; then
# Redis 数据备份
docker compose exec redis redis-cli --rdb $BACKUP_DIR/dump.rdb
echo "✓ Redis 数据备份完成"
elif [ -f .env ] && grep -q "UPSTASH" .env; then
# Upstash 数据导出
echo "Upstash 数据需手动在控制台导出"
fi
# Kvrocks 数据备份
docker run --rm \
-v katelyatv_kvrocks-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/kvrocks-backup.tar.gz /data
if docker compose ps | grep -q kvrocks; then
docker run --rm \
-v katelyatv_kvrocks-data:/data:ro \
-v $(pwd)/$BACKUP_DIR:/backup \
alpine tar czf /backup/kvrocks-data.tar.gz /data
echo "✓ Kvrocks 数据备份完成"
fi
# 压缩备份文件
tar -czf "katelyatv-backup-$DATE.tar.gz" -C backups $DATE
rm -rf $BACKUP_DIR
echo "✓ 备份完成: katelyatv-backup-$DATE.tar.gz"
```
### 常见问题
**恢复数据**
```bash
#!/bin/bash
# restore.sh - 数据恢复脚本
BACKUP_FILE="$1"
| 问题 | 解决方案 |
| ---------------- | ------------------------------------------- |
| 无法访问 | 检查端口 3000 是否开放 |
| 密码错误 | 检查 PASSWORD 环境变量 |
| Redis 连接失败 | 检查 Redis 容器状态和网络 |
| Kvrocks 认证错误 | 查看 [详细文档](docs/KVROCKS_DEPLOYMENT.md) |
if [ -z "$BACKUP_FILE" ]; then
echo "用法: $0 <backup-file.tar.gz>"
exit 1
fi
echo "恢复数据从: $BACKUP_FILE"
tar -xzf $BACKUP_FILE
# 恢复配置文件
BACKUP_DIR=$(tar -tzf $BACKUP_FILE | head -1 | cut -f1 -d"/")
cp $BACKUP_DIR/config.json ./config.json
# 恢复数据库
if [ -f "$BACKUP_DIR/dump.rdb" ]; then
docker compose exec redis redis-cli FLUSHALL
docker cp $BACKUP_DIR/dump.rdb redis:/data/dump.rdb
docker compose restart redis
fi
echo "✓ 数据恢复完成"
```
### 🔍 故障诊断指南
**常见问题快速排查**
| 问题症状 | 可能原因 | 解决方案 |
|---------|----------|----------|
| 无法访问网站 | 端口未开放/服务未启动 | 检查防火墙和服务状态 |
| 视频无法播放 | 配置文件错误/源失效 | 验证 config.json 格式和源可用性 |
| 登录失败 | 密码错误/环境变量未设置 | 检查 PASSWORD 环境变量 |
| 数据库连接失败 | 连接信息错误/服务未启动 | 验证连接字符串和服务状态 |
| 页面加载缓慢 | 内存不足/缓存失效 | 重启服务或清理缓存 |
**诊断命令**
```bash
# 系统状态检查
docker compose ps
docker compose logs --tail=50
# 网络连通性测试
curl -I http://localhost:3000
wget --spider http://localhost:3000
# 数据库连接测试
# Redis
redis-cli -u $REDIS_URL ping
# 或者
docker compose exec redis redis-cli ping
# 配置文件验证
cat config.json | jq '.'
# 如果没有 jq,可以用 python
python -m json.tool config.json
# 端口占用检查
netstat -tlnp | grep 3000
ss -tlnp | grep 3000
```
### 📊 性能监控与优化
**监控指标**
```bash
# 实时系统监控脚本
#!/bin/bash
# monitor.sh
while true; do
echo "=== $(date) ==="
# Docker 容器状态
echo "容器资源使用:"
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 系统负载
echo -e "\n系统负载:"
uptime
# 磁盘使用
echo -e "\n磁盘使用:"
df -h / | tail -1
# 内存使用
echo -e "\n内存使用:"
free -h | head -2
echo "================================"
sleep 30
done
```
**性能优化建议**
1. **内存优化**
```bash
# Node.js 内存限制
export NODE_OPTIONS="--max-old-space-size=1024"
# Docker 内存限制
docker run --memory=1g --memory-swap=1.5g ...
```
2. **缓存优化**
```json
// config.json 中增加缓存时间
{
"cache_time": 21600, // 6小时缓存
"api_cache_time": 3600 // API缓存1小时
}
```
3. **网络优化**
- 使用 CDN 加速静态资源
- 启用 Gzip/Brotli 压缩
- 配置适当的缓存头
### 🚨 安全加固
**生产环境安全检查清单**
- [ ] 设置强密码策略(至少12位包含特殊字符)
- [ ] 启用 HTTPS(使用 Let's Encrypt 或 Cloudflare
- [ ] 配置防火墙规则(仅开放必要端口)
- [ ] 定期更新系统和依赖包
- [ ] 设置访问日志监控
- [ ] 配置自动备份策略
- [ ] 限制管理员界面访问(IP白名单)
- [ ] 启用 fail2ban 防止暴力破解
**安全配置示例**
```bash
# nginx 配置增强安全性
# /etc/nginx/sites-available/katelyatv
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 配置
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# 安全头
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
# 限制请求大小
client_max_body_size 10M;
# 速率限制
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/m;
location /api/ {
limit_req zone=api burst=5 nodelay;
proxy_pass http://localhost:3000;
}
location /admin {
# 仅允许特定IP访问管理界面
allow 192.168.1.0/24;
deny all;
proxy_pass http://localhost:3000;
}
}
```
---
## 🔒 安全提醒
## 📚 扩展文档
### 强烈建议
### 📖 详细指南
- **设置密码**:避免公开访问,防范法律风险
- **个人使用**:请勿公开分享实例链接
- **遵守法律**:确保使用行为符合当地法规
**部署相关**
- [🐳 Docker 完整部署指南](DOCKER_DEPLOYMENT.md)
- [☁️ Cloudflare Pages 详细配置](CLOUDFLARE_PAGES.md)
- [🚀 Vercel 部署最佳实践](VERCEL_DEPLOYMENT.md)
- [🔧 环境变量完整说明](ENVIRONMENT_VARIABLES.md)
### 免责声明
**功能配置**
- [📺 TVBox 兼容配置指南](docs/TVBOX.md)
- [💾 Kvrocks 高性能部署](docs/KVROCKS.md)
- [🗄️ D1 数据库迁移指南](D1_MIGRATION.md)
- [⚡ Redis 集群配置](REDIS_CLUSTER.md)
- 本项目仅供学习和个人使用
- 请勿用于商业用途或公开服务
- 用户需对使用行为承担法律责任
**故障排除**
- [🔧 Docker 故障排除手册](DOCKER_TROUBLESHOOTING.md)
- [🌐 网络连接问题诊断](NETWORK_TROUBLESHOOTING.md)
- [⚠️ 兼容性问题解决](DEPLOYMENT_COMPATIBILITY.md)
- [🐛 常见错误代码说明](ERROR_CODES.md)
### 🎯 最佳实践
**新手快速上手路径**
1. 选择 Vercel + 基础配置(最简单)
2. 升级到 Vercel + Upstash(支持多用户)
3. 进阶到 Docker 自建(完全控制)
4. 终极配置:Kvrocks 集群(高可用)
**生产环境推荐方案**
- **小型个人站**Vercel + Upstash
- **中型团队使用**Docker + Redis Cluster
- **大型服务**Kubernetes + Kvrocks 集群
- **全球服务**Cloudflare Pages + D1
### 🔗 相关资源
**官方资源**
- [📦 GitHub 仓库](https://github.com/katelya77/KatelyaTV)
- [🐳 Docker Hub](https://hub.docker.com/r/katelya77/katelyatv)
- [📊 GitHub Container Registry](https://github.com/katelya77/KatelyaTV/pkgs/container/katelyatv)
- [📋 版本发布页](https://github.com/katelya77/KatelyaTV/releases)
**社区支持**
- [💬 Discussions 讨论区](https://github.com/katelya77/KatelyaTV/discussions)
- [🐛 Issues 问题反馈](https://github.com/katelya77/KatelyaTV/issues)
- [📖 Wiki 知识库](https://github.com/katelya77/KatelyaTV/wiki)
- [💡 Feature Requests](https://github.com/katelya77/KatelyaTV/issues?q=label%3Aenhancement)
**在线演示**
- [🎬 官方演示站点](https://katelyatv-demo.pages.dev/) (密码: `demo123`)
- [📱 PWA 功能演示](https://katelyatv-pwa.vercel.app/)
- [🎨 主题预览站点](https://katelyatv-themes.pages.dev/)
### 🤝 参与贡献
**贡献方式**
- ⭐ 给项目点 Star
- 🐛 报告 Bug 和问题
- 💡 提出新功能建议
- 📝 完善文档和翻译
- 💻 贡献代码和修复
**开发者指南**
```bash
# 本地开发环境搭建
git clone https://github.com/katelya77/KatelyaTV.git
cd KatelyaTV
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 运行测试
pnpm test
# 构建生产版本
pnpm build
# 代码格式化
pnpm lint --fix
pnpm format
```
---
## 🤝 贡献与支持
## 🔒 安全与合规
### 技术栈
### 🚨 重要提醒
- **前端**Next.js 14, TypeScript, Tailwind CSS
- **播放器**ArtPlayer, HLS.js
- **存储**Redis, Kvrocks, Cloudflare D1, Upstash
- **部署**Docker, Vercel, Cloudflare Pages
**强烈建议**
- ✅ **设置强密码**:避免公开访问,保护个人隐私
- ✅ **个人使用**:请勿公开分享实例链接或商业使用
- ✅ **遵守法律**:确保使用行为符合当地法律法规
- ✅ **版权意识**:尊重内容版权,支持正版
### Star History
**安全配置**
- 启用 HTTPS 加密传输
- 设置访问密码和用户认证
- 配置 IP 访问限制
- 定期更新和安全检查
[![Star History Chart](https://api.star-history.com/svg?repos=katelya77/KatelyaTV&type=Date)](https://star-history.com/#katelya77/KatelyaTV&Date)
### ⚖️ 免责声明
### 支持项目
- 本项目仅供个人学习、研究和合法使用
- 用户需对自己的使用行为承担完全法律责任
- 开发者不对用户的任何违法行为承担责任
- 请确保遵守所在地区的法律法规
如果这个项目对您有帮助,欢迎给个 ⭐ Star!
---
## 🌟 致谢与支持
### 🙏 特别感谢
感谢以下优秀的开源项目和技术社区:
**核心依赖**
- [Next.js](https://nextjs.org/) — 强大的 React 全栈框架
- [ArtPlayer](https://github.com/zhw2590582/ArtPlayer) — 功能丰富的 HTML5 视频播放器
- [Tailwind CSS](https://tailwindcss.com/) — 实用优先的 CSS 框架
- [TypeScript](https://www.typescriptlang.org/) — JavaScript 的超集
**基础设施**
- [Cloudflare](https://cloudflare.com/) — 全球 CDN 和边缘计算
- [Vercel](https://vercel.com/) — 现代化的部署平台
- [Docker](https://docker.com/) — 容器化部署方案
- [Redis](https://redis.io/) — 高性能内存数据库
**项目启发**
- [LibreTV](https://github.com/LibreSpark/LibreTV) — 提供设计理念
- [LunaTV](https://github.com/MoonTechLab/LunaTV) — 项目基础架构
### 💝 支持项目发展
如果 KatelyaTV 对您有帮助,欢迎通过以下方式支持项目:
**免费支持**
- ⭐ [GitHub 点 Star](https://github.com/katelya77/KatelyaTV/stargazers)
- 🍴 [Fork 项目](https://github.com/katelya77/KatelyaTV/fork)
- 💬 [参与讨论](https://github.com/katelya77/KatelyaTV/discussions)
- 📖 [完善文档](https://github.com/katelya77/KatelyaTV/tree/main/docs)
- 🔗 [推荐朋友](https://github.com/katelya77/KatelyaTV)
**赞助支持**
<div align="center">
<img src="public/wechat.jpg" alt="微信支付" width="200">
<img src="public/wechat.jpg" alt="微信赞赏码" width="200">
<br>
<strong>请开发者喝杯咖啡 ☕</strong>
<p><em>您的支持是项目持续发展的动力</em></p>
</div>
**企业赞助**
如果您的企业希望赞助 KatelyaTV 项目,请通过 [GitHub Sponsors](https://github.com/sponsors/katelya77) 或发邮件联系我们。
### 项目统计
[![GitHub stars](https://img.shields.io/github/stars/katelya77/KatelyaTV?style=social)](https://github.com/katelya77/KatelyaTV/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/katelya77/KatelyaTV?style=social)](https://github.com/katelya77/KatelyaTV/network/members)
[![GitHub watchers](https://img.shields.io/github/watchers/katelya77/KatelyaTV?style=social)](https://github.com/katelya77/KatelyaTV/watchers)
[![GitHub release](https://img.shields.io/github/v/release/katelya77/KatelyaTV)](https://github.com/katelya77/KatelyaTV/releases)
[![Docker Pulls](https://img.shields.io/docker/pulls/katelya77/katelyatv)](https://hub.docker.com/r/katelya77/katelyatv)
[![GitHub issues](https://img.shields.io/github/issues/katelya77/KatelyaTV)](https://github.com/katelya77/KatelyaTV/issues)
[![GitHub license](https://img.shields.io/github/license/katelya77/KatelyaTV)](https://github.com/katelya77/KatelyaTV/blob/main/LICENSE)
**Star History**
[![Star History Chart](https://api.star-history.com/svg?repos=katelya77/KatelyaTV&type=Date)](https://star-history.com/#katelya77/KatelyaTV&Date)
---
## 📄 License
## 📄 开源协议
[MIT](LICENSE) © 2025 KatelyaTV & Contributors
本项目基于 **MIT License** 开源协议发布。
## 🙏 致谢
```
MIT License
- [LibreTV](https://github.com/LibreSpark/LibreTV) — 项目启发
- [LunaTV](https://github.com/MoonTechLab/LunaTV) — 原始项目基础
- [ArtPlayer](https://github.com/zhw2590582/ArtPlayer) — 强大的网页视频播放器
- 感谢所有贡献者和支持者
Copyright (c) 2025 KatelyaTV & Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
---
<div align="center">
<p>❤️ Made with love by KatelyaTV Community</p>
<h2>🎉 感谢您选择 KatelyaTV</h2>
<p>
<strong>如果项目对您有帮助,请给个 ⭐ Star 支持一下!</strong>
</p>
<p>
<a href="https://github.com/katelya77/KatelyaTV">🏠 项目首页</a>
<a href="https://github.com/katelya77/KatelyaTV/issues">🐛 问题反馈</a>
<a href="https://github.com/katelya77/KatelyaTV/discussions">💬 讨论交流</a>
<a href="https://github.com/katelya77/KatelyaTV/wiki">📚 使用文档</a>
</p>
<br>
<p>
<em>❤️ Made with love by KatelyaTV Community ❤️</em>
</p>
</div>