Skip to main content

折腾|Plex直链115

访问流程图,nginx-plex返回alist的连接,alist通过302在重定向到115,达到infuse直接访问115的效果。 https://media.wuguipeng.com/attachments%2Fimage_2024-07-01_11-01-46.png

使用到的内容:

  • 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

https://media.wuguipeng.com/attachments/image_2024-07-01_11-16-15.png

/data

https://media.wuguipeng.com/attachments/image_2024-07-01_11-17-30.png

下载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连接

https://media.wuguipeng.com/attachments/image_2024-07-01_11-43-06.png