很多人都想在家自己弄个影视聚合站,像租个小房子自己装电视一样,听起来既省钱又有面子。
可是每次看到那堆Docker‑Compose、Cloudflare Workers、Next.js的文档,就像打开一本外星语言的说明书——眼花缭乱,根本不知道从哪儿下手。
先说结论:先把MoonTVPlus给装好,再想怎么玩都是浮云
这玩意儿其实就是在原版 MoonTV 基础上加装了外部播放器、视频超分、弹幕、评论抓取等功能。想象一下,原本只能在网页里看电影的普通电视,装了这个插件后,你可以把视频塞进 PotPlayer、VLC 那些熟悉的播放器,还能让画面自动提升清晰度,甚至还能像弹幕屋一样和朋友一起刷弹幕。
下面把“从 0 到有”的全过程,拆成几个小步骤,用日常生活的比喻帮你把每一步都吃透。
一、准备工作:先弄好“钥匙”和“材料”
- 一个 GitHub 账号(相当于去超市买材料的会员卡)。
- 一个 Cloudflare 账号(相当于租房子的中介,帮你把站点放到全世界的高速路口)。
- 如果想要永久保存播放记录,就准备一个 Redis/Upstash/D1 之类的存储服务(相当于给家里装个小柜子,方便以后找东西)。
- 电脑上装好 Git、Node.js(带有
pnpm包管理器)以及 Docker(如果想本地跑的话)。
把这些东西准备好后,就可以进入真正的“装修”阶段了。
二、把项目叉(fork)下来,给它贴上自己的门牌号
在 GitHub 找到 mtvpls/MoonTVPlus,点一下 “Fork”。这一步就像把邻居的老房子买下来,准备重新装修。
以后如果原作者更新功能,只要在自己的仓库点 “Sync fork” 就能把最新的装修材料拉进来。
三、在 Cloudflare Pages 上“一键部署”——像把房子直接搬到云端
- 登录 Cloudflare,点 “Pages → Create project”。
- 选择刚才 Fork 的仓库作为源码。
- 构建命令填:
pnpm install --frozen-lockfile && pnpm run pages:build。 - 把“构建输出目录”改成
.vercel/output/static(这相当于告诉工人们把装修好的家具放在哪个房间)。 - 部署完成后,立刻去 “设置 → Compatibility Flags”,打开
nodejs_compat,这是 Cloudflare 的“电力适配器”,没有它后端脚本跑不动。 - 最关键的一步:在 “环境变量 & Secrets” 里添加
PASSWORD(随便取一个强密码),相当于给门装上锁,防止陌生人随意进来。
保存后点 “Retry Deploy”,等几分钟就能看到自己的域名跑起来了。
四、如果想要“持久保存”,加上 D1 数据库(相当于在客厅装个保险箱)
默认的 Pages 部署只会把数据放在浏览器的本地存储里,关机后就没了。想要跨设备同步,借助 Cloudflare 的 D1 数据库:
- 进入 Cloudflare Dashboard → Storage & Databases → D1,点 “Create Database”。取个名字(比如
moon_tv_db)。 - 在 Pages 项目设置的 “绑定” 里,把这个数据库绑到变量
DB。 - 再在环境变量里添加
NEXT_PUBLIC_STORAGE_TYPE=d1,再填上USERNAME、PASSWORD。 - 重新部署,访问
/admin页面登录(用刚才的用户名密码),可以看到收藏、观看进度已经保存在云端。
如果不想用 D1,Upstash Redis、Kvrocks、普通 Redis 也都行,只是要在环境变量里填对应的 URL 和 Token。
五、功能开箱即用——把生活的“调味料”撒进去
部署成功后,站点本身是一个“空壳”,没有自带的影视源。要想看电影,需要在后台的 config.json 里填入自己的资源接口。这里有两种路径:
- 使用公开的免费 API:在网上能找得到不少免费
vod接口,只要把{"api":"http://xxx.com/api.php/provide/vod","name":"示例资源"}这种格式填进去即可。 - 自建爬虫或转码脚本:如果手头有自己的 M3U8 链接,写一个小脚本返回同样的 JSON 结构,也能让 MoonTVPlus 把它当作资源。
填好后,刷新页面,搜索框里就能一次性搜到所有源了。
六、外部播放器和超分(Anime4K)——把观影体验升到“影院”级别
在影片详情页右上角会出现“打开外部播放器”的按钮,点进去会自动跳转到你预先在环境变量里开启的播放器(比如 PotPlayer)。这相当于把厨房里的菜肴端到客厅的大餐桌上吃,画面更流畅,功能更全。
另外,MoonTVPlus 内置了 WebGPU‑Anime4K 超分技术,你只需要在设置里调到 2×、3× 或 4×,画面就会自动变得更锐利。体验上就像把普通的电视画面装上了 4K 电视的滤镜——虽然不是原生 4K,但已经足够让细节更清晰。
七、弹幕系统和豆瓣评论——把社交的“调味料”撒进去
弹幕功能是通过自带的弹幕 API 实现的。如果想要更丰富的弹幕源,只需要在环境变量里配置 SOURCE_ORDER 或 PLATFORM_ORDER,把常用的弹幕平台排在前面。
豆瓣短评抓取同样是开箱即用的,默认会把豆瓣的高分评论显示在详情页底部,帮助大家快速判断一部电影是否值得点播。
八、常见坑与解决方案(别让小细节毁了好心情)
- WebGPU 不支持:如果浏览器报错说找不到 WebGPU,先把 Chrome/Edge 更新到最新,或者在
chrome://flags里打开 “WebGPU” 开关。 - HTTPS 限制:外部播放器跳转需要 HTTPS,否则会被浏览器拦截。记得在 Cloudflare 把域名强制 HTTPS 打开。
- 弹幕加载慢:把
NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES调大(比如 7200),让弹幕在本地缓存更久,减少每次请求。 - 观影室功能:Vercel/Docker 部署时不支持 WebSocket,想要多人同步观影只能把观影室服务器单独部署在外部(文档里给了链接),再在环境变量里打开
WATCH_ROOM_ENABLED=true。 - 数据库丢数据:使用普通 Redis 时,记得在 Docker‑Compose 里加数据卷,否则容器重启会把记录清空。
九、为什么要把它装在 Cloudflare 而不是本地服务器?
把站点放在 Cloudflare Pages,就像把家搬到了“光速小区”。不需要自己买电、买宽带,甚至连服务器的日常维护都省了。只要一次部署,就可以享受全球 CDN 的 0.1 秒加载。
而且 Cloudflare 的 免费套餐 本身就能满足个人使用的流量需求。只要不把站点公开宣传,就不太会触发 Cloudflare 的防滥用机制。
十、收尾:把你的“小房子”装饰成温馨的“影院”
至此,你已经把 MoonTVPlus 从“空壳子”变成了真正能看电影、追剧、刷弹幕的个人影库。接下来可以尝试:
- 自定义首页 Banner,放上自己喜欢的海报。
- 给每个用户开通账号,让全家人都有自己的观看记录。
- 把
config.json里加上私人影库(OpenList、Emby)路径,随时把本地的硬盘视频导进去。
最重要的是,记得给站点上锁(PASSWORD),别让陌生人随意进来。这样,一个低成本、零维护、随时随地都能追剧的个人影视站就搭建完成啦! 🎉
评论 (0)