本文通过 Docker Compose
方式部署 Alist
,在 VPS
使用 WebDAV
本地挂载,同时通过 Auto_Symlink
生成 strm
文件加快 Emby
扫库速度,最后通过 MediaLinker
使 Emby
使用网盘直链播放。
重要
由于 Alist 已经被卖,请谨慎使用,或者使用社区 fork 再开发版。
前言
本文的适用对象:
VPS
部署Emby
- 网盘存放影视资源
- 部署
Alist
- 影视资源已刮削完毕
家庭 NAS
用户可适当参考。
提示
文中所有的容器都使用 docker compose
方式部署,但并没有将所有项目放入同一个文件,这样方便选择性部署及调试,如果需要放入同一文件,挂载时注意各个容器内文件的映射路径。
用到的项目地址:
部署 Alist
Alist
是一个可以将网盘集中到一个程序展示的应用,同时支持 WebDav
,本文通过 docker
部署,部署后自行添加存储,同时在 设置-全局
中关闭 签名所有
选项。
注意
文章都使用 docker compose
部署容器。
创建配置文件:
mkdir -p /opt/alist && cd /opt/alist && vim compose.yaml
添加 docker
配置:
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
文件所在目录 :
docker compose up -d
# 初始化账号密码
docker exec -it alist ./alist admin 你的密码
部署完成后访问 http://ip:5244
添加相应的存储即可。
本地挂载 Alist
部署后需要将 Alist
挂载到本地,以便媒体服务器 Emby
等扫描媒体文件,Alist
支持 WebDav
,可以使用 CloudDrive2
或者 Rclone
挂载,这里使用 Rclone
。
首先安装 fuse3
,然后安装 Rclone
。
# 安装依赖
apt-get install fuse3
# 安装 rclone
curl https://rclone.org/install.sh | sudo bash
接下来输入 rclone config
添加本地网盘,选择 WebDAV
。
# 选择新远程
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退出设置
输入对应的信息后,验证是否挂载成功(第二个命令慎用):
# 查看alist的目录
rclone lsd alist:
# 查看alist的文件
rclone ls alist:
挂载命令:
rclone mount rclone添加的名称:/ /本地挂载地址 --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty --daemon
解除挂载:
# 解除本地挂载,后面跟的是挂载的本地目录
fusermount -qzu /alist
开机自动挂载:
vim /usr/lib/systemd/system/rclone.service
粘贴下面的内容:
[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
systemctl daemon-reload
systemctl enable rclone.service
systemctl start rclone.service
部署 Auto_Symlink
此项目可以为挂载到本地的网盘文件创建软链接或者供 Emby
刮削的 strm
文件。
创建配置文件:
mkdir -p /opt/auto_symlink && cd /opt/auto_symlink && vim compose.yaml
添加 docker
配置:
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
界面添加对应的同步任务,选择对应的媒体目录及链接存放目录。
- 媒体目录:
compose
配置中映射到容器内的网盘路径,volume
下第三行配置。这里选择会选择到 auto_symlink 容器内的映射路径。 - 本地目录:
compose
配置中映射到容器内的链接存放路径,volume
下第二行配置,同样会选择到 auto_symlink 容器内的映射路径。生成链接文件后会将此文件夹下的内容映射到宿主机media/strm
文件夹下,可供Emby
等媒体服务器访问。
- 软链接模式:推荐使用
strm
,可以加速Emby
扫库。 - strm 模式:选择
cloud
后文件内是http
开头的链接。 - 挂载类型:这里选择
Alist
。 - alist 根目录:
Alist
挂载的根目录,例如我的Alist
网盘路径中该选择/Alist
。这里仍然是映射到容器的文件夹。
AList
├── E5
└── 阿里云盘
其余选项按需添加,保存后在 全局设置-手动同步
开启链接生成,可以在 查看日志
中看到进程,最后生成的链接会映射到 compose
配置中第二行 volumes
冒号左侧的文件夹,本文中的配置是 /media/strm
。
注意
可以到对应的目录中选择一个 strm
文件打开,将其中的链接放入浏览器,如果出现下载视频任务,说明链接获取成功。
部署 Emby
Emby 可以使用官方的镜像,本文使用特别版。
创建目录及 compose
文件:
mkdir -p /opt/emby && cd /opt/emby && vim compose.yml
添加 docker
配置:
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
下选择,勾选下面两个选项:
- 启用实时监控
- 元数据读取器-NFO
添加后 Emby
会很快扫库完成,此时就可以正常使用 Emby
,不过此时观看使用的都是服务器流量,如果想要观看是使用网盘链接访问资源,就需要下面的项目。
部署 MediaLinker
首先关闭 Emby
用户的转码权限,在 Emby-设置-用户编辑
,将 如有必要,在媒体播放期间允许视频转码
选项关闭,拉到最下方保存。
接下来在 播放-视频
中,将 互联网质量
拉到最大。
然后部署项目,此项目是 emby2Alist 的整合版。
mkdir -p /opt/medialinker && cd /opt/medialinker && vim compose.yml
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"
配置证书脚本:
vim /opt/medialinker/config/ssl
粘贴下面的内容,并更改对应的参数配置,DNS 配置:参考地址
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
文件,在其中修改对应的参数,配置中有详细的解释。修改后可以运行下面的命令重新部署容器:
cd /opt/medialinker
docker compose down
docker compose up -d
完成后访问 https://SSL_DOMAIN:NGINX_SSL_PORT
即可访问 Emby
,即 compose
文件中设置的参数。
单 compose 文件参考
创建文件夹及 compose
文件:
cd /opt && mkdir -p {alist,auto_symlink,medialinker,emby} && vim compose.yml
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
配置文件及证书脚本文件:
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
。
完成后运行容器:
cd /opt && docker compose up -d
评论