Emby加快扫库并使用直链播放
本文通过 Docker Compose
方式部署 Alist
,在 VPS
使用 WebDAV
本地挂载,同时通过 Auto_Symlink
生成 strm
文件加快 Emby
扫库速度,最后通过 MediaLinker
使 Emby
使用网盘直链播放。
前言
本文的适用对象:
VPS
部署Emby
- 网盘存放影视资源
- 部署
Alist
- 影视资源已刮削完毕
家庭 NAS
用户可适当参考。
Tip文中所有的容器都使用
docker compose
方式部署,但并没有将所有项目放入同一个文件,这样方便选择性部署及调试,如果需要放入同一文件,挂载时注意各个容器内文件的映射路径。
用到的项目地址:
部署 Alist
Alist
是一个可以将网盘集中到一个程序展示的应用,同时支持 WebDav
,本文通过 docker
部署,部署后自行添加存储,同时在 设置-全局
中关闭 签名所有
选项。
Note文章都使用
docker compose
部署容器。
创建配置文件:
1mkdir -p /opt/alist && cd /opt/alist && vim compose.yaml
添加 docker
配置:
1version: '3.3'
2services:
3 alist:
4 image: 'xhofe/alist:latest'
5 container_name: alist
6 volumes:
7 - './alist_data:/opt/alist/data'
8 ports:
9 - '5244:5244'
10 environment:
11 - PUID=0
12 - PGID=0
13 - UMASK=022
14 restart: unless-stopped
启动容器,需要在 compose
文件所在目录 :
1docker compose up -d
2# 初始化账号密码
3docker exec -it alist ./alist admin 你的密码
部署完成后访问 http://ip:5244
添加相应的存储即可。
本地挂载 Alist
部署后需要将 Alist
挂载到本地,以便媒体服务器 Emby
等扫描媒体文件,Alist
支持 WebDav
,可以使用 CloudDrive2
或者 Rclone
挂载,这里使用 Rclone
。
首先安装 fuse3
,然后安装 Rclone
。
1# 安装依赖
2apt-get install fuse3
3# 安装 rclone
4curl https://rclone.org/install.sh | sudo bash
接下来输入 rclone config
添加本地网盘,选择 WebDAV
。
1# 选择新远程
2No remotes found, make a new one?
3n) New remote
4s) Set configuration password
5q) Quit config
6n/s/q> n #这里选择n
7
8# 设置名字
9name> remote
10Type of storage to configure.
11Choose a number from below, or type in your own value
12[snip]
13XX / WebDAV
14 \ "webdav"
15[snip]
16Storage> alist #这里输入远程的名字,之后就是你的远程名称
17
18# 设置远程地址url http://your_alist_ip:port/dav
19URL of http host to connect to
20Choose a number from below, or type in your own value
21 1 / Connect to example.com
22 \ "https://example.com"
23url> http://127.0.0.1:5244/dav #这里设置alist的地址和端口,后面要带dav,这是alist要求的
24
25# 这里选6就可以了,1-5都不是我们使用的
26Name of the WebDAV site/service/software you are using
27Choose a number from below, or type in your own value
28 1 / Fastmail Files
29 \ (fastmail)
30 2 / Nextcloud
31 \ (nextcloud)
32 3 / Owncloud
33 \ (owncloud)
34 4 / Sharepoint Online, authenticated by Microsoft account
35 \ (sharepoint)
36 5 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
37 \ (sharepoint-ntlm)
38 6 / Other site/service or software
39 \ (other)
40vendor> 6
41
42# 设置远程账号
43User name
44user> admin #这里是你alist的密码
45
46# 设置远程密码
47Password.
48y) Yes type in my own password
49g) Generate random password
50n) No leave this optional password blank
51y/g/n> y #这里输入y
52Enter the password: #这输入你的密码,密码是看不到的
53password:
54Confirm the password: #再次输入你的密码
55password:
56
57# 这里直接回车即可
58Bearer token instead of user/pass (e.g. a Macaroon)
59bearer_token>
60Remote config
61
62# 这里可能会问你是默认还是高级,选择默认即可
63
64# 你的远程信息
65--------------------
66[remote]
67type = webdav
68url = http://127.0.0.1:5244/dav
69vendor = Other
70user = admin
71pass = *** ENCRYPTED ***
72--------------------
73
74# 确认
75y) Yes this is OK
76e) Edit this remote
77d) Delete this remote
78y/e/d> y #输入y即可,
79
80# 最后按q退出设置
输入对应的信息后,验证是否挂载成功(第二个命令慎用):
1# 查看alist的目录
2rclone lsd alist:
3
4# 查看alist的文件
5rclone ls alist:
挂载命令:
1rclone mount rclone添加的名称:/ /本地挂载地址 --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --daemon
解除挂载:
1# 解除本地挂载,后面跟的是挂载的本地目录
2fusermount -qzu /alist
开机自动挂载:
1vim /usr/lib/systemd/system/rclone.service
粘贴下面的内容:
1[Unit]
2Description=rclone
3Before=docker.service
4
5[Service]
6User=root
7ExecStart=/usr/bin/rclone mount rclone添加的名称:/ /本地挂载地址 --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --daemon
8
9[Install]
10WantedBy=multi-user.target
1systemctl daemon-reload
2systemctl enable rclone.service
3systemctl start rclone.service
部署 Auto_Symlink
此项目可以为挂载到本地的网盘文件创建软链接或者供 Emby
刮削的 strm
文件。
创建配置文件:
1mkdir -p /opt/auto_symlink && cd /opt/auto_symlink && vim compose.yaml
添加 docker
配置:
1version: '3.9'
2services:
3 auto_symlink:
4 image: 'shenxianmq/auto_symlink:latest'
5 restart: unless-stopped
6 user: '0:0'
7 ports:
8 - '8095:8095'
9 volumes:
10 - './config:/app/config' # auto_symlink 配置映射路径,右侧不能修改
11 - '/media/strm:/strm' # 软链接或者 strm 文件映射路径,左右都可修改
12 - '/alist:/alist:rslave' # 挂载到本地的网盘路径映射到容器内,第一个冒号左右侧要完全一致,第二个冒号右侧后不需要修改
13 environment:
14 - TZ=Asia/Shanghai
15 container_name: auto_symlink
运行容器后访问 http://ip:8095
可以访问程序界面,默认账户密码为:admin
, password
。
在 Web
界面添加对应的同步任务,选择对应的媒体目录及链接存放目录。
- 媒体目录:
compose
配置中映射到容器内的网盘路径,volume
下第三行配置。这里选择会选择到 auto_symlink 容器内的映射路径。 - 本地目录:
compose
配置中映射到容器内的链接存放路径,volume
下第二行配置,同样会选择到 auto_symlink 容器内的映射路径。生成链接文件后会将此文件夹下的内容映射到宿主机media/strm
文件夹下,可供Emby
等媒体服务器访问。
- 软链接模式:推荐使用
strm
,可以加速Emby
扫库。 - strm 模式:选择
cloud
后文件内是http
开头的链接。 - 挂载类型:这里选择
Alist
。 - alist 根目录:
Alist
挂载的根目录,例如我的Alist
网盘路径中该选择/Alist
。这里仍然是映射到容器的文件夹。
1AList
2├── E5
3└── 阿里云盘
其余选项按需添加,保存后在 全局设置-手动同步
开启链接生成,可以在 查看日志
中看到进程,最后生成的链接会映射到 compose
配置中第二行 volumes
冒号左侧的文件夹,本文中的配置是 /media/strm
。
Note可以到对应的目录中选择一个
strm
文件打开,将其中的链接放入浏览器,如果出现下载视频任务,说明链接获取成功。
部署 Emby
Emby 可以使用官方的镜像,本文使用特别版。
创建目录及 compose
文件:
1mkdir -p /opt/emby && cd /opt/emby && vim compose.yml
添加 docker
配置:
1version: "3.3"
2services:
3 emby:
4 network_mode: bridge
5 ports:
6 - '8096:8096'
7 - '8920:8920'
8 volumes:
9 - ./config:/config
10 - /media/strm:/strm # 将auto_symlink 生成的链接文件夹映射到 emby 容器内
11 environment:
12 - TZ=Asia/Shanghai
13 - UID=0
14 - GID=0
15 - GIDLIST=0
16 restart: always
17 container_name: embyserver
18 image: lovechen/embyserver:latest
部署完成后添加媒体库时媒体文件路径在容器 /strm
下选择,勾选下面两个选项:
- 启用实时监控
- 元数据读取器-NFO
添加后 Emby
会很快扫库完成,此时就可以正常使用 Emby
,不过此时观看使用的都是服务器流量,如果想要观看是使用网盘链接访问资源,就需要下面的项目。
部署 MediaLinker
首先关闭 Emby
用户的转码权限,在 Emby-设置-用户编辑
,将 如有必要,在媒体播放期间允许视频转码
选项关闭,拉到最下方保存。
接下来在 播放-视频
中,将 互联网质量
拉到最大。
然后部署项目,此项目是 emby2Alist 的整合版。
1mkdir -p /opt/medialinker && cd /opt/medialinker && vim compose.yml
1version: '3'
2services:
3 medialinker:
4 restart: always
5 volumes:
6 - './config/:/opt/' # 配置文件映射,右侧不要修改
7 environment:
8 - AUTO_UPDATE=true
9 - SERVER=emby
10 - NGINX_PORT=8091
11 - NGINX_SSL_PORT=8095
12 - SSL_ENABLE=true
13 - SSL_CRON=0 3 * * *
14 - SSL_DOMAIN=yourdomain.com
15
16 container_name: medialinker
17 image: 'thsrite/medialinker:latest'
18 network_mode: "host"
配置证书脚本:
1vim /opt/medialinker/config/ssl
粘贴下面的内容,并更改对应的参数配置,DNS 配置:参考地址
1CLOUDFLARE_DNS_API_TOKEN=apikey \
2/lego --email CF邮箱账号 --dns cloudflare --domains "${SSL_DOMAIN}" --accept-tos run
完成后在 /opt/medialinker
目录运行 docker compose up -d
部署容器,部署后会生成 /opt/medialinker/config/constant.js
文件,在其中修改对应的参数,配置中有详细的解释。修改后可以运行下面的命令重新部署容器:
1cd /opt/medialinker
2docker compose down
3docker compose up -d
完成后访问 https://SSL_DOMAIN:NGINX_SSL_PORT
即可访问 Emby
,即 compose
文件中设置的参数。
单 compose 文件参考
创建文件夹及 compose
文件:
1cd /opt && mkdir -p {alist,auto_symlink,medialinker,emby} && vim compose.yml
1version: '3.9'
2services:
3 alist:
4 container_name: alist
5 image: xhofe/alist:latest
6 volumes:
7 - /opt/alist/alist_data:/opt/alist/data
8 ports:
9 - '5244:5244'
10 environment:
11 - PUID=0
12 - PGID=0
13 - UMASK=022
14 restart: unless-stopped
15
16 auto_symlink:
17 container_name: auto_symlink
18 image: shenxianmq/auto_symlink:latest
19 restart: unless-stopped
20 user: '0:0'
21 ports:
22 - '8095:8095'
23 volumes:
24 - /opt/auto_symlink/config:/app/config
25 - /media/strm:/strm
26 - /alist:/alist:rslave
27 environment:
28 - TZ=Asia/Shanghai
29
30 medialinker:
31 container_name: medialinker
32 image: thsrite/medialinker:latest
33 restart: always
34 volumes:
35 - /opt/medialinker/config:/opt/
36 environment:
37 - AUTO_UPDATE=true
38 - SERVER=emby
39 - NGINX_PORT=8091
40 - NGINX_SSL_PORT=8094
41 - SSL_ENABLE=true
42 - SSL_CRON=0 3 * * *
43 - SSL_DOMAIN=yourdomain.com
44 network_mode: "host"
45
46 emby:
47 container_name: embyserver
48 image: lovechen/embyserver:latest
49 network_mode: bridge
50 ports:
51 - '8096:8096'
52 - '8920:8920'
53 volumes:
54 - /opt/emby/config:/config
55 - /media/strm:/strm
56 environment:
57 - TZ=Asia/Shanghai
58 - UID=0
59 - GID=0
60 - GIDLIST=0
61 restart: always
下载 medialinker
配置文件及证书脚本文件:
1wget -O /opt/medialinker/config/constant.js https://raw.githubusercontent.com/thsrite/MediaLinker/refs/heads/main/config/emby/constant.js
2wget -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
。
完成后运行容器:
1cd /opt && docker compose up -d
参考
文章标题: Emby加快扫库并使用直链播放
文章链接: https://blog.grew.cc/posts/emby-alist-direct-link/
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0。