fix: 修正Cloudflare Pages构建配置,简化部署文档,添加Vercel环境变量示例
This commit is contained in:
@@ -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
|
||||
@@ -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 Minify:JS、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 访问限制
|
||||
- 定期更新和安全检查
|
||||
|
||||
[](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) 或发邮件联系我们。
|
||||
|
||||
### � 项目统计
|
||||
|
||||
[](https://github.com/katelya77/KatelyaTV/stargazers)
|
||||
[](https://github.com/katelya77/KatelyaTV/network/members)
|
||||
[](https://github.com/katelya77/KatelyaTV/watchers)
|
||||
|
||||
[](https://github.com/katelya77/KatelyaTV/releases)
|
||||
[](https://hub.docker.com/r/katelya77/katelyatv)
|
||||
[](https://github.com/katelya77/KatelyaTV/issues)
|
||||
[](https://github.com/katelya77/KatelyaTV/blob/main/LICENSE)
|
||||
|
||||
**Star History**:
|
||||
[](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>
|
||||
|
||||
Reference in New Issue
Block a user