Jellyfin 多媒体服务搭建

使用 jackett、qbittorrent、jellyfin 搭建家庭影院。

本文备份自用的 docker 配置文件。

配置信息

  • docker 配置文件集中存放在:/home/shiersan/docker
  • zfs 存储池挂载点:/mnt/zfs-raid5-pool/。ZFS 的配置可以参考: 这里
  • qbittorrent 下载盘为固态盘(本机系统盘)M.2 1 TB
  • 下载盘文件使用rsync -ruvzt --progress手动同步到存储池中的 jellyfin 文件夹中。这么做的原因是因为下载文件夹和存储的文件夹不是一个硬盘设备。无法使用硬链接

filebrowser

使用该程序实现 WEB 端管理存储池文件功能

默认用户名:admin,密码:admin

docker run -d --name filebrowser \
    -v /mnt/zfs-raid5-pool:/nas \
    -v /home/shiersan/docker/filebrowser/database.db:/database.db \
    -v /home/shiersan/docker/filebrowser/filebrowser.json:/.filebrowser.json \
    -u $(id -u):$(id -g) \
    -p 60100:80 \
    --restart unless-stopped \
    filebrowser/filebrowser:latest
  • -p:端口可以自定义

  • -v /mnt/zfs-raid5-pool:/nas:容器的路径需和下方的json配置中的root对应

  • 需要创建空文件:database.db

  • 创建配置文件:filebrowser.json,并写入下面的内容:

{
 "address":"0.0.0.0",
 "port":80,
 "locale":"zh-cn",
 "baseURL":"/",
 "log":"stdout",
 "database":"/database.db",
 "root":"/nas"
}

qbittorrent

下载器使用 qb 下载种子文件。传统下载可以自行部署 aria2

安装后默认用户名:admin,密码:adminadmin

docker run -d --name=qbittorrent \
    -e QB_WEBUI_PORT=60200 \
    -e QB_EE_BIN=true \
    -e UID=$(id -u) \
    -e GID=$(id -g) \
    -e UMASK=000 \
    -p 6881:6881 \
    -p 6881:6881/udp \
    -p 60200:60200 \
    -v /home/shiersan/docker/qbittorrent/config:/config \
    -v /home/shiersan/docker/qbittorrent/downloads:/Downloads \
    --restart unless-stopped \
    johngong/qbittorrent:latest

注意-e QB_WEBUI_PORT=60200指定的端口必须和-p 60200:60200中一致。也就是说这三个端口数值必须完全一致,否则会出现异常。

  • -e QB_EE_BIN=true表示使用 qb 增强版(可以反吸血:设置-高级-上传连接策略-选择反吸血
  • 其他参数参考该容器 docker hub 首页文档。

jackett

一个聚合种子搜索器。初始启动后需要添加indexer才能正常使用

docker run -d --name=jackett \
    -e PUID=$(id -u) \
    -e PGID=$(id -g) \
    -e TZ=Asia/Shanghai \
    -e AUTO_UPDATE=true \
    -p 9117:9117 \
    -v /home/shiersan/docker/jackett/config:/config \
    -v /home/shiersan/docker/jackett/downloads:/downloads \
    --restart unless-stopped \
    lscr.io/linuxserver/jackett:latest

搜索个别网站的还需要依赖flaresolverr这个服务。这个服务不稳定,经常报错。所以不装也行,后果也只是 jackett 不能使用个别网站搜索而已。

docker run -d --name=flaresolverr \
    -p 8191:8191 \
    -e LOG_LEVEL=info \
    --restart unless-stopped \
    ghcr.io/flaresolverr/flaresolverr:latest

运行起来后,去 jackett 的设置中找到FlareSolverr API URL这一项,把flaresolverr的地址设置上即可。

jellyfin

开源的多媒体管理平台,支持硬件转码等功能。

这里使用的是中国特供版具体可以访问该镜像的 docker hub 首页了解。

该镜像集成了很多硬解需要的驱动,并优化了 jellyfin 的参数。

docker run -d --name jellyfin \
    -p 8096:8096 \
    --privileged=true \
    -v /home/shiersan/docker/jellyfin/config:/config \
    -v /home/shiersan/docker/jellyfin/cache:/cache \
    -v /mnt/zfs-raid5-pool/jellyfin:/media \
    --mount type=bind,source=/dev/dri,target=/dev/dri \
    --restart=unless-stopped \
    nyanmisaka/jellyfin:latest
  • --mount type=bind,source=/dev/dri,target=/dev/dri:是挂载宿主机的显示渲染设备文件到容器中
  • --privileged=true:因为要访问上面说的系统渲染设备文件,所以需要 root 权限。也可以对设备文件设置 777 权限来省略该配置项
  • configcache目录必须配置。
  • -v /mnt/zfs-raid5-pool/jellyfin:/media:是自定义你的媒体文件根目录让 jellyfin 能找到你的电影/电视剧

tinyMediaManager

电影信息刮削,docker 部署版本。

docker run -d --name=tinymediamanager \
    -e USER_ID=$(id -u) \
    -e GROUP_ID=$(id -g) \
    -e PASSWORD=设置密码 \
    -p 64000:4000 \
    -v /home/shiersan/docker/tinymediamanager/data:/data \
    -v /mnt/zfs-raid5-pool/jellyfin:/media \
    --restart unless-stopped \
    tinymediamanager/tinymediamanager:latest

切换中文界面:

  • 进入之后跟随向导初始设置
  • 右上角-settings
  • 弹出设置窗口中选择左侧菜单第一项:General
  • 右边在 UI Language 设置中下拉选择中文
  • 关闭设置窗口
  • 直接右上角点击软件的关闭按钮,不要关闭网页,软件会自动重启。
  • 软件不经常使用的情况下,可以关闭 docker。

如果没有科学上网可以尝试修改 host 解决无法访问 TMDB:

docker run -d --name=tinymediamanager \
    -e USER_ID=$(id -u) \
    -e GROUP_ID=$(id -g) \
    -e PASSWORD=设置密码 \
    -p 64000:4000 \
    -v /home/shiersan/docker/tinymediamanager/data:/data \
    -v /mnt/zfs-raid5-pool/jellyfin:/media \
    --add-host=api.themoviedb.org:13.224.161.90 \
    --add-host=image.tmdb.org:104.16.61.155 \
    --add-host=api.themoviedb.org:13.35.67.86 \
    --add-host=www.themoviedb.org:54.192.151.79 \
    --restart unless-stopped \
    tinymediamanager/tinymediamanager:latest

HOST 如果失效,请自行更换其他方式。