alist和jellyfin搭建影音库


安装alist和jellyfin

在Docker环境中让Jellyfin挂载AList中的夸克网盘,核心思路是让Jellyfin能够通过AList提供的WebDAV服务访问到夸克网盘里的文件。下面这张流程图清晰地展示了整个配置过程和组件间的协作关系,你可以先有个整体印象。接下来,我们分步详解这个过程。

346607b0c9a948

🔧 前提条件与准备

  1. 确保服务已运行:确认你的AList和Jellyfin都已经通过Docker正常启动并运行。 AList的Web界面通常为 http://你的服务器IP:5244。 Jellyfin的Web界面通常为 http://你的服务器IP:8096
  2. 规划网络模式:为了确保Jellyfin容器能够访问到AList容器,最简便的方法是让它们处于同一个自定义Docker网络中。如果使用默认的bridge网络,你可能需要使用--link参数或直接通过宿主机IP进行通信。

📥 在AList中挂载夸克网盘

这是最关键的一步,需要先在AList中正确添加夸克网盘存储。

  1. 登录AList管理后台:访问 http://你的服务器IP:5244/@manage,使用管理员账号密码登录。
  2. 添加存储: 点击左侧菜单的 “存储”。 点击 “添加存储”。 在驱动列表中选择 “夸克网盘”
  3. 配置夸克网盘:你需要填写以下关键信息: 挂载路径:这是该存储将在AList中显示的路径,例如 /quarkCookie(关键):夸克网盘需要通过Cookie进行认证。 获取方法:先登录网页版夸克网盘,然后按F12打开开发者工具,在 “网络”(Network) 标签页中找到一个请求(如包含sort?pr),复制其请求头中的 **Cookie**字段的全部内容。 其他选项如根文件夹ID等,通常保持默认(如root)即可。
  4. 保存并测试:点击“添加”,如果状态显示为“work”或“存储添加成功”,则说明夸克网盘已经挂载成功。
  5. 添加用户 :为了安全添加有webdav访问权限的一个用户。

🔗 在Jellyfin中配置媒体库

现在,你需要告诉Jellyfin去哪里找AList里的夸克网盘文件。

  1. 登录Jellyfin:访问 http://你的服务器IP:8096
  2. 添加媒体库: 以管理员身份登录后,进入 “控制台”。 点击 “媒体库”,然后点击 “添加媒体库”
  3. 设置媒体库内容内容类型:根据你夸克网盘中的内容选择,如“电影”、“电视剧”等。 显示名称:为你这个库取个名字,例如“夸克电影”。
  4. 添加文件夹(核心步骤):在“文件夹”部分,点击“+”号,这里jellyfin只支持本地文件。使用 Rclone 挂载 WebDAV 在后面实现。
  5. 完成向导:继续完成后续设置,如元数据语言等,然后保存媒体库。Jellyfin就会开始扫描AList提供的路径,并刮削影片信息生成海报墙。

⚠️ 重要提示与故障排查

  • 文件命名规范:确保你夸克网盘中的影视文件命名规范(如电影名 (年份).mkv),这对于Jellyfin准确刮削元数据至关重要。
  • 性能考虑:由于视频流需要经过AList中转,播放性能会受到你的网络带宽和服务器性能的影响。对于高清视频,确保网络畅通。
  • 权限问题:如果连接失败,检查AList的WebDAV设置,确保没有开启需要额外认证的只读模式等权限限制。
  • 路径验证:在Jellyfin中添加库前,可以先用支持WebDAV的客户端(如Windows的“映射网络驱动器”功能或RaiDrive)测试一下AList的WebDAV地址(http://你的服务器IP:5244/dav)是否能正常访问和浏览文件。

docker Compose 配置

version: '3.8'

services:
  # AList 服务 - 统一网盘管理
  alist:
    image: xhofe/alist:latest
    container_name: alist
    restart: unless-stopped
    ports:
      - "5244:5244"  # AList Web界面访问端口
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
    volumes:
      - ./alist/data:/opt/alist/data
      - ./alist/config:/opt/alist/config
    networks:
      - media-network  # 使用自定义网络

  # Jellyfin 服务 - 媒体服务器
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    ports:
      - "8096:8096"  # Jellyfin Web界面访问端口
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
      - JELLYFIN_PublishedServerUrl=http://你的服务器IP:8096
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - ./jellyfin/media:/media
    devices:
      - /dev/dri:/dev/dri
    networks:
      - media-network  # 使用相同的自定义网络
    depends_on:
      - alist

# 定义自定义网络
networks:
  media-network:
    driver: bridge
 

🚀 部署步骤

1. 停止并删除现有容器

# 进入docker-compose.yml所在目录
cd /path/to/your/docker-compose

# 停止并删除现有容器
docker-compose down

2. 重新启动服务

# 使用新配置启动
docker-compose up -d

Jellyfin 试图将 URL 路径当作本地文件系统路径处理,导致路径解析错误。根本原因是 Jellyfin 不支持直接使用 WebDAV URL 作为媒体库路径

🔧 终极解决方案:使用 Rclone 挂载 WebDAV

这是最可靠的方法,将 WebDAV 挂载为本地文件系统路径:

步骤1:在宿主机安装并配置 Rclone

# 安装 Rclone
curl https://rclone.org/install.sh | sudo bash

# 创建配置文件
mkdir -p ~/.config/rclone
cat > ~/.config/rclone/rclone.conf <<EOF
[alist]
type = webdav
url = http://localhost:5244/dav/
vendor = other
user = jellyfin
pass = ******  #自己修改
EOF

# 测试连接
rclone ls alist:quark

事实上是不可以的,因为rclone密码需要加密,所以通过 rclone config配置:

1.生成加密密码

# 运行 rclone 配置命令
rclone config

# 选择 "n" 创建新配置
n

# 输入名称 "alist"
name> alist

# 选择存储类型 "webdav"
Storage> webdav

# 输入 URL
url> http://localhost:5244/dav/

# 选择供应商 "other"
vendor> other

# 输入用户名
user> jellyfin

# 对于密码,选择 "y" 进行加密
Password:
y) Yes type in my own password

# 输入您的密码 (不会显示)
Enter password: 
Confirm password: 

# 其他选项保持默认

2:查看生成的加密密码

# 查看配置文件
cat ~/.config/rclone/rclone.conf

您会看到类似这样的配置:

[alist]
type = webdav
url = http://localhost:5244/dav/
vendor = other
user = jellyfin  #alist中添加的用户
pass = XG9iZGVkX2NX3dlX3RyeQ==  #这个加密后的密码可以用在其他配置中

步骤2:创建挂载点并挂载

# 创建挂载目录
sudo mkdir -p /mnt/alist

# 挂载 WebDAV
rclone mount alist: /mnt/alist --daemon --vfs-cache-mode full

# 验证挂载
ls -l /mnt/alist/quark

步骤3:修改 Docker Compose 配置

services:
  jellyfin:
    # ... 其他配置不变
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/alist:/media/alist:ro  # 添加这行

步骤4:在 Jellyfin 中添加媒体库

使用本地路径而不是 URL:

/media/alist/quark/

文章作者: Mealsee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mealsee !
  目录