Skip to content
/ V0TV Public
forked from lepoyou/888TV

🎬 现代化的自托管影视聚合平台 | 基于 Next.js 14、TypeScript 构建 | 支持多源聚合、智能播放、跨设备同步 | Modern self-hosted video aggregation platform

License

Notifications You must be signed in to change notification settings

telagod/V0TV

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

V0TV Logo

V0TV

🎬 现代化的自托管影视聚合平台

Release License Stars Forks

Code Quality Issues Pull Requests

基于 Next.js 14 · TypeScript · Tailwind CSS 构建

特性快速开始部署配置开发文档


📖 简介

V0TV 是一个现代化的自托管影视聚合平台,支持多源内容聚合、智能播放控制、跨设备数据同步等功能。基于 Next.js 14 构建,提供流畅的用户体验和灵活的部署方式。

🎯 为什么选择 V0TV?

  • 🚀 性能优异 - 基于 Next.js 14 App Router,优化的代码架构
  • 🎨 现代化 UI - 响应式设计,支持浅色/深色主题
  • 🔧 灵活部署 - 支持 Docker、Cloudflare Pages、Vercel 等多种部署方式
  • 🔒 隐私优先 - 完全自托管,数据完全掌控
  • 🌐 多端同步 - 跨设备播放进度、收藏等数据同步
  • 📱 PWA 支持 - 可安装为应用,离线访问

✨ 特性

核心功能

  • 🔍 智能聚合搜索 - 多源影视内容聚合,自动优选最佳播放源
  • 📺 高清播放 - 基于 ArtPlayer 和 HLS.js,支持多种视频格式
  • ⏭️ 智能跳过 - 自定义跳过片头片尾,批量设置
  • 🎯 断点续播 - 自动记录播放进度,跨设备同步
  • ⭐ 收藏管理 - 收藏喜爱的影视,快速访问
  • 🎹 键盘快捷键 - 支持快捷键操作(F 键收藏,Ctrl+方向键切集等)
  • 📱 响应式设计 - 完美适配桌面、平板、手机

技术特性

  • 🎨 主题切换 - 浅色/深色主题自动切换
  • 🔐 用户系统 - 支持多用户,权限管理
  • 💾 多种存储 - 支持 LocalStorage、Redis、Upstash、Cloudflare D1
  • 🚦 智能测速 - 自动测速选择最快播放源
  • 🛡️ 内容过滤 - 可选的成人内容智能过滤
  • 📊 播放历史 - 完整的观看历史记录

🆕 v0.8.0 新特性

  • 完全重构的播放页面 - 代码减少 67%,性能大幅提升
  • 模块化架构 - 13 个独立模块,更易维护和扩展
  • 类型安全 - 完整的 TypeScript 类型系统
  • 修复内存泄漏 - 优化的内存管理
  • 更好的错误处理 - 完善的错误边界和恢复机制

查看完整更新日志 →


🚀 快速开始

前置要求

  • Node.js 18+ 或 Docker
  • (可选)Redis 用于多用户部署

📘 需要更完整的部署矩阵、环境变量说明与脚本,请直接阅读 deploy/README.md

方式一:使用 Docker(推荐)⭐

单容器部署(适合个人使用)

# 克隆仓库
git clone https://github.com/telagod/V0TV.git
cd V0TV

# 使用部署脚本
cd deploy/docker
chmod +x deploy-single.sh
./deploy-single.sh

访问 http://localhost:3000

Docker Compose + Redis(适合多用户)

cd deploy/docker
chmod +x deploy-redis.sh
./deploy-redis.sh

查看 Docker 详细教程 →


方式二:Cloudflare Pages / Workers(免费托管)✨

  • 适合零成本 + 全球访问量的场景
  • 支持 Cloudflare Pages Functions 或 Workers + D1
  • 推荐流程:
    1. Fork 或导入 https://github.com/telagod/V0TV
    2. Cloudflare Pages 构建命令:pnpm install && pnpm pages:build,产物目录 .open-next
    3. 在 Pages Secrets 中配置 PASSWORDNEXT_PUBLIC_STORAGE_TYPE=d1 以及 D1/Upstash 凭据
    4. 需要全自动脚本时执行 bash scripts/auto-deploy.sh(创建 D1、配置变量、部署一次搞定)
    5. GitHub Actions / 手动部署的完整说明见 deploy/cloudflare/README.md

查看 Cloudflare 详细教程 →


方式三:Vercel 一键部署

Deploy with Vercel

查看 Vercel 详细教程 →


方式四:Railway 部署

Deploy on Railway

查看 Railway 详细教程 →


方式五:VPS 服务器

# 一键安装脚本
curl -fsSL https://raw.githubusercontent.com/telagod/V0TV/main/deploy/vps/install.sh | bash

查看 VPS 详细教程 →


📋 部署方式对比

部署方式 难度 成本 性能 推荐场景
Docker 单容器 免费* ⚡⚡⚡ 个人使用,快速部署
Docker + Redis ⭐⭐ 免费* ⚡⚡⚡⚡ 多用户,需要数据同步
Cloudflare Pages/Workers 免费 ⚡⚡⚡⚡⚡ 全球访问,CDN 加速,自动扩展
Vercel 免费 ⚡⚡⚡ 快速部署,简单管理
Railway 付费 ⚡⚡⚡⚡ 托管服务,简单管理
VPS ⭐⭐⭐ 付费 ⚡⚡⚡⚡⚡ 完全控制,自定义配置

*需要自己的服务器或本地运行

Cloudflare 部署亮点:

  • ✅ 一键自动部署脚本 - 零配置
  • ✅ D1 数据库自动创建 - 无需手动操作
  • ✅ 随机密码自动生成 - 更安全
  • ✅ 多用户和管理面板 - 开箱即用

查看详细对比和选择建议 →


⚙️ 配置

环境变量

创建 .env 文件:

# 必填:访问密码
PASSWORD=your_secure_password

# 可选:管理员用户名(多用户部署必填)
USERNAME=admin

# 可选:存储类型(默认:localStorage)
NEXT_PUBLIC_STORAGE_TYPE=redis  # redis | upstash | d1 | localStorage

# 可选:用户注册开关(默认:false)
NEXT_PUBLIC_ENABLE_REGISTER=false

# Redis 配置(使用 Redis 存储时必填)
REDIS_URL=redis://localhost:6379

# Upstash 配置(使用 Upstash 存储时必填)
UPSTASH_URL=https://xxx.upstash.io
UPSTASH_TOKEN=AX_xxx

# Cloudflare D1 配置(使用 D1 存储时必填)
# 通过 wrangler.toml 配置

视频源配置

编辑 config.json 文件:

{
  "cache_time": 7200,
  "api_site": {
    "site1": {
      "api": "https://api.example.com/provide/vod",
      "name": "资源站名称",
      "is_adult": false
    },
    "site2": {
      "api": "https://api2.example.com/provide/vod",
      "name": "备用资源站",
      "is_adult": false
    }
  }
}

配置方式

  • Docker: 挂载配置文件 -v ./config.json:/app/config.json:ro
  • Vercel/Cloudflare: 提交到仓库根目录
  • 管理员界面: 访问 /admin 上传配置

查看配置详细说明 →


🛠️ 开发

本地开发环境

# 克隆仓库
git clone https://github.com/telagod/V0TV.git
cd V0TV

# 安装依赖(推荐使用 pnpm)
pnpm install

# 启动开发服务器
pnpm dev

# 浏览器访问
open http://localhost:3000

项目结构

V0TV/
├── src/
│   ├── app/              # Next.js App Router 页面
│   │   ├── play/         # 播放页面(v0.8.0 重构)
│   │   │   ├── components/   # UI 组件
│   │   │   ├── hooks/        # 自定义 Hooks
│   │   │   ├── types/        # TypeScript 类型
│   │   │   └── utils/        # 工具函数
│   │   ├── admin/        # 管理页面
│   │   └── api/          # API 路由
│   ├── components/       # 全局组件
│   ├── lib/              # 工具库
│   └── styles/           # 样式文件
├── public/               # 静态资源
├── deploy/               # 部署配置
├── docs/                 # 文档
└── config.json           # 视频源配置

技术栈

代码规范

# 代码检查
pnpm lint

# 代码格式化
pnpm format

# 类型检查
pnpm typecheck

# 构建
pnpm build

贡献指南

我们欢迎任何形式的贡献!

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

请确保:

  • 代码符合项目规范(运行 pnpm lint
  • 添加必要的测试
  • 更新相关文档

查看详细贡献指南 →


📚 文档

用户文档

开发文档

归档文档


🔧 故障排除

常见问题

❓ 无法登录
# 检查环境变量
echo $PASSWORD

# Docker 重启服务
docker compose restart

# 查看日志
docker compose logs -f
❓ 视频无法播放
  1. 检查 config.json 格式是否正确
  2. 验证视频源 API 是否可用
  3. 查看浏览器控制台错误信息
  4. 尝试切换其他播放源
❓ 数据库连接失败
# 测试 Redis 连接
redis-cli -u $REDIS_URL ping

# 检查容器状态
docker compose ps

# 查看 Redis 日志
docker compose logs redis
❓ 构建失败
# 清理依赖重新安装
rm -rf node_modules .next
pnpm install

# 清理缓存
pnpm store prune

# 重新构建
pnpm build

查看更多故障排除方案 →


🗺️ 路线图

v0.8.x(当前版本)

  • 播放页面完全重构
  • 模块化架构
  • 完整的 TypeScript 类型系统
  • 单元测试覆盖
  • E2E 测试

v0.9.0(计划中)

  • 播放列表功能
  • 播放器插件系统
  • 自定义主题支持
  • 社交分享功能
  • 多语言支持(i18n)

v1.0.0(未来)

  • 移动端原生应用
  • 字幕同步功能
  • 观看统计和推荐
  • 完整的 API 文档
  • 插件市场

查看详细路线图 →


🤝 贡献者

感谢所有为本项目做出贡献的开发者!


📄 许可证

本项目基于 MIT License 开源。


🙏 致谢

本项目站在巨人的肩膀上:

以及所有开源社区的贡献者们!❤️


📞 联系方式


⚠️ 免责声明

本项目仅供学习交流使用,请勿用于商业用途。使用本项目观看的视频内容版权归原作者所有,请支持正版。


如果这个项目对你有帮助,请给个 ⭐Star 支持一下!

Made with ❤️ by telagod

⬆ 回到顶部

About

🎬 现代化的自托管影视聚合平台 | 基于 Next.js 14、TypeScript 构建 | 支持多源聚合、智能播放、跨设备同步 | Modern self-hosted video aggregation platform

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 83.8%
  • JavaScript 6.9%
  • Shell 4.5%
  • CSS 4.5%
  • Dockerfile 0.3%