折腾|Plex直链115
访问流程图,nginx-plex返回alist的连接,alist通过302在重定向到115,达到infuse直接访问115的效果。
使用到的内容:
- 115网盘
- alist(在笔记本上运行,以前在服务器搭建过,但是访问115的速度很慢,有时间再试一下)
- frp(内网穿透,访问alist)
- rclone(有人说cd2扫盘的时候会快一些,一直用的rclone就懒得改了)
- plex(emby和jellyfine都用过,plex刮削会好一些,但是手机端需要会员才能播放,通过infuse可以正常播放)
- nginx-plex(项目地址,项目说明写的太乱了,网上也没有比较好的教程,花了点时间仔细研究)
存在的问题:
- plex手机端无法播放(需要有效订阅)
- plex网页版也无法播放,原因是因为最终范围的是115网盘的连接,plex范围115存在跨域问题。
教程开始前,需要准备的东西:
- 搭建alist,确保可以外网访问,获取alist token
- 搭建plex
注意挂载路径:
- rclone alist-webdav到服务器:/home/ubuntu/app/emby/media
- plex容器中:/data 映射到本机 /home/ubuntu/app/emby/media
/home/ubuntu/app/emby/media
/data
下载plex2Alist项目到服务器。
项目结构:
~/plex2Alist
├── docker // 创建容器脚本文件夹
| ├── docker-compose.yml // docker-compose 脚本,根据自身情况修改
| ├── nginx-plex.syno.json // 群晖 docker 脚本,根据自身情况修改
└── nginx // nginx 配置文件夹
├── conf.d // nginx 配置文件夹
| ├── api // JS 脚本文件夹,完全不用改
| ├── cert // SSL 证书文件夹,根据自身情况修改
| ├── common // 通用工具类文件夹,完全不用改
| ├── config // 常量拆分后配置文件,若为 constant-all.js 完全不用改,若为 constant-main.js 则需要更改对应拆分文件
| ├── exampleConfig // 示例 constant 配置文件夹
| ├── includes // 拆分的 conf 文件夹,http 和 https 端口在这改
| ├── constant.js // 常量主配置文件,根据自身情况修改
│ ├── plex.conf // plex 配置文件,根据自身情况修改,注意 https 默认被注释掉了
│ └── plex.js // 主脚本,完全不用改
└── nginx.conf // nginx 配置文件,一般不用改
有很多配置我也不太明白,我逐一说明我改过的配置文件。
- docker-compose.yml 我注释掉了alist容器构建部份,其他保持不变
#service.ali:
# image: xhofe/alist:latest
#container_name: alist
#ports:
# - 5244:5244
#volumes:
# - ./alist:/opt/alist/data
#restart: always
- constant.js
# 这里默认 plex 的地址是宿主机,要注意 iptables 给容器放行端口,10.0.0.177是我甲骨文的内网地址
const plexHost = "http://10.0.0.177:32400";
# 这里是我plex容器内的路径,挂载的是alist
const plexMountPath = ["/data"];
- config/constant-mount.js
// rclone/CD2 挂载的 alist 文件配置,根据实际情况修改下面的设置
// 访问宿主机上 5244 端口的 alist 地址, 要注意 iptables 给容器放行端口
// 15244端口是我frp内网穿透alist的端口
const alistAddr = "http://10.0.0.177:15244";
// alist token, 在 alist 后台查看
const alistToken = "alist-";
// alist 是否启用了 sign
const alistSignEnable = false;
// alist 中设置的直链过期时间,以小时为单位
const alistSignExpireTime = 12;
// alist 公网地址,用于需要 alist server 代理流量的情况,按需填写
// alist外网地址
const alistPublicAddr = "http://arm.wusomebody.com:15244";
- nginx/conf.d/includes/http.conf 这里配置的是http访问域名,默认是default,只能使用公网ip访问。
// arm.wusomebody.com是我甲骨文服务器的域名,*.plex.direct是用来匹配plex生成的中转域名
server_name arm.wusomebody.com,*.plex.direct;
listen 8091; ## Listens on port IPv4
listen [::]:8091; # Listens on port IPv6
最后,如果访问正常,error.log会输出alist连接