MoonCakeTV(月饼TV):一个轻量高效的影视聚合搜索工具

MoonCakeTV(月饼TV)是一款基于现代 Web 技术栈构建的影视资源聚合服务,支持多源搜索与在线播放,专为个人用户打造干净、快速的观影体验。

它不存储任何视频内容,也不代理流量,仅作为前端界面,将浏览器请求直接导向公开资源站点,实现高效检索与播放。

MoonCakeTV(月饼TV):一个轻量高效的影视聚合搜索工具插图

🔧 技术架构

  • 前端框架:Next.js 15(App Router)
  • 样式系统:Tailwind CSS
  • 编程语言:TypeScript
  • 播放核心:HLS.js + Video.js
  • 部署方式:Docker / Vercel / 自建服务器

项目采用静态生成与服务端渲染结合的方式,在保证性能的同时提供良好的交互体验。

🌟 核心功能

🔍 多源聚合搜索

一次性查询数十个公开影视资源站,自动汇总结果,无需逐个切换平台查找。

📄 完整影视详情

每部影片展示:

  • 剧集列表(支持分季)
  • 演员信息
  • 上映年份
  • 内容简介
  • 来源标识

▶️ 浏览器内在线播放

集成 HLS.js 和 Video.js,支持 .m3u8 视频流直接播放,无需额外插件。

所有播放请求由浏览器直连源站,不经过 MoonCakeTV 服务器,降低部署压力。

📱 响应式设计

适配手机、平板、PC 和电视浏览器,大屏小屏皆可用。

🚀 多平台部署支持

支持多种部署方案:

  • 本地运行(开发调试)
  • Docker 部署(自建服务器/NAS)
  • Vercel 托管(免运维,适合轻量使用)

🖥️ 本地开发指南

先决条件

  • Node.js ≥ 18(推荐 v20 或 v22)
  • npm

启动步骤

# 安装依赖
npm install

# 启动开发服务器(默认端口 3333)
npm run dev

访问地址:http://localhost:3333

🐳 Docker 部署(推荐用于生产环境)

适用于群晖 NAS、家用服务器、VPS 等场景。

第一步:配置密码保护 ✅

为防止未授权访问,请在项目根目录创建 .env 文件:

PASSWORD_MODE=env
MY_PASSWORD=your_secure_password

PASSWORD_MODE 可选值:

  • local:无密码(仅限本地测试)
  • env:使用 MY_PASSWORD 设置口令(推荐)
  • db:预留扩展(暂未启用)

第二步:拉取官方镜像(推荐)

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

# 运行容器(映射端口 3333 → 3000)
docker run -d \
  --name mooncaketv \
  --env-file .env \
  -p 3333:3000 \
  ghcr.io/mooncaketv/mooncaketv:latest

自定义构建(可选)

通过 Makefile 构建:

make d-build    # 构建镜像
make d-run      # 运行容器

或使用 Docker CLI:

docker build -t mooncaketv .
docker run -d --name mooncaketv --env-file .env -p 3333:3000 mooncaketv

☁️ Vercel 部署(零服务器管理)

适合希望快速上线、无需维护服务器的用户。

部署流程

  1. Fork 本仓库到你的 GitHub 账户
  2. 登录 Vercel,点击 “Add New Project”,选择 Fork 的仓库
  3. 在项目设置 → Environment Variables 中添加:PASSWORD_MODE=env MY_PASSWORD=your_secure_password
  4. 保持默认构建配置,完成部署

部署成功后可通过 Vercel 分配域名访问,也可绑定自定义域名。

💡 提示:播放走浏览器直连源站,不消耗 Vercel 函数带宽,免费额度足够个人使用。

🔒 安全与隐私提醒

由于该项目涉及公开视频资源检索,存在潜在法律与安全风险,请务必注意以下事项:

✅ 必须设置密码保护

  • 防止实例被公开扫描利用
  • 避免成为他人侵权行为的跳板

✅ 启用 HTTPS 访问(重要!)

  • 若部署在公网服务器,必须通过反向代理(Nginx/Caddy/Traefik)配置 HTTPS
  • 因 Cookie 启用 Secure 属性,HTTP 环境下无法保存登录状态,会导致反复跳转

❌ 禁止公开分享链接

  • 不要将部署后的地址发布至论坛、社交媒体或 Telegram 群组
  • 公开传播可能引发版权投诉或 IP 封禁

📌 仅限个人学习使用,不得用于商业目的

⚙️ 环境变量说明

变量名说明
PASSWORD_MODE访问控制模式:local(无密码)、env(环境变量口令)
MY_PASSWORD当 PASSWORD_MODE=env 时必填,用于登录验证

❓ 常见问题 FAQ

Q:页面打不开或登录后不断跳转?

A:检查是否设置了正确的 .env 文件;清理浏览器 Cookie 后重试。若使用 HTTP 访问,请改为 HTTPS。

Q:Docker 启动后无法访问?

A:确认命令中包含 -p 3333:3000,并尝试访问 http://localhost:3333(宿主机 IP 替换 localhost)。

Q:Vercel 部署安全吗?会不会产生费用?

A:播放请求由浏览器直连源站,不经过 Vercel 服务器,不消耗函数调用和带宽。只要不触发滥用机制,免费额度完全够用。

评论