由于网络环境不支持IPV6,
也无公网IPV4,没法DDNS到软路由
移动大内网使用zerotier/tailscale的速度也不稳定(我尝试过自建zerotier的moon效果提升也不大)
电脑24小时内网穿透也不现实
阿里云服务器的带宽只有3M且性能又鸡肋
播放40G-70G 左右的电影3M带宽的服务器肯定不可能
而又想要给不在一个城市的家人和朋友们一个良好的观影追剧体验
只能采取这种方案jellyfin+alist+rclone+medialink
rclone
将alist中阿里云盘挂载到本地
jellyfin
读取rclone挂载内容
medialink
实现转发,自动将视频请求重定向到阿里云盘而不是本地服务器,本地带宽就不再成为瓶颈
另外最近由于阿里云盘的限制越来越严格,即使你开了三方权益包没有svip也会被QPS限制,可能是1分钟内2-3次,刮削数据都会达到风控标准,要想保证观影体验就需要尽可能的降低访问云盘的次数(当然strm文件也可以,个人觉得尝试后bug更多了就没有使用)
通过前置emby或者jellyfin,既能解决没有魔法设备的刮削问题,还能让infuse/kodi等软件不再进行刮削直接从emby/jellyfin获取,很大程度上避免了风控,于是采取了这种方案并记录记录自己的完整操作和踩坑
不过这种方式jellyfin的web端和客户端无法播放视频,通过infuse/kodi/senplayer等添加jellyfin可以完美播放
我选择了jellyfin
而不是emby
因为阿里云ESC的网络环境导致的,jellyfin
可以非常方便的使用豆瓣进行刮削
jellyfin
宿主机安装,因为docker安装jellyfin会有不同步的bug , rclone挂载alist到本地/mnt,/mnt再映射到jellyfin容器中后,alist视频更新,即使rclone手动更新/mnt下的挂载文件,jellyfin容器中数据也会有无法更新的bug
rclone
踩坑:记得rclone
最好挂载你alist
的根目录
在测试时,一直失败,发现日志错误如下
访问路径为
/177/TS/xxx (2024)/Season 1/S01E09 - 2160p.H.265.WEB-DL.AAC.mp4
发生了路径/TV
丢失,正确的应该是
/177/TV/TS/xxx (2024)/Season 1/S01E09 - 2160p.H.265.WEB-DL.AAC.mp4
后来改为根目录一切正常,当然,也可能当时其他设置配置出错导致的
先选择一个想安装的文件夹
官方教程
Install
rclone config docs
安装
mkdir /opt/rclone
cd /opt/rclone
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
sudo apt update # 更新软件包列表
sudo apt install unzip # 安装 unzip 工具
unzip rclone-current-linux-amd64.zip # 解压 rclone zip 文件
cd rclone-*-linux-amd64 # 进入解压后的 rclone 目录
sudo cp rclone /usr/bin/ # 将 rclone 二进制文件复制到 /usr/bin/ 目录
sudo chown root:root /usr/bin/rclone # 设置文件所有者为 root:root
sudo chmod 755 /usr/bin/rclone # 设置文件权限为 755,允许执行
#验证安装是否成功
rclone --version # 显示 rclone 版本信息
挂载到rclone
安装后就可以对alist进行挂载,输入rclone config
注意第二步命名不能为linux中的文件夹!!!
然后根据提示依次输入
- n
- 自定义起名
- webdav,序号55
网址填写注意加上dav https://网址/dav
选7
之后是用户和密码
之后一直回车
输入q退出即可
#检验是否挂载成功
rclone lsd 自定义的名字(冒号不要少):
rclone lsd aliyunpan:
挂载到本地
其中
--dir-cache-time 1m
:
目录结构缓存有效期为 1 分钟--poll-interval 15s
:
每 15 秒检查远程存储的文件变化
避免了手动同步rclone,alist文件更新后1分钟就可以更新到本地
挂载到本地
注意我这里是阿里云盘
# aliyunpan:/177 /mnt/177 为自定义
#格式为 前面的名字:/路径 /mnt/本地路径
#记得提前创建好文件夹
rclone mount aliyunpan:/177 /mnt/177 \
--use-mmap \
--umask 000 \
--allow-other \
--allow-non-empty \
--dir-cache-time 1m \
--poll-interval 15s \
--cache-dir=/path/to/cache \
--vfs-cache-mode full \
--buffer-size 256M \
--vfs-read-chunk-size 32M \
--vfs-read-chunk-size-limit 512M \
--vfs-cache-max-size 10G \
--vfs-cache-max-age 1h \
--network-mode \
--no-check-certificate \
--default-permissions \
--header "Referer:https://www.aliyundrive.com/" \
--daemon
# 验证是否挂载成功
df -H
查看本地文件夹,此时应该已经出现了alist网盘中的内容
安装jellyfin
docker pull jellyfin/jellyfin
# 创建 Jellyfin 数据文件夹
mkdir /opt/1panel/apps/jellyfin/config # 配置目录挂载,jellyfin中的插件都在该目录下
mkdir /opt/1panel/apps/jellyfin/cache # 缓存目录挂载
# 字体文件,避免jellyfin刮削出现白框
# 你reclone挂载文件的位置
docker run -d \
--name jellyfin \
--net=host \
-e http_proxy=127.0.0.1:20172 \
-e https_proxy=127.0.0.1:20172 \
-e all_proxy=127.0.0.1:20172 \
--volume /opt/1panel/apps/jellyfin/config:/config \
--volume /opt/1panel/apps/jellyfin/cache:/cache \
--volume /usr/share/fonts:/usr/local/share/fonts \
--mount type=bind,source=/mnt,target=/mnt \
--restart=unless-stopped \
jellyfin/jellyfin
之后记得阿里云防火墙放行对应端口8096
如果你没有使用代理,使用豆瓣刮削器即可
没有使用代理则删除上面的三行
-e http_proxy=127.0.0.1:20172 \
-e https_proxy=127.0.0.1:20172 \
-e all_proxy=127.0.0.1:20172 \
安装豆瓣刮削器
在jellyfin存储库
添加该链接
https://mirror.ghproxy.com/https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest_cn.json
安装该插件,然后选用即可
安装MediaLinker
大佬地址chen3861229/embyExternalUrl: some emby/jellyfin scripts,欢迎大家可以给大佬点点star
docker run -d \
--name MediaLinker \
--network host \
-v /home/MediaLinker/:/opt/ \
thsrite/medialinker:latest
jellyfin需要按照配置文件说明修改五处
const embyHost = "";
const embyApiKey = "";
const mediaMountPath = ["/mnt"];
const alistAddr = "";
// 注意 jellyfin 是小写开头 mediaSourceId
keyExpression: "r.uri:r.args.mediaSourceId", // "r.uri:r.args.MediaSourceId:r.args.X-Emby-Device-Id"
然后重启MediaLinker即可
同样记得放行8091端口
之后就可以添加进行愉快观影了
KODi
jellyfin中安装infuse和kodi插件
infuse和Senplayer等播放器都是添加jellyfin源
即可
Kodi | Jellyfin官方介绍
kodi需要安装jellyfin官方库Kodi | Jellyfin官方库
安装Jellyfin即可,个人觉得jellycon没有jellyfin好用,二选一就行
其他问题
jellyfin字体白框问题
Releases · notofonts/noto-cjk
下载 All Variable OTF/OTC
# 重命名为比如noto-serif-cjk
#传到/usr/share/fonts/
cd /usr/share/fonts/
unzip noto-serif-cjk.zip
#刷新字体缓存
sudo fc-cache -fv
#删除之前的封面刷新元数据
#然后重启即可jellyfin和mediaLink(如果已经安装)