用Lunarr打造私人流媒体中心
简介
什么是 Lunarr ?
Lunarr是一个自托管的媒体服务器,专为电影和电视库设计。它可以帮助用户管理本地、SFTP或WebDAV上的媒体文件,自动匹配TMDb元数据,并支持直接播放或实时HLS转码。支持Chromecast和AirPlay远程播放。
主要特点
- 多源媒体库:支持本地磁盘、
SFTP和WebDAV三种媒体源,可以灵活管理不同位置的媒体文件 - 智能元数据匹配:自动扫描文件并与
TMDb数据库匹配,提供电影和电视剧的详细信息、海报和推荐 - 多种播放方式:支持直接播放和实时
HLS转码,兼容Chromecast和AirPlay进行远程播放 - 字幕支持:自动检测侧边
.vtt字幕文件,支持FFmpeg转码和可选硬件加速 - 设备配对:支持电视和移动设备配对,提供访客分享链接和
API密钥管理 - 开源免费:基于
Apache-2.0协议开源,可免费使用和修改
应用场景
- 家庭影院:将家庭媒体库集中管理,在电视、手机、平板等多种设备上播放
- 个人影视库:整理和管理个人收藏的电影和电视剧,自动获取元数据和海报
- 远程媒体访问:通过
SFTP或WebDAV访问远程服务器上的媒体文件 - 开发者测试:开发人员可以快速搭建测试环境,测试媒体播放和转码功能

Lunarr 是一个功能齐全的自托管媒体服务器,适合需要管理个人媒体库的用户。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 sayem314,选择第二个 sayem314/lunarr,版本选择 latest。
本文写作时,
latest版本对应为0.6.0;

卷
在 docker 文件夹中,创建一个新文件夹 lunarr,并在其中建一个子文件夹 data,媒体文件可以使用现有的进行挂载
需要给
/data目录EveryOne读写权限,否则会创建SQLite数据库失败
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/lunarr/data |
/data |
存放应用数据 |
/path/to/media |
/media:ro |
媒体文件目录(只读) |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
3418 |
3000 |

环境
| 可变 | 值 |
|---|---|
AUTH_SECRET |
至少 32 个字符的随机密钥 |
ORIGIN |
http://<群晖IP>:3418 |

环境变量说明:
AUTH_SECRET用于应用认证,必须保持稳定;ORIGIN用于设置应用的公共访问URL;
命令行安装
docker cli 安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 lunarr 和 子目录 |
docker-compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | services: |
然后通过 SSH 登录到您的群晖,执行下面的命令:
1 | # 新建文件夹 lunarr 和 子目录 |

运行
在浏览器中访问 http://<群晖IP>:3418 即可进入登录界面
第一次要注册账号(第一个注册的用户将成为管理员)

设置 TMDb Key
从右上角进入设置

下拉找到 TMDb metadata

填入 TMDb 的读取访问令牌或 API 密钥;两者并非必需。读取访问令牌是首选。

回到上面,点 test

如果返回的是 fetch failed ,说明连不上 themoviedb.org ,扫描的电影库就不会有封面

但是增加 HTTP_PROXY/HTTPS_PROXY 环境变量是没用的,因为 Node.js 的原生 fetch(undici)默认不支持,这是 Node.js 的设计行为,不是 Lunarr 的问题。只有使用 node-fetch、axios 等库时才会自动读取代理环境变量。所以没办法让 Lunarr 走代理
可能只有路由器透明代理才是唯一可行的方案,所以如果不是这样,设不设 TMDb Key 应该结果都是一样的
添加电影库
添加电影或电视库

点 Add library 创建电影库
Name:是库的名字Type:可以选择Movies或者TV showsSource:可以是local folder(本地文件夹)、SFTP和WebDAVFolder path:文件夹路口,这里要选择容器内的路径,也就是我们映射的/mediaScheduled rescan:可以选择定时扫描的时间间隔,如果电影库比较大,可以选时间间隔大一些,如果库比较小,可以间隔短一点,老苏用的是Hourly,也就是每个小时扫描一次

创建成功后,会在右侧显示

点 scan 开始扫描

扫描完成后是没有封面的

随便点开一部

虽然没有缩率图,但是不影响播放

注意事项
- AUTH_SECRET 必须稳定:
AUTH_SECRET在重启之间必须保持稳定,至少32个字符 - 数据持久化:
LUNARR_DATA_DIR存储SQLite数据库和HLS缓存,请确保存储在持久化存储上 - 媒体库权限:本地媒体库可以监控文件变化,远程库使用手动或计划重新扫描
- 管理员权限:第一个注册的用户成为管理员,后续注册默认禁用,除非管理员在设置中启用
- 安全建议:建议修改默认的
AUTH_SECRET,使用强随机值
参考文档
Lunarr - Self-hosted media streaming server designed as an alternative to Plex
地址:https://github.com/lunarr-app/lunarr-gosayem314/lunarr - Docker Image
地址:https://hub.docker.com/r/sayem314/lunarrLunarr Documentation
地址:https://github.com/lunarr-app/lunarr-go/tree/main/docs