
MoonTV播放器搭建分享
前言
MoonTV 是一款开箱即用、跨平台支持的免费影视聚合播放器,集成了多资源站点的搜索与在线播放功能,还支持收藏同步和播放记录,让你随时随地畅享海量影视内容。
本篇文章将重点介绍如何利用 Cloudflare Pages 平台免费部署 MoonTV,借助 Cloudflare 提供的全球 CDN 加速和免费的 D1 数据库存储,实现多账户数据隔离和跨设备同步功能。通过本文,你可以轻松搭建属于自己的私人多端影视站,无需复杂运维,让观影体验更加便捷和安全。
准备工作
在部署前请确保你已经拥有以下条件:
- GitHub 账号,并已 Fork 本项目到自己账户下
- Cloudflare 账号
- 一个 Cloudflare 解析的域名(非必须)
部署流程(Cloudflare Pages)
1. Fork 项目并导入到 Cloudflare Pages
- 打开 GitHub,Fork 项目仓库:https://github.com/senshinya/moontv
- 登录 Cloudflare,进入 Workers & Pages → Pages
- 点击「创建项目」,导入你的 GitHub 仓库
- 配置构建参数如下:
- 构建命令
1
pnpm install --frozen-lockfile && pnpm run pages:build
- 输出目录
1
.vercel/output/static
2. 设置兼容性标志
创建后首次构建,如果失败请先设置兼容性标志。进入 Pages 项目的「设置 → 构建设置」,在兼容性标志中添加:
1 | nodejs_compat |
该标志用于启用 Node.js 兼容层,让项目在 Cloudflare 的运行环境中可以执行 Next.js 服务端逻辑。
3. 添加密钥(PASSWORD)
为避免他人随意访问你的实例,请设置访问密码。在 Pages 设置 → 环境变量 → 「变量和机密」中添加:
- 名称:
PASSWORD
- 类型:机密
- 值:设置你自己的密码,如
myStrongPassword123
保存后重新部署。
可选进阶:绑定 D1 数据库(支持收藏与播放记录同步)
如果你希望支持跨设备播放进度同步和收藏记录,可以绑定 Cloudflare 的 D1 数据库:
- 前往「存储和数据库 → D1」,新建一个数据库(名字随意)
- 打开数据库控制台,执行项目中提供的 D1初始化 SQL
- 回到 Pages 项目,进入设置 → 绑定,添加数据库绑定,变量名填为:
1 | DB |
- 同时新增环境变量:
名称 | 值 |
---|---|
NEXT_PUBLIC_STORAGE_TYPE |
d1 |
USERNAME |
自定义站长用户名 |
PASSWORD |
自定义站长密码 |
- 重试部署,完成后访问
/admin
即可进入后台管理界面。
常见问题与排查
-
构建失败:缺少兼容性标志?
- 请务必设置
nodejs_compat
否则构建会因为环境不兼容失败。
- 请务必设置
-
部署后无法访问或空白页面?
- 检查是否配置正确构建输出目录为
.vercel/output/static
- 检查是否配置正确构建输出目录为
-
密码无效?
- 环境变量建议设为“机密变量”而不是普通文本变量
-
收藏和播放记录不保存?
- 检查是否启用了 D1 支持,并确保数据库初始化成功且绑定正确
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自Eilo's Blog
评论