这里是文章模块栏目内容页
MoonTV 一个开箱即用、跨平台的影视聚合播放器。

🎬 MoonTV 是一个开箱即用、跨平台的影视聚合播放器。基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你随时随地畅享海量免费影视内容。

✨ 功能特性

  • 🔍 多源聚合搜索:内置数十个免费资源站点,一次搜索实时返回全源结果
  • 📄 丰富详情页:完整展示剧集列表、演员、年份、简介等信息
  • ▶️ 流畅在线播放:集成 HLS.js & ArtPlayer
  • ❤️ 收藏与进度同步:支持 Redis/D1 存储,多端同步观看进度
  • 📱 PWA 支持:离线缓存、桌面/主屏安装,提供移动端原生体验
  • 🌗 响应式布局:桌面侧边栏 + 移动底部导航,自适应多端屏幕
  • 🚀 极简部署:一条 Docker 命令或免费部署到 Vercel/Cloudflare
  • 👿 智能去广告:自动跳过视频切片广告(实验性功能)

部署指南

支持 Vercel / Docker / Cloudflare 三种方式

1. Vercel 部署(推荐)

零运维成本,免费额度满足个人使用

  1. Fork 仓库至 GitHub 账户:
    https://github.com/senshinya/MoonTV
  2. 登录 Vercel
    → Add New → Project → 选择 Fork 的仓库
  3. (强烈建议) 在环境变量中添加 PASSWORD
  4. 保持默认设置完成部署
  5. 修改 config.json 后推送至 main 分支自动触发重建

2. Cloudflare 部署

环境变量建议设置为 Secret 类型

基础部署(localstorage)

  1. Fork 仓库至 GitHub 账户
  2. 登录 Cloudflare
    → Workers & Pages → 创建 Pages 项目 → 导入仓库
  3. 配置构建设置:
    pnpm install --frozen-lockfile && pnpm run pages:build
    • 框架预设:None
    • 输出目录:.vercel/output/static
  4. 在设置 → 函数 → 兼容性标志中启用 nodejs_compat
  5. (强烈建议) 添加 PASSWORD 环境变量(Secret类型)

D1 数据库支持

  1. 创建 D1 数据库:
    存储 → D1 → 新建数据库
  2. 初始化数据库:
    -- 在数据库控制台执行以下SQL
    CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, data TEXT);
    CREATE TABLE IF NOT EXISTS storage (id TEXT PRIMARY KEY, data TEXT);
  3. 绑定数据库到 Pages 项目:
    设置 → 绑定 → D1 数据库 → 变量名填 DB
  4. 添加环境变量:
    • NEXT_PUBLIC_STORAGE_TYPE = d1
    • USERNAME(管理员账号)
    • PASSWORD(管理员密码)

3. Docker 部署

适用于服务器/NAS/群晖等场景

# 拉取镜像
docker pull ghcr.io/senshinya/moontv:latest

# 运行容器(后台模式+端口映射)
docker run -d --name moontv \
  -p 3000:3000 \  # 主机端口:容器端口
  -e PASSWORD=your_password \  # 可选安全设置
  ghcr.io/senshinya/moontv:latest

访问 http://服务器IP:3000(需开放防火墙3000端口)