自建影视聚合播放器:LunaTV Docker 部署与播放源配置完整实战指南

发布时间:2026/10/6 22:24:49

自建影视聚合播放器:LunaTV Docker 部署与播放源配置完整实战指南 自建影视聚合播放器LunaTV Docker 部署与播放源配置完整实战指南【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTVLunaTV 是一个基于 Next.js 14 构建的开源影视聚合播放器支持多资源站聚合搜索、在线播放、收藏与播放记录跨端同步。本文带你在一台装有 Docker 的服务器上完成部署并讲清楚启动之后最关键的播放源配置10 分钟内你就能拥有一个可以正常看片、能记住进度的个人影视站。部署后你得到什么LunaTV 的七项主要能力先花一分钟了解装好之后的使用体验这样后面配置时就知道每个环节的意义。LunaTV 首页会展示继续观看和热门内容推荐配合分类导航快速定位片源搜索结果来自你配置的全部资源站一次输入即可跨站聚合。详情页提供剧集列表、演员、年份、简介等完整信息播放端由 ArtPlayer 与 HLS.js 驱动支持流媒体在浏览器里直接播放。收藏、播放记录存在服务端存储里换设备登录也能接着上次的位置看。其余能力包括PWA 离线缓存与安装到桌面/主屏桌面侧边栏加移动底部导航的响应式布局实验性的切片广告自动跳过以及一个常被忽略的直播模块可以配置直播源和 EPG 节目单。v100.0.0 以上的版本还能配合移动端客户端 Selene 使用数据完全同步在 Android TV 上也可以把它当作 OrionTV 的后端播放记录同样与网页端互通。部署前准备只需要 Docker 和一个空闲端口LunaTV 官方仅支持 Docker 及基于 Docker 的平台部署没有裸机 Node.js 的玩法这省去了装依赖、编译源码的环节。机器上需要安装 Docker 和 Docker Compose并且能访问镜像仓库拉取镜像。资源方面1GB 左右的内存和 10GB 磁盘就足够个人使用了。唯一必须让出来的是本机3000 端口——服务默认监听容器内的 3000 端口compose 文件会把它映射到宿主机。如果你的 3000 已被占用改一下映射的左边部分比如8080:3000之后用 8080 访问即可容器内端口不用动。三步完成部署写一份 compose 文件就够整个部署就是写文件 → 启动 → 打开浏览器三步。下面这份docker-compose.yml采用官方推荐的 Kvrocks 存储方案两个服务、一个网络、一个数据卷照抄后按需改两处密码即可services: moontv-core: image: ghcr.io/moontechlab/lunatv:latest container_name: moontv-core restart: on-failure ports: - 3000:3000 environment: - USERNAMEadmin - PASSWORD请改成一个强密码 - NEXT_PUBLIC_STORAGE_TYPEkvrocks - KVROCKS_URLredis://moontv-kvrocks:6666 networks: [moontv-network] depends_on: [moontv-kvrocks] moontv-kvrocks: image: apache/kvrocks container_name: moontv-kvrocks restart: unless-stopped volumes: [kvrocks-data:/var/lib/kvrocks] networks: [moontv-network] networks: moontv-network: driver: bridge volumes: kvrocks-data:几个字段的填写逻辑moontv-core是应用本体USERNAME/PASSWORD是登录管理后台用的站长账号必填密码务必换成强密码且不要公开分享实例地址NEXT_PUBLIC_STORAGE_TYPE指定收藏与播放记录存放的存储后端本例选了kvrocksKVROCKS_URL指向同网络里的 Kvrocks 容器主机名直接用服务名moontv-kvrocks端口 6666 是 Kvrocks 的默认端口。Kvrocks 是 Redis 协议的兼容存储apache/kvrocks是官方镜像把数据目录/var/lib/kvrocks挂到命名卷kvrocks-data后容器删了数据也不会丢。在文件所在目录执行docker-compose up -d等待镜像拉取和容器启动浏览器打开http://localhost:3000远程机器则换成对应 IP就能看到登录页。管理后台配置播放源为什么装完的站点没有片源这一点必须提前说明部署完成后 LunaTV 是一个空壳没有内置播放源和直播源需要站长自己收集并填进后台这也是全文最容易卡住的一步。登录后台后进入配置文件设置对应源码见 src/app/admin/page.tsxLunaTV 接受标准苹果 CMS V10 格式的接口把配置以 JSON 形式粘贴保存即可。这份配置由三部分组成cache_time控制接口缓存秒数填大一点可以减轻资源站压力api_site是资源站列表每站需要一个唯一标识 key、该站api.php/provide/vod的 JSON 接口地址、界面展示用的 name个别站点 API 拿不到剧集详情时还要补detail指向其网页详情根地址custom_category用于在导航栏加自定义分类用typemovie 或 tv加query搜索关键词作为标识支持华语美剧豆瓣高分这类词也可以直接写哈利波特实现类似豆瓣搜索的效果。如果你的配置想复用到其他实例或客户端还有一个订阅机制把完整配置文件做 base58 编码后提供一个 HTTP 地址就成为一个订阅链接可在后台或 Helios 客户端中直接拉取。存储后端怎么选Kvrocks、Redis 还是 Upstash收藏和播放记录存在哪里由NEXT_PUBLIC_STORAGE_TYPE决定三种选项各有取舍。Kvrocks 是默认推荐项性能好、配合命名卷可以可靠持久化上文 compose 文件就是按它写的。Redis 兼容性好但官方明确提示有丢数据风险——如果用redis方案必须像 README 示例那样开启持久化并挂载/data卷否则升级或重启后记录会清空。Upstash 则是托管在云端的 Redis适合无服务器或不想自己维护数据库的场景需要额外注册账号把UPSTASH_URL和UPSTASH_TOKEN两个环境变量填进 core 服务即可compose 里也就只剩一个容器。无论选哪种都建议养成备份习惯Kvrocks 方案备份kvrocks-data卷里的内容即可Redis 方案备份持久化目录。这是全系统里唯一会产生用户数据的地方。可选调优豆瓣代理与站点展示基础跑通后几个环境变量值得按需调整它们都写在 core 服务的environment里。豆瓣海报和详情数据默认由服务器直连豆瓣direct如果你的网络到豆瓣不稳推荐改为社区 CDN 方案NEXT_PUBLIC_DOUBAN_PROXY_TYPEcmliussss-cdn-tencent与NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPEcmliussss-cdn-tencent让浏览器直接向带 CDN 加速的镜像请求数据国内访问速度明显更稳。站点展示方面NEXT_PUBLIC_SITE_NAME改站名ANNOUNCEMENT改首页公告默认是一段合规免责声明建议保留SITE_BASE填你的访问 URL。行为类选项还有NEXT_PUBLIC_SEARCH_MAX_PAGE搜索可翻页数默认 5和NEXT_PUBLIC_FLUID_SEARCH搜索流式输出默认开启。改完环境变量后重新docker-compose up -d让容器重建生效。五项验证清单与日常更新方式部署是否真正可用按顺序检查五件事能用http://localhost:3000打开登录页用 compose 里的账号密码成功登录管理后台保存配置后首页能加载出分类与推荐内容搜索任意一部电影能返回聚合结果并点开详情页最终能流畅播放且刷新后继续观看位置保留。五步全过这套影视聚合播放器就算正式上线了。日常维护只需要一条命令docker-compose pull docker-compose up -d拉取新版镜像并重建容器存储卷里的数据不受影响。最后再叮嘱两句安全上的事实例只供个人使用不要公开传播访问链接避免他人滥用账号密码保持强随机若日后要长期运行也可以固定一个版本标签代替latest防止自动拉到不稳定的新版本。照这套流程走下来从空服务器到能看片只需要一份 compose 文件和一段播放源配置剩下的交给它自己同步记录就好。【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议禁止任何商业化行为任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 22:19:49

光模块PCB高频工艺链:从基材选型到阻抗控制全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 22:19:49

基于RTL8367RB的五口千兆无管理交换机硬件设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 23:24:53

UE5 Niagara粒子系统:死神特效完整制作流程与模块化思维

提到“死神特效”,你脑海里会浮现什么?暗色斗篷扬起的烟尘、往上升腾的幽蓝灵魂、刀刃划过的发光残影、地面散开的黑色法阵。这类效果几乎是暗黑系BOSS战、召唤仪式和死亡结算画面的标配。在UE里把这类效果做出来,今天绕不开的工具就是Niagar…

2026/10/6 23:24:53

用JavaScript优化大模型调用:Token压缩、缓存与模型路由实战

平时写 JavaScript 多半是在折腾页面交互、接口数据,但你可能没想到,它也能跑去给大语言模型“打理财务”。我这里说的不是炒股,而是真正帮大语言模型省钱省电:用 200 行不到的 JavaScript,写了一个能压缩请求、缓存结…

2026/10/6 23:24:53

RTS5411 Type-C USB3.0 HUB 原理图与PCB设计全解析

1. 为什么选择 RTS5411 来做这个 USB3.0 HUB1.1 从一颗芯片说起:RTS5411 的定位与核心优势搞硬件设计的同行应该都有体会,USB HUB 芯片市场长期被几家大厂把持,选型时既要看通道数、协议支持,又要考虑封装、功耗、外围元件数量和整…

2026/10/6 23:24:53

AI Agent 记忆底座实战:从向量库选型到检索策略与更新机制

前阵子帮朋友排查一个客服 Agent 的诡异行为:客户在对话里明确说了三遍“以后公司统一走银行转账,不再用支付宝了”,Agent 当时答应得好好的,下一轮客户问“收款有什么要注意的”,它张口就是“支持支付宝付款&#xff…

2026/10/6 23:24:53

MOS管衬底接法全解析:从原理图到版图的避坑指南

1. 衬底到底该接哪儿:一个被很多人忽略的基础问题做模拟电路或者版图的朋友,尤其是刚入行的,大概率都遇到过这个场景:画原理图的时候,NMOS的衬底引脚随手就接到了地上,PMOS的衬底引脚随手就接到了电源上&am…

2026/10/6 23:19:53

CPU性能优化方法论:从流水线、缓存到伪共享的硬件原理

1. 硬件为什么快:藏在芯片里的几台“流水线工厂”硬件体系结构这门学问,听起来像是学电脑的人才会碰的东西。但你要是经历过线上服务偶发超时、数据库连接被打满、或者同一套代码换台机器性能翻倍却说不清原因,就会意识到:硬件不是…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑