LunaTV 影视聚合播放器 Docker 部署指南:3 步 5 分钟跑起私有影视站
【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV
找一部剧要翻好几个站,本地收藏动不动就失效,换台电脑观看记录全丢。LunaTV 是基于 Next.js 14 的开源影视聚合播放器,把多源搜索、在线播放、跨端收藏与观看记录同步收进一个服务里。这篇带你用 Docker 跑通完整部署:一份 compose 文件、一条启动命令,外加页面空白时的排障路线。
开工前花 30 秒自检的 3 件事
| 自检项 | 怎么查 | 达标线 |
|---|---|---|
| Docker 与 Compose 可用 | 终端敲docker compose version | 能打印出版本号 |
| 机器资源够 | 看内存与磁盘剩余 | 至少 1GB 内存、10GB 空闲磁盘 |
| 端口没被占 | lsof -i:3000 | 没有任何输出 |
三项全过再往下走,否则部署到一半会在同一堵墙前卡住。
3 步跑起 LunaTV:一份 compose 文件加一条启动命令
第 1 步:写下 compose 文件。新建docker-compose.yml,两个容器:应用本体加 Kvrocks 存储,镜像构建过程可看 Docker 构建定义:
services: moontv-core: image: ghcr.io/moontechlab/lunatv:latest container_name: moontv-core ports: - '3000:3000' environment: - USERNAME=admin - PASSWORD=你的强密码 - NEXT_PUBLIC_STORAGE_TYPE=kvrocks - KVROCKS_URL=redis://moontv-kvrocks:6666 # ...其余字段保持默认... depends_on: [moontv-kvrocks] moontv-kvrocks: image: apache/kvrocks container_name: moontv-kvrocks volumes: - kvrocks-data:/var/lib/kvrocks volumes: kvrocks-data:四个关键参数的填法:
| 参数 | 填什么 | 为什么 |
|---|---|---|
3000:3000 | 左侧随意,右侧固定 3000 | 容器服务固定监听 3000,只改宿主机这一侧 |
USERNAME/PASSWORD | 自定义账号加强密码 | 管理面板唯一入口,靠环境变量注入 |
NEXT_PUBLIC_STORAGE_TYPE | kvrocks | 决定用哪个存储驱动 |
KVROCKS_URL | redis://moontv-kvrocks:6666 | 同一 compose 网络内用服务名当主机名,不能写 localhost |
第 2 步:一条命令启动。在文件所在目录执行docker compose up -d。首次要拉两个镜像,等一两分钟;执行完用docker compose ps看,两个容器都显示running就算过关。
第 3 步:浏览器验证。打开http://localhost:3000,出现登录页说明主线流程走完了。
首跑检查清单:部署完立刻核对这 5 件
- ✅ 用刚设置的账号进入管理面板,能看到播放源配置入口
- ✅ 搜索框先别急着试:未填播放源时返回空是空壳特性,不算故障
- ✅ 随便播完一部片退出,回首页能在"继续观看"里看到它
- ✅
docker compose restart之后再刷页面,收藏和记录仍在(证明卷挂对了) - ✅
docker compose logs moontv-core | tail -20里没有反复刷的错误
配置深水区:必配、推荐配、可选配各做什么
必配(不配跑不通):
USERNAME/PASSWORD:漏了就没有管理面板入口,也没有事后找回流程。- 存储地址(
KVROCKS_URL,或 Redis 的REDIS_URL、Upstash 的两项):漏了容器照起,但收藏和观看记录全写不进去。 - 播放源:在管理面板填入苹果 CMS V10 格式的 API 地址,参考 管理后台源码。不填,整站就是个空壳。
推荐配(不配能跑但体验打折):
- 豆瓣数据代理:
NEXT_PUBLIC_DOUBAN_PROXY_TYPE与NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE设为cmliussss-cdn-tencent。不配走内置默认,站外网络下海报和详情页偶尔加载失败。 - 数据卷
kvrocks-data:/var/lib/kvrocks:上面文件里这一行不能删,漏挂等于每次重启清空全部数据。
可选配(按需):
NEXT_PUBLIC_SITE_NAME改站点名;端口映射左侧可改 3001 等任意空闲端口。- 存储选型:Kvrocks 稳定,Redis 有丢数据风险,Upstash 适合只上云不挂本地卷的场景。
新手最容易踩的 5 个坑与解法
- 端口 3000 被占:
lsof -i:3000看是谁占着,把映射左侧改成3001:3000,用新端口访问,右侧保持 3000。 - 容器起来了页面却空白:先
docker logs -f moontv-core看日志,最常见是存储容器没起来,或KVROCKS_URL里的服务名和实际对不上。 - 重启后数据全没:卷没挂或路径写错,Kvrocks 的数据目录是
/var/lib/kvrocks,挂错目录等于没挂。 - 密码忘了:账号由环境变量注入,改
USERNAME/PASSWORD后docker compose up -d重建容器即可。 - 想换存储后端:先在管理面板导出数据,再改
STORAGE_TYPE和对应地址,新旧数据不清理会互相干扰。
扩展:移动端、备份与更新
- 移动端:PWA 可直接装到手机桌面,桌面端和移动端共用同一套数据。
- 备份:定期备份
kvrocks-data卷,管理面板另有一键导出。 - 更新:
docker compose pull && docker compose up -d切到新版,数据卷不动。
下一步就一件事:打开管理面板把播放源地址填进去,就能试播了。跑通之后记得把数据卷备份一次,心里才踏实。
【免费下载链接】LunaTV本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTV
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考