Emby加快扫库并使用直链播放

本文通过 Docker Compose 方式部署 Alist ,在 VPS 使用 WebDAV 本地挂载,同时通过 Auto_Symlink 生成 strm 文件加快 Emby 扫库速度,最后通过 MediaLinker 使 Emby 使用网盘直链播放。

前言

本文的适用对象:

家庭 NAS 用户可适当参考。

用到的项目地址:

部署 Alist

Alist 是一个可以将网盘集中到一个程序展示的应用,同时支持 WebDav,本文通过 docker 部署,部署后自行添加存储,同时在 设置-全局 中关闭 签名所有 选项。

创建配置文件:

BASH
mkdir -p /opt/alist && cd /opt/alist && vim compose.yaml
点击展开查看更多

添加 docker 配置:

YAML
version: '3.3'
services:
    alist:
        image: 'xhofe/alist:latest'
        container_name: alist
        volumes:
            - './alist_data:/opt/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        restart: unless-stopped
点击展开查看更多

启动容器,需要在 compose 文件所在目录 :

BASH
docker compose up -d
# 初始化账号密码
docker exec -it alist ./alist admin 你的密码
点击展开查看更多

部署完成后访问 http://ip:5244 添加相应的存储即可。

本地挂载 Alist

部署后需要将 Alist 挂载到本地,以便媒体服务器 Emby 等扫描媒体文件,Alist 支持 WebDav,可以使用 CloudDrive2 或者 Rclone 挂载,这里使用 Rclone

首先安装 fuse3 ,然后安装 Rclone

BASH
# 安装依赖
apt-get install fuse3
# 安装 rclone
curl https://rclone.org/install.sh | sudo bash
点击展开查看更多

接下来输入 rclone config 添加本地网盘,选择 WebDAV

BASH
# 选择新远程
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n #这里选择n

# 设置名字
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / WebDAV
   \ "webdav"
[snip]
Storage> alist #这里输入远程的名字,之后就是你的远程名称

# 设置远程地址url http://your_alist_ip:port/dav
URL of http host to connect to
Choose a number from below, or type in your own value
 1 / Connect to example.com
   \ "https://example.com"
url> http://127.0.0.1:5244/dav #这里设置alist的地址和端口,后面要带dav,这是alist要求的

# 这里选6就可以了,1-5都不是我们使用的
Name of the WebDAV site/service/software you are using
Choose a number from below, or type in your own value
 1 / Fastmail Files
   \ (fastmail)
 2 / Nextcloud
   \ (nextcloud)
 3 / Owncloud
   \ (owncloud)
 4 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 5 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 6 / Other site/service or software
   \ (other)
vendor> 6

# 设置远程账号
User name
user> admin #这里是你alist的密码

# 设置远程密码
Password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> y #这里输入y
Enter the password: #这输入你的密码,密码是看不到的
password:
Confirm the password: #再次输入你的密码
password:

# 这里直接回车即可
Bearer token instead of user/pass (e.g. a Macaroon)
bearer_token>
Remote config

# 这里可能会问你是默认还是高级,选择默认即可

# 你的远程信息
--------------------
[remote]
type = webdav
url = http://127.0.0.1:5244/dav
vendor = Other
user = admin
pass = *** ENCRYPTED ***
--------------------

# 确认
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y #输入y即可,

# 最后按q退出设置
点击展开查看更多

输入对应的信息后,验证是否挂载成功(第二个命令慎用):

BASH
# 查看alist的目录
rclone lsd alist:

# 查看alist的文件
rclone ls alist:
点击展开查看更多

挂载命令:

BASH
rclone mount rclone添加的名称:/ /本地挂载地址 --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --daemon
点击展开查看更多

解除挂载:

BASH
# 解除本地挂载,后面跟的是挂载的本地目录  
fusermount -qzu /alist
点击展开查看更多

开机自动挂载:

BASH
vim /usr/lib/systemd/system/rclone.service
点击展开查看更多

粘贴下面的内容:

YAML
[Unit] 
Description=rclone
Before=docker.service

[Service] 
User=root 
ExecStart=/usr/bin/rclone mount rclone添加的名称:/ /本地挂载地址 --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --daemon

[Install] 
WantedBy=multi-user.target
点击展开查看更多
BASH
systemctl daemon-reload
systemctl enable rclone.service
systemctl start rclone.service
点击展开查看更多

此项目可以为挂载到本地的网盘文件创建软链接或者供 Emby 刮削的 strm 文件。

创建配置文件:

BASH
mkdir -p /opt/auto_symlink && cd /opt/auto_symlink && vim compose.yaml
点击展开查看更多

添加 docker 配置:

YAML
version: '3.9'
services:
    auto_symlink:
        image: 'shenxianmq/auto_symlink:latest'
        restart: unless-stopped
        user: '0:0'
        ports:
            - '8095:8095'
        volumes:
            - './config:/app/config'  # auto_symlink 配置映射路径,右侧不能修改
            - '/media/strm:/strm'     # 软链接或者 strm 文件映射路径,左右都可修改
            - '/alist:/alist:rslave'  # 挂载到本地的网盘路径映射到容器内,第一个冒号左右侧要完全一致,第二个冒号右侧后不需要修改
        environment:
            - TZ=Asia/Shanghai
        container_name: auto_symlink
点击展开查看更多

运行容器后访问 http://ip:8095 可以访问程序界面,默认账户密码为:admin, password

Web 界面添加对应的同步任务,选择对应的媒体目录及链接存放目录。

BASH
AList
├── E5
└── 阿里云盘
点击展开查看更多

其余选项按需添加,保存后在 全局设置-手动同步 开启链接生成,可以在 查看日志 中看到进程,最后生成的链接会映射到 compose 配置中第二行 volumes 冒号左侧的文件夹,本文中的配置是 /media/strm

部署 Emby

Emby 可以使用官方的镜像,本文使用特别版。

创建目录及 compose 文件:

BASH
mkdir -p /opt/emby && cd /opt/emby && vim compose.yml
点击展开查看更多

添加 docker 配置:

YAML
version: "3.3"
services:
  emby:
      network_mode: bridge
      ports:
          - '8096:8096'
          - '8920:8920'
      volumes:
          - ./config:/config
          - /media/strm:/strm   # 将auto_symlink 生成的链接文件夹映射到 emby 容器内
      environment:
          - TZ=Asia/Shanghai
          - UID=0
          - GID=0
          - GIDLIST=0
      restart: always
      container_name: embyserver
      image: lovechen/embyserver:latest
点击展开查看更多

部署完成后添加媒体库时媒体文件路径在容器 /strm 下选择,勾选下面两个选项:

添加后 Emby 会很快扫库完成,此时就可以正常使用 Emby,不过此时观看使用的都是服务器流量,如果想要观看是使用网盘链接访问资源,就需要下面的项目。

部署 MediaLinker

首先关闭 Emby 用户的转码权限,在 Emby-设置-用户编辑,将 如有必要,在媒体播放期间允许视频转码 选项关闭,拉到最下方保存。

接下来在 播放-视频 中,将 互联网质量 拉到最大。

然后部署项目,此项目是 emby2Alist 的整合版。

BASH
mkdir -p /opt/medialinker && cd /opt/medialinker && vim compose.yml
点击展开查看更多
YAML
version: '3'
services:
    medialinker:
        restart: always
        volumes:
            - './config/:/opt/'  # 配置文件映射,右侧不要修改
        environment:
            - AUTO_UPDATE=true  
            - SERVER=emby
            - NGINX_PORT=8091
            - NGINX_SSL_PORT=8095
            - SSL_ENABLE=true
            - SSL_CRON=0 3 * * *
            - SSL_DOMAIN=yourdomain.com

        container_name: medialinker
        image: 'thsrite/medialinker:latest'
        network_mode: "host"
点击展开查看更多

配置证书脚本:

BASH
vim /opt/medialinker/config/ssl
点击展开查看更多

粘贴下面的内容,并更改对应的参数配置,DNS 配置:参考地址

BASH
CLOUDFLARE_DNS_API_TOKEN=apikey \
/lego --email CF邮箱账号 --dns cloudflare --domains "${SSL_DOMAIN}" --accept-tos run
点击展开查看更多

完成后在 /opt/medialinker 目录运行 docker compose up -d 部署容器,部署后会生成 /opt/medialinker/config/constant.js 文件,在其中修改对应的参数,配置中有详细的解释。修改后可以运行下面的命令重新部署容器:

BASH
cd /opt/medialinker
docker compose down
docker compose up -d
点击展开查看更多

完成后访问 https://SSL_DOMAIN:NGINX_SSL_PORT 即可访问 Emby,即 compose 文件中设置的参数。

单 compose 文件参考

创建文件夹及 compose 文件:

BASH
cd /opt && mkdir -p {alist,auto_symlink,medialinker,emby} && vim compose.yml
点击展开查看更多
YAML
version: '3.9'
services:
  alist:
    container_name: alist
    image: xhofe/alist:latest
    volumes:
      - /opt/alist/alist_data:/opt/alist/data
    ports:
      - '5244:5244'
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    restart: unless-stopped

  auto_symlink:
    container_name: auto_symlink
    image: shenxianmq/auto_symlink:latest
    restart: unless-stopped
    user: '0:0'
    ports:
      - '8095:8095'
    volumes:
      - /opt/auto_symlink/config:/app/config
      - /media/strm:/strm
      - /alist:/alist:rslave
    environment:
      - TZ=Asia/Shanghai

  medialinker:
    container_name: medialinker
    image: thsrite/medialinker:latest
    restart: always
    volumes:
      - /opt/medialinker/config:/opt/
    environment:
      - AUTO_UPDATE=true
      - SERVER=emby
      - NGINX_PORT=8091
      - NGINX_SSL_PORT=8094
      - SSL_ENABLE=true
      - SSL_CRON=0 3 * * *
      - SSL_DOMAIN=yourdomain.com
    network_mode: "host"

  emby:
    container_name: embyserver
    image: lovechen/embyserver:latest
    network_mode: bridge
    ports:
      - '8096:8096'
      - '8920:8920'
    volumes:
      - /opt/emby/config:/config
      - /media/strm:/strm
    environment:
      - TZ=Asia/Shanghai
      - UID=0
      - GID=0
      - GIDLIST=0
    restart: always
点击展开查看更多

下载 medialinker 配置文件及证书脚本文件:

PLAINTEXT
wget -O /opt/medialinker/config/constant.js https://raw.githubusercontent.com/thsrite/MediaLinker/refs/heads/main/config/emby/constant.js
wget -O /opt/medialinker/config/ssl https://raw.githubusercontent.com/thsrite/MediaLinker/refs/heads/main/config/ssl
点击展开查看更多

下载修改这两个文件中对应的配置,路径为 /opt/medialinker/config/constant.js/opt/medialinker/config/ssl

完成后运行容器:

BASH
cd /opt && docker compose up -d
点击展开查看更多

参考

版权声明

作者: Tom Almighty

链接: https://blog.grew.cc/posts/emby-alist-direct-link/

许可证: CC BY-NC-SA 4.0

本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

评论

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键