V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Enter96
V2EX  ›  科技

emby 网盘服的搭建以及关于更优方案的探讨

  •  1
     
  •   Enter96 · 40 天前 · 566 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 原理

    这个方案利用 emby 支持 strm 文件可以快速入库,切通过 openlist 等支持网盘的 302 重定向,实现快速起播,以下内容中提到的所有工具均为开源项目,当然也有其他可选的工具替代,例如 cd2 可以用 rclone 替代,auto_symlink 可以用其他 strm 工具替代,emby2alist 可以用 go-emby2openlist 替代等。(同时也推荐使用 auto_symlink 作者的 symedia 和 fastemby 项目)

    2 关于更优方案的讨论

    2.1 115 网盘 302 风控/封号

    目前已知 115 网盘在多个地区或超过一定连接数使用 302 重定向可能会触发风控,想请问下各位是否有更好的解决方案,如是否可以做多网盘资源的负载均衡(也可以推荐相应的 vps 走代理的方式)

    3 openlist

    3.1 作用

    • 网盘挂载,可通过 webdav 的方式访问
    • 网盘 302 重定向

    3.2 docker 部署

    mkdir -p /media/docker/alist
    docker run -d \
    --restart=always \
    -p 5244:5244 \
    -p 6801:6800 \
    -e PUID=0 \
    -e PGID=0 \
    -e UMASK=022 \
    --name=openlist \
    -e TZ=Asia/Shanghai \
    openlistteam/openlist:beta
    

    4 cd2

    4.1 作用

    • 网盘挂载,可通过本地映射路径访问(这里也可以用 rclone ,但是据其他博主说 rclone 的速度会比 cd2 慢)
    • 套娃挂载 alist 的 webdav ,以支持 cd2 暂不支持的网盘(如夸克网盘等)

    4.2 docker 部署

    注意点: 这里映射了两个媒体目录,一个是cloud_media,一个是webdav_media

    • cloud_media用于挂载支持 302 重定向的网盘,如 115 ,天翼等;
    • webdav_media用于挂载如夸克网盘等;

    部署前请确认 docker 已开启 MountFlags image.png

    version: '3'
    
    services:
      clouddrive:
        image: cloudnas/clouddrive2
        container_name: clouddrive
        restart: unless-stopped
        environment:
          - CLOUDDRIVE_HOME=/Config
        volumes:
          - /volume2/Media/mp_downloads:/CloudNAS:shared
          - /volume2/Media/cloud_media:/media:shared
          - /volume2/Media/webdav_media:/webdav_media:shared
          - /volume1/docker_dir/clouddrive2:/Config
        ports:
          - "8097:19798"
        pid: "host"
        privileged: true
        devices:
          - /dev/fuse:/dev/fuse
    
    

    4.3 针对 115 风控的配置

    image.png

    image.png

    5 auto_symlink

    5.1 作用

    • 实时监控目录变化,扫盘,入库

    5.2 docker 部署

    需注意:

    • volume 内的宿主机和容器路径最好一一对应,否则可能出现 emby 内软链接跳转失败的问题
    • 支持 302 重定向的网盘和其他网盘的根路径要分开,否则在 emby 播放时,其他网盘的资源会无法播放
    version: '3'
    
    services:
      auto_symlink:
        image: shenxianmq/auto_symlink:latest
        container_name: auto_symlink
        environment:
          - TZ=Asia/Shanghai
        volumes:
          - /volume2/Media/cloud_media/clouddrive:/volume2/Media/cloud_media/clouddrive:rslave # cd2 挂载目录
          - /volume2/Media/webdav_media/clouddrive:/volume2/Media/webdav_media/clouddrive:rslave
    	  - /volume2/Media/strm:/volume2/Media/strm # emby 扫描媒体目录
    	  - /volume2/Media/webdav_strm:/volume2/Media/webdav_strm 
          - /volume1/docker_dir/auto_symlink/config:/app/config
        ports:
          - "8095:8095"
        user: "0:0"
        restart: unless-stopped
    
    

    5.3 网页配置

    image.png

    6 emby

    6.1 docker 部署

    需注意:

    • emby 媒体库只需添加包含 strm 的相关文件夹
    • emby 不要开启转码
    version: '3'
    
    services:
      emby-server:
        image: amilys/embyserver
        container_name: emby-local
        network_mode: bridge # DLNA and Wake-on-Lan 需要 bridge
        environment:
          - UID=0 # 设置容器用户 ID 为 0 (通常是 root)
          - GID=0 # 设置容器组 ID 为 0 (通常是 root)
          - GIDLIST=0 # 设置容器组 ID 列表为 0
          - TZ=Asia/Shanghai # 设置容器的时区为亚洲/上海
        devices:
          - /dev/dri:/dev/dri             # 将主机的 /dev/dri 设备挂载到容器 开启硬解
        ports:
          - 8096:8096 # 对外访问端口
        restart: unless-stopped
        privileged: true
        volumes:
          - /volume1/docker_dir/emby_local/config:/config
          - /volume2/Media/cloud_media/clouddrive:/volume2/Media/cloud_media/clouddrive:rslave
          - /volume2/Media/local_media:/volume2/Media/local_media
          - /volume2/Media/webdav_media/clouddrive:/volume2/Media/webdav_media/clouddrive:rslave
          - /volume2/Media/webdav_strm:/webdav_strm # 其他网盘的 strm(夸克等)
          - /volume2/Media/strm:/strm # 支持 302 重定向的网盘 strm(115 ,天翼等)
    
    

    7 emby2alist

    7.1 作用

    • 通过 nginx 重定向资源地址,将原先 strm 文件指向的挂载路径如/volume2/Media/cloud_media/115 直接指向 alist 路径下的/115,从而实现 302 重定向网盘资源
    • 由于之前将两种网盘资源分开存放,这里只会匹配支持重定向网盘的根路径,其他网盘仍然会通过挂载在本地的/volume2/Media/webdav_media路径进行访问

    7.2 部署

    wget https://github.com/bpking1/embyExternalUrl/archive/refs/tags/v0.4.5.tar.gz
    tar -zxvf v0.4.5.tar.gz
    cd embyExternalUrl-v0.4.5/
    cd emby2Alist
    
    # modify nginx/conf.d/constant.js
    # 参考下图 1 配置
    # embyHost 如果是本地 docker 部署的,就是图中的 http://172.17.0.1:8096(端口自行确认)
    
    # modify nginx/conf.d/config/constant-mount.js
    # 参考下图 2 配置
    # alistAddr 如果是本地 docker 部署的,就是图中的 http://172.17.0.1:5244(端口自行确认)
    
    # modify nginx/conf.d/config/constant-pro.js
    # 参考下图 3 配置
    # 待替换路径需确认 emby 媒体库内资源路径和 alist 内的路径,填写多出来的部分(仅限支持 302 重定向的网盘资源)
    

    nginx/conf.d/constant.js image.png

    nginx/conf.d/config/constant-mount.js image.png

    nginx/conf.d/config/constant-pro.js image.png

    7.3 常见问题

    7.3.1 115 资源无法播放

    nginx-emby 容器内日志如下:

    [warn] 21#21: *155 js: redirect to: /d/115/xxx
    

    7.3.1.1 原因

    匹配到 emby2alist 里的 115 规则,并使用 alist 公网地址进行转发 image.png

    7.3.1.2 临时解决方案

    屏蔽位于constant-mount.jsclientSelfAlistRule中与 115 有关的规则 image.png

    7.3.2 新增网盘后 emby 无法播放

    问题描述:在上面的环境正常运转的情况下(emby 启动后),新增了一个夸克盘通过alist -> cd2挂载到本地目录/volume2/Media/webdav_media,可以正常生成新的 strm 文件,emby 也可以正常入库,但是无法播放,并提示无兼容的流。此时在 emby 中查看挂载在 emby 容器上的/volume2/Media/webdav_media路径,里面的夸克盘路径下是没有东西的

    复现方式:

    • 在 cd2 内卸载之前的夸克盘挂载
    • 去 emby 内看路径/volume2/Media/webdav_media下是否已经没有文件夹
    • 在 cd2 内重新挂载夸克盘
    • 去 emby 内确认路径/volume2/Media/webdav_media下是否虽然有夸克盘的目录,但里面没东西

    7.3.2.1 原因

    这是因为在之前的步骤中,emby 容器配置中与网盘相关的路径映射如cloud_media, webdav_media没有开启 rslave 模式,现已修正

    7.3.2.2 解决方案

    emby 容器与网盘相关的路径挂载时开启 rslave 模式,详见 4.1

    以下操作可保留原先所有配置和刮削记录

    # add :rslave to docker-compose.yml 按照 4.1emby 部署的 compose 文件更改
    docker stop emby_container # emby_container 替换成自己的容器名
    docker rm emby_container # emby_container 替换成自己的容器名
    docker-compose up -d # 重新部署
    

    7.3.3 emby 提示无兼容的流

    7.3.3.1 原因

    该问题一般由指定路径下的文件不存在引起,可以检查下网盘是否正确挂载


    参考教程:

    url: https://www.nerocats.com/archives/58/
    title: "alist-clouddrive2-auto_symlink-emby-nginx 实现 emby 播放 115 直链 - 偏爱一丛花"
    description: "完成效果:1. moviepilot 下载目录(可以不用)   如:/media/docker/moviepilot/downloads2. moviepilot 整理后的媒体库目录,同时也是 cd2..."
    host: www.nerocats.com
    favicon: https://www.nerocats.com/usr/uploads/logo/favicon.ico
    
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:08 · PVG 09:08 · LAX 18:08 · JFK 21:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.