跨平台 · 聚合搜索 · 即开即用 · 自托管影视聚合播放器
基于 Next.js 14 · TypeScript · Tailwind CSS · 多源聚合 / 播放记录 / 收藏同步 / 跳过片头片尾 / PWA
本项目自「MoonTV」演进而来,为其二创/继承版本,持续维护与改进功能与体验。保留并致谢原作者与社区贡献者。
🔔 重要变更:应用户社区建议,为确保项目长期稳定运行和合规性,内置视频源已移除。现需要用户自行配置资源站以使用完整功能。我们提供了经过测试的推荐配置文件,让您快速上手使用。
- 🔍 聚合搜索:整合多个影视资源站,一键搜索全网内容
- 📺 高清播放:基于 ArtPlayer 的强大播放器,支持多种格式
- ⏭️ 智能跳过:自动检测并跳过片头片尾,手动设置跳过时间段
- 🎯 断点续播:自动记录播放进度,跨设备同步观看位置
- 📱 响应式设计:完美适配手机、平板、电脑各种屏幕
- ⭐ 收藏功能:收藏喜欢的影视作品,支持跨设备同步
- 📖 播放历史:自动记录观看历史,快速找回看过的内容
- 👥 多用户支持:独立的用户系统,每个用户独享个人数据
- 🔄 数据同步:支持多种存储后端(LocalStorage、Redis、D1、Upstash)
- 🐳 Docker 一键部署:提供完整的 Docker 镜像,开箱即用
- ☁️ 多平台支持:Vercel、Docker、Cloudflare Pages 全兼容
- 🔧 灵活配置:支持自定义资源站、代理设置、主题配置
- 📱 PWA 支持:可安装为桌面/手机应用
- 📺 TVBox 兼容:支持 TVBox 配置接口
| 用户类型 | 推荐方案 | 特点 |
|---|---|---|
| 🆕 新手用户 | Docker 单容器 | 最简单,5 分钟部署 |
| 👥 多人使用 | Vercel + Upstash | 免费,支持多用户 |
| 🏠 自托管 | Docker + Redis | 功能完整,数据可控 |
| 🏢 生产环境 | Docker + Kvrocks | 高可靠性,零丢失风险 |
适合场景:个人使用,最简单的部署方式
# 一键启动
docker run -d \
--name katelyatv \
-p 3000:3000 \
--env PASSWORD=your_password \
--restart unless-stopped \
ghcr.io/katelya77/katelyatv:latest
# 访问 http://localhost:3000自定义配置文件(可选):
# 挂载配置文件
docker run -d \
--name katelyatv \
-p 3000:3000 \
--env PASSWORD=your_password \
-v ./config.json:/app/config.json:ro \
--restart unless-stopped \
ghcr.io/katelya77/katelyatv:latest适合场景:家庭/团队使用,支持多用户和数据同步
# 下载配置文件
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/docker-compose.redis.yml
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/.env.redis.example
cp .env.redis.example .env
# 编辑环境变量
nano .env
# 启动服务
docker compose -f docker-compose.redis.yml up -d重要环境变量配置:
# 存储类型
NEXT_PUBLIC_STORAGE_TYPE=redis
# 管理员账号
USERNAME=admin
PASSWORD=your_admin_password
# Redis配置
REDIS_URL=redis://katelyatv-redis:6379
# 开启用户注册
NEXT_PUBLIC_ENABLE_REGISTER=true适合场景:生产环境,需要极高的数据可靠性
# 下载配置文件
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/docker-compose.kvrocks.yml
curl -O https://raw.githubusercontent.com/katelya77/KatelyaTV/main/.env.kvrocks.example
cp .env.kvrocks.example .env
# 编辑环境变量
nano .env
# 启动服务(无密码版本)
docker compose -f docker-compose.kvrocks.yml up -d
# 如需密码认证版本,使用:
# docker compose -f docker-compose.kvrocks.auth.yml up -d重要环境变量配置:
# 存储类型
NEXT_PUBLIC_STORAGE_TYPE=kvrocks
# 管理员账号(必填)
USERNAME=admin
PASSWORD=your_admin_password
# Kvrocks配置
KVROCKS_URL=redis://kvrocks:6666
# 密码配置(可选)
# KVROCKS_PASSWORD=your_kvrocks_password
# 开启用户注册
NEXT_PUBLIC_ENABLE_REGISTER=trueKvrocks 优势:
- 🛡️ 极高可靠性:基于 RocksDB,数据持久化到磁盘
- ⚡ 性能优异:完全兼容 Redis 协议,性能更佳
- 💾 节省内存:数据存储在磁盘,内存使用量大幅降低
详细部署指南请查看:Kvrocks 部署文档
适合场景:无服务器,免费部署,支持多用户
-
Fork 仓库:
- 访问 KatelyaTV
- 点击右上角
Fork按钮,将项目 Fork 到你的 GitHub 账号
-
部署到 Vercel:
- 登录 Vercel(推荐使用 GitHub 账号登录)
- 点击
New Project,选择刚才 Fork 的KatelyaTV仓库 - 在
Environment Variables部分添加:PASSWORD=your_password - 点击
Deploy开始部署 - 等待 2-3 分钟部署完成,获得访问链接
-
创建 Upstash Redis 数据库:
- 访问 Upstash,使用 GitHub 账号登录
- 点击
Create Database,选择免费的区域(推荐选择离你最近的区域) - 记录数据库的
UPSTASH_REDIS_REST_URL和UPSTASH_REDIS_REST_TOKEN
-
在 Vercel 中添加环境变量:
- 进入 Vercel 项目设置页面
- 在
Environment Variables添加以下变量:
# 存储配置 NEXT_PUBLIC_STORAGE_TYPE=upstash 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=高性能影视播放平台
-
重新部署:
- 在 Vercel 项目页面点击
Deployments标签 - 点击最新部署旁的三点菜单,选择
Redeploy
- 在 Vercel 项目页面点击
适合场景:全球访问,免费 CDN,无限带宽,支持多用户
-
准备代码仓库:
- Fork KatelyaTV 到你的 GitHub 账号
-
创建 Cloudflare Pages 项目:
- 登录 Cloudflare Dashboard
- 左侧菜单选择
Workers and Pages→Create application→Pages→Connect to Git
-
连接仓库并配置:
- 选择 Fork 的
KatelyaTV仓库,分支选择main - 构建设置:
Build command: pnpm install --frozen-lockfile && pnpm run pages:build Build output directory: .vercel/output/static - 兼容性标志:添加
nodejs_compat
- 选择 Fork 的
-
环境变量配置:
PASSWORD=your_password #在这设置密码 USERNAME=admin #在这设置管理员用户名 NEXT_PUBLIC_STORAGE_TYPE=d1 NEXT_PUBLIC_ENABLE_REGISTER=true #用户注册功能
-
创建 D1 数据库(多用户支持):
wrangler d1 create katelyatv-db wrangler d1 execute katelyatv-db --file=./scripts/d1-init.sql
在
wrangler.toml中配置数据库 ID
# 安装 CLI 并登录
npm install -g wrangler
wrangler login
# 克隆并部署
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适合场景:GitHub 集成,自动部署,免费额度充足
-
准备仓库:
- Fork KatelyaTV 到你的 GitHub
-
部署到 Netlify:
- 登录 Netlify
- 点击
New site from Git - 选择 GitHub 并授权访问
- 选择 KatelyaTV 仓库
-
配置构建设置:
Build command: pnpm run build Publish directory: .next -
添加环境变量:
- 在站点设置中找到
Environment variables - 添加:
PASSWORD=your_password NEXT_PUBLIC_STORAGE_TYPE=localstorage
- 在站点设置中找到
-
部署完成:
- 获得
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
构建失败:
# 检查 Node.js 版本(需要 18+)
node --version
# 清理缓存重新安装
rm -rf node_modules pnpm-lock.yaml
pnpm install
# 检查环境变量配置
echo $PASSWORD视频播放问题:
- 检查 config.json 格式是否正确
- 确认视频源 API 地址可访问
- 查看浏览器控制台错误信息
数据库连接失败:
# 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 - 优化视频缓存策略
生产环境必配:
# 强密码策略
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 - 监控异常访问日志
定期备份策略:
# 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 或类似服务
日志分析:
# Docker 容器日志
docker logs katelyatv-container -f
# Vercel 函数日志
vercel logs your-project
# Cloudflare 实时日志
wrangler tail --format=pretty| 变量名 | 说明 | 默认值 | 示例值 |
|---|---|---|---|
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 |
颜色配置:
/* 在 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中的图标路径
-
基础版配置:
- 包含 20+ 优质片源
- 下载:config.json
- 适合个人使用
-
增强版配置:
- 包含 94 个精选片源
- 下载:configplus.json
- 重命名为 config.json 使用
Docker 部署:
# 方法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:latestVercel 部署:
- 将配置内容复制到仓库的
config.json文件中 - 提交并推送到 GitHub
- Vercel 会自动重新部署
Cloudflare Pages:
- 编辑仓库的
config.json文件 - 推送更改触发自动部署
- 或在管理员界面
/admin上传配置
管理员界面配置:
- 访问
https://你的域名/admin - 使用管理员账号登录
- 在「配置管理」中导入或编辑 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=直接播放)
功能介绍:
- 自动识别并跳过片头片尾
- 支持手动设置跳过时间点
- 多设备同步跳过记录(需配置数据库)
使用方法:
- 播放视频时点击「设置」按钮
- 选择「跳过片段设置」
- 设置片头结束时间和片尾开始时间
- 下次播放自动跳过
批量设置:
// 在管理员界面批量导入跳过配置
{
"skip_settings": {
"电视剧名称": {
"intro_end": 90, // 片头结束时间(秒)
"outro_start": 2700 // 片尾开始时间(秒)
}
}
}配置地址生成:
- JSON 格式:
https://你的域名/api/tvbox?format=json - TXT 格式:
https://你的域名/api/tvbox?format=txt - XML 格式:
https://你的域名/api/tvbox?format=xml
支持的 TVBox 应用:
- TVBox(开源版)
- CatVodTVOfficial
- EasyBox
- FongMi TV
- 其他兼容应用
配置导入步骤:
- 打开 TVBox 应用
- 进入「配置」或「设置」页面
- 选择「导入配置」或「添加配置」
- 输入上述配置地址
- 等待导入完成
支持的数据:
- 观看历史记录
- 收藏夹内容
- 跳过片段设置
- 用户偏好配置
同步方式对比:
| 存储方式 | 同步范围 | 配置难度 | 免费程度 |
|---|---|---|---|
| LocalStorage | 单设备 | 无需配置 | 完全免费 |
| Redis | 全同步 | 需要服务器 | 自建免费 |
| Upstash | 全同步 | 简单配置 | 有免费额度 |
| D1 | 全同步 | 中等难度 | 完全免费 |
| Kvrocks | 全同步 | 需要部署 | 自建免费 |
主题切换:
- 支持深色/浅色主题自动切换
- 跟随系统主题设置
- 手动切换并记忆偏好
界面布局:
- 响应式设计,适配手机/平板/桌面
- 可调节视频播放器大小
- 隐藏/显示侧边栏
- 自定义首页展示内容
个性化设置:
// 在用户设置中自定义
{
"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" // 字幕语言偏好
}
}管理员面板功能:
- 访问量统计图表
- 热门内容排行榜
- 用户活跃度分析
- 系统性能监控
访问数据:
# 通过管理员界面查看或API获取
GET /api/admin/analytics
{
"daily_visits": 1250,
"total_users": 89,
"popular_content": [
{"title": "热门电影", "views": 456},
{"title": "热播剧集", "views": 321}
]
}- 下载:configplus.json
- 重命名为 config.json 使用
-
下载配置文件:
-
配置方式:
- Docker:挂载配置文件
-v ./config.json:/app/config.json:ro - Vercel:替换仓库中的
config.json文件内容 - 管理员界面:登录后台
/admin导入配置
- Docker:挂载配置文件
编辑 config.json 文件:
{
"cache_time": 7200,
"api_site": {
"example": {
"api": "https://example.com/api.php/provide/vod",
"name": "示例资源站",
"detail": "https://example.com"
}
}
}支持 TVBox 配置接口,可以将视频源导入到各种电视盒子应用:
- 配置地址:
https://your-domain.com/api/tvbox?format=json - 详细说明:查看 TVBox 配置指南
智能跳过片头片尾功能:
- 🎯 自动检测已设置的跳过片段
- ⚙️ 手动设置跳过时间段(精确到秒)
- 🔄 支持多设备同步(需配置 Redis/D1/Upstash)
配合 OrionTV 在 Android TV 上使用:
- 在 OrionTV 中填入 KatelyaTV 部署地址
- 输入设置的 PASSWORD
- 即可在电视上观看
自动更新检测:
- 网站会自动检测新版本
- 在管理员界面查看更新状态
- 支持一键更新提醒
手动更新步骤:
Docker 更新:
# 停止并更新服务
docker compose pull
docker compose up -d
# 查看运行状态
docker compose ps
# 查看更新日志
docker compose logs -f katelyatvGit 部署更新:
# 备份当前配置
cp config.json config.json.backup
# 拉取最新代码
git pull origin main
# 安装新依赖
pnpm install
# 重新构建
pnpm run build
# 恢复配置文件
cp config.json.backup config.json
# 重启服务
pm2 restart katelyatvVercel/Cloudflare 更新:
- Fork 的仓库会自动接收上游更新提醒
- 在 GitHub 中点击
Sync fork同步更新 - 平台会自动重新部署
备份脚本示例:
#!/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 数据备份
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"恢复数据:
#!/bin/bash
# restore.sh - 数据恢复脚本
BACKUP_FILE="$1"
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 环境变量 |
| 数据库连接失败 | 连接信息错误/服务未启动 | 验证连接字符串和服务状态 |
| 页面加载缓慢 | 内存不足/缓存失效 | 重启服务或清理缓存 |
诊断命令:
# 系统状态检查
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监控指标:
# 实时系统监控脚本
#!/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性能优化建议:
-
内存优化:
# Node.js 内存限制 export NODE_OPTIONS="--max-old-space-size=1024" # Docker 内存限制 docker run --memory=1g --memory-swap=1.5g ...
-
缓存优化:
// config.json 中增加缓存时间 { "cache_time": 21600, // 6小时缓存 "api_cache_time": 3600 // API缓存1小时 }
-
网络优化:
- 使用 CDN 加速静态资源
- 启用 Gzip/Brotli 压缩
- 配置适当的缓存头
生产环境安全检查清单:
- 设置强密码策略(至少 12 位包含特殊字符)
- 启用 HTTPS(使用 Let's Encrypt 或 Cloudflare)
- 配置防火墙规则(仅开放必要端口)
- 定期更新系统和依赖包
- 设置访问日志监控
- 配置自动备份策略
- 限制管理员界面访问(IP 白名单)
- 启用 fail2ban 防止暴力破解
安全配置示例:
# 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;
}
}部署相关:
功能配置:
故障排除:
新手快速上手路径:
- 选择 Vercel + 基础配置(最简单)
- 升级到 Vercel + Upstash(支持多用户)
- 进阶到 Docker 自建(完全控制)
- 终极配置:Kvrocks 集群(高可用)
生产环境推荐方案:
- 小型个人站:Vercel + Upstash
- 中型团队使用:Docker + Redis Cluster
- 大型服务:Kubernetes + Kvrocks 集群
- 全球服务:Cloudflare Pages + D1
官方资源:
社区支持:
在线演示:
- 🎬 官方演示站点 (密码:
demo123) - 📱 PWA 功能演示
- 🎨 主题预览站点
贡献方式:
- ⭐ 给项目点 Star
- 🐛 报告 Bug 和问题
- 💡 提出新功能建议
- 📝 完善文档和翻译
- 💻 贡献代码和修复
开发者指南:
# 本地开发环境搭建
git clone https://github.com/katelya77/KatelyaTV.git
cd KatelyaTV
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 运行测试
pnpm test
# 构建生产版本
pnpm build
# 代码格式化
pnpm lint --fix
pnpm format强烈建议:
- ✅ 设置强密码:避免公开访问,保护个人隐私
- ✅ 个人使用:请勿公开分享实例链接或商业使用
- ✅ 遵守法律:确保使用行为符合当地法律法规
- ✅ 版权意识:尊重内容版权,支持正版
安全配置:
- 启用 HTTPS 加密传输
- 设置访问密码和用户认证
- 配置 IP 访问限制
- 定期更新和安全检查
- 本项目仅供个人学习、研究和合法使用
- 用户需对自己的使用行为承担完全法律责任
- 开发者不对用户的任何违法行为承担责任
- 请确保遵守所在地区的法律法规
感谢以下优秀的开源项目和技术社区:
核心依赖:
- Next.js — 强大的 React 全栈框架
- ArtPlayer — 功能丰富的 HTML5 视频播放器
- Tailwind CSS — 实用优先的 CSS 框架
- TypeScript — JavaScript 的超集
基础设施:
- Cloudflare — 全球 CDN 和边缘计算
- Vercel — 现代化的部署平台
- Docker — 容器化部署方案
- Redis — 高性能内存数据库
项目启发:
如果 KatelyaTV 对您有帮助,欢迎通过以下方式支持项目:
免费支持:
- ⭐ GitHub 点 Star
- 🍴 Fork 项目
- 💬 参与讨论
- 📖 完善文档
- 🔗 推荐朋友
赞助支持:
企业赞助: 如果您的企业希望赞助 KatelyaTV 项目,请通过 GitHub Sponsors 或发邮件联系我们。
本项目基于 MIT License 开源协议发布。
MIT License
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.
