ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

一步步免费部署 LunaTV 影视聚合播放器:Zeabur 平台完整指南

一步步免费部署 LunaTV 影视聚合播放器:Zeabur 平台完整指南 一步步免费部署 LunaTV 影视聚合播放器Zeabur 平台完整指南【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTVLunaTV 是一个开源的影视聚合播放器一次搜索聚合多个资源站的结果支持在线播放、收藏与播放记录多端同步、继续观看还能自定义分类和站点公告。把这套功能完整地跑在自己手里其实不需要买服务器、不需要装 Docker——Zeabur 这类云端平台用现成的 Docker 镜像就能搞定免费额度足够个人使用。这篇文章按实际部署顺序走一遍先看清楚部署完长什么样再解释平台上要建哪两个服务然后是环境变量怎么填、域名怎么绑最后讲配置文件怎么补、镜像怎么更新以及几个最容易踩的坑。部署完成后的样子先有个预期。服务起来之后首页左侧是功能侧边栏首页、搜索、日历、直播、收藏内容区上方是继续观看横排下面接热门电影等分类栏目点进某部剧集右侧会出现换源面板可以按清晰度720p / 1080p / 4K、码率和延迟在不同资源源之间切换需要说明一点LunaTV 官方仅支持 Docker 或基于 Docker 的平台部署见 README.md 的部署章节Zeabur 正好属于后者而且它直接拉取预构建镜像运行不用等现场构建速度很快。动手前的准备清单开始前确认三样东西一个 Zeabur 账户免费注册即可一个自己想好的管理员账号和密码——后面要以环境变量形式提交密码建议设强一点如果打算先本地熟悉代码可把仓库克隆下来git clone https://gitcode.com/gh_mirrors/lu/LunaTV。直接走平台部署则连这一步都可以省掉。架构上只记住一句话两个服务一个跑应用一个存数据。应用层是 LunaTV 本身数据层用 Kvrocks 存收藏和播放记录。顺序不能反先建数据库服务。第一步添加 Kvrocks 数据库服务并挂载持久化卷在 Zeabur 控制台点 Add Service选 Docker Images镜像填apache/kvrocks端口开6666TCP。建好之后做两件事一是记住这个服务的名称平台一般自动取为类似apachekvrocks的名字。后面 LunaTV 连接它时主机名就填这个服务名。二是挂一个持久化卷在服务设置的 Volumes 里点 Add VolumeVolume ID 起个名字只允许字母、数字、连字符Path 必须填/var/lib/kvrocks/db。这一步很容易被跳过但跳过的代价是容器一重启收藏和播放记录全部清零——卷只持久化数据库文件目录配置文件仍留在容器内这是官方推荐的做法。第二步添加 LunaTV 服务并填写环境变量回到 Add Service Docker Images镜像填ghcr.io/moontechlab/lunatv:latest端口开3000HTTP。两个服务必须放在同一个 Project 里这样它们才能通过服务名互相访问。然后在 LunaTV 服务的环境变量里填配置。必填的四项决定服务能不能跑起来变量作用示例值USERNAME站长管理员账号adminPASSWORD站长密码务必设强密码自行设置NEXT_PUBLIC_STORAGE_TYPE存储方式kvrocksKVROCKS_URL数据库连接地址redis://apachekvrocks:6666注意KVROCKS_URL的主机名是第一步那个服务的名称不是 localhost也不是 127.0.0.1。以下几项都是可选的按需加上SITE_BASE站点完整地址填你最终的域名、NEXT_PUBLIC_SITE_NAME站点名称默认 MoonTV、ANNOUNCEMENT首页公告以及豆瓣数据的代理方式NEXT_PUBLIC_DOUBAN_PROXY_TYPE和图片代理NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE——在 Zeabur 上推荐填社区 CDN 代理如cmliussss-cdn-tencent可以明显减少豆瓣数据加载失败的情况。填完保存Zeabur 会自动拉镜像、启动服务。到这里应用已经能跑了但还访问不了。第三步绑定域名把站点放出去Zeabur 部署完成后不会自动给出可访问的地址必须手动处理进入 LunaTV 服务的 Networking网络标签点 Generate Domain 生成一个免费的xxx.zeabur.app域名就能在浏览器里打开了想用自己的域名就点 Add Domain按提示把 DNS 的 CNAME 记录指到 Zeabur 给的目标地址。Zeabur 会自动配好 HTTPS不需要你碰证书。仓库里三个关键文件在干什么部署过程虽然是黑盒但值得花两分钟知道平台背后替你执行了什么排错时会用得上Dockerfile三段式构建——先在node:20-alpine里用 pnpm 装依赖再跑pnpm run build出生产构建最后只把 Next.js 的 standalone 产物拷进运行镜像并以非 root 用户启动监听 3000 端口。next.config.js核心是output: standalone正是它让 Dockerfile 只拷一小部分文件就能跑起来同时接入了 next-pwa提供离线缓存和安装到主屏的能力。start.js真正的启动入口。它先调用 scripts/generate-manifest.js 生成 PWA 清单再启动服务然后每秒轮询登录页做健康检查确认服务就绪后立刻执行一次 /api/cron 定时任务之后每小时跑一次。另外 package.json 里的脚本定义了构建流程gen:manifestnext build。如果你走的是从代码仓库导入而非直接用镜像的路线Zeabur 会自动识别这是 Node.js 项目并配置构建启动命令对应next start。补齐空壳在管理后台填播放源配置部署完成的应用是个空壳没有内置播放源和直播源搜不出东西。登录管理后台用你设的USERNAME/PASSWORD在配置文件设置里填入一份符合苹果 CMS V10 API 格式的 JSONcache_time是接口缓存秒数api_site下每个站点需要一个唯一小写的key、资源站的vodJSON API 地址api、展示名name个别站点取不到剧集详情时还要补网页详情地址detailcustom_category则用来在导航里加个性化分类以typemovie/tv加query搜索关键词作为标识。支持哪些分类名见 README.md 的配置文件一节。配置文件还有一层用法整份配置做 base58 编码后挂一个 HTTP 地址就是一个订阅链接可以在后台直接导入方便多实例或客户端同步同一套源。更新机制镜像不会自己变新Zeabur 对latest标签的镜像不会自动拉新版需要手动触发进入对应服务页面在服务状态下点重启当前版本平台会重新拉取最新镜像并部署。如果你是在意稳定性的场景把镜像标签从latest换成固定版本号如v5.5.6可以彻底避免意外更新代价是每次升级都要手改标签。数据服务Kvrocks一般不需要跟着动。常见坑速查现象原因与处理部署成功但打不开页面忘了在 Networking 里生成/绑定域名这是必经步骤不是可选项登录页能开但收藏、记录存不住检查KVROCKS_URL主机名必须是服务名端口6666协议前缀redis://重启后收藏和记录清空Kvrocks 卷路径没填对必须精确是/var/lib/kvrocks/db搜索无结果或豆瓣海报/评分缺失调整豆瓣代理类型NEXT_PUBLIC_DOUBAN_PROXY_TYPE和图片代理类型或自行配置自定义代理 URL搜索翻页太浅或太深用NEXT_PUBLIC_SEARCH_MAX_PAGE1–50默认 5控制可拉取的最大页数最后检查一遍两个服务同项目Kvrocks6666 端口 持久化卷在前LunaTV3000 端口 四个必填环境变量在后域名在 Networking 里生成或绑定HTTPS 自动生效管理后台补好api_site配置站点才真正能用升级时手动重启当前版本生产环境建议固定镜像版本。按这个顺序做完一个带收藏同步、继续观看和多源切换的个人影视站就完整跑起来了。下一步可以看看环境变量表里没展开的搜索流式输出NEXT_PUBLIC_FLUID_SEARCH和内容过滤开关按需调整体验。【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进