2026-05-26T10:42

AList + rclone + Jellyfin(百度网盘)最简完整指南

AList + rclone + Jellyfin未工程化优化版本

874 words
30 sections

AList + rclone + Jellyfin(百度网盘)最简完整指南

目标:

百度网盘
AList(WebDAV + 本地代理)
rclone mount
Jellyfin

适用于:

小硬盘服务器
百度网盘 SVIP
Jellyfin 影视库

1. Docker 目录结构

/root/docker/
├── alist
│   └── docker-compose.yml
└── jellyfin
    └── docker-compose.yml

2. AList 配置

docker-compose.yml

路径:

/root/docker/alist/docker-compose.yml

内容:

version: '3.8'

services:
  openlist:
    image: xhofe/alist:latest
    container_name: openlist
    restart: always

    ports:
      - "127.0.0.1:5244:5244"

    volumes:
      - ./openlist_data:/opt/alist/data

启动:

cd /root/docker/alist
docker compose up -d

3. 配置百度网盘

打开:

http://服务器IP:5244

进入:

管理 → 存储 → 添加存储 → 百度网盘

完成登录授权。


4. 关键配置(最重要)

进入:

管理 → 存储 → 百度网盘 → 编辑

必须:

开启 本地代理 / Proxy

不要:

302 Redirect

否则会出现:

31362 sign error
403 Forbidden

这是最核心的问题。


5. 安装 rclone

Debian / Ubuntu:

apt update
apt install -y rclone fuse3

6. 开启 FUSE allow_other

编辑:

nano /etc/fuse.conf

取消注释:

user_allow_other

7. 配置 rclone

执行:

rclone config

配置:

n
name> alist-baidu

Storage> webdav

url> http://127.0.0.1:5244/dav/

vendor> other

user> AList用户名
pass> AList密码

测试:

rclone lsd alist-baidu:

能看到:

百度网盘
本地

即可。


8. 创建挂载目录

mkdir -p /mnt/alist-baidu
mkdir -p /srv/rclone-cache/alist-baidu

9. 手动挂载测试

服务器配置:

磁盘剩余:20GB
内存:4GB

推荐参数:

rclone mount alist-baidu:/ /mnt/alist-baidu \
  --allow-other \
  --vfs-cache-mode full \
  --vfs-cache-max-size 8G \
  --vfs-cache-max-age 24h \
  --vfs-read-chunk-size 16M \
  --vfs-read-chunk-size-limit 128M \
  --buffer-size 16M \
  --dir-cache-time 6h \
  --poll-interval 0 \
  --cache-dir /srv/rclone-cache/alist-baidu \
  --transfers 2 \
  --checkers 4 \
  --umask 022 \
  --read-only \
  --log-level INFO

新开 SSH 测试:

ls -lah /mnt/alist-baidu

10. Jellyfin 配置

路径:

/root/docker/jellyfin/docker-compose.yml

内容:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host

    volumes:
      - /root/docker/jellyfin/config:/config
      - /root/docker/jellyfin/cache:/cache
      - /root/docker/jellyfin/log:/log

      # 本地媒体
      - /root/docker/jellyfin/media:/media

      # rclone 挂载
      - /mnt/alist-baidu:/media/cloud:ro,rslave

      # 转码目录
      - /root/docker/jellyfin/transcodes:/transcodes

    environment:
      - TZ=Asia/Shanghai

    restart: unless-stopped

创建目录:

mkdir -p /root/docker/jellyfin/transcodes

启动:

cd /root/docker/jellyfin
docker compose up -d

测试:

docker exec -it jellyfin ls -lah /media/cloud

能看到:

百度网盘
本地

即可。


11. Jellyfin 添加媒体库

进入:

控制台 → 媒体库 → 添加媒体库

不要添加:

/media/cloud

只添加具体目录,例如:

/media/cloud/百度网盘/影视/电影
/media/cloud/百度网盘/影视/电视剧

12. Jellyfin 必关选项

媒体库设置:

关闭 实时监控
关闭 视频预览缩略图
关闭 Trickplay
关闭 章节图提取

否则云盘会非常卡。


13. 判断是否正常

播放时查看:

控制台 → 活动

理想状态:

Direct Play

不是:

Transcoding

14. 常见问题

问题 1:Jellyfin 看不到目录

解决:

docker restart jellyfin

因为 rclone mount 要先于 Jellyfin。


问题 2:31362 sign error / 403

原因:

百度网盘未开启本地代理

解决:

AList → 百度网盘存储 → 开启 Proxy

问题 3:拖进度条慢

正常。

原因:

百度网盘是远程读取

缓解:

增大 rclone cache
尽量 Direct Play
不要播放高码率 REMUX

15. systemd 开机自启(最终)

创建:

nano /etc/systemd/system/rclone-alist-baidu.service

内容:

[Unit]
Description=Rclone Mount AList Baidu
After=network-online.target docker.service

[Service]
Type=simple

ExecStart=/usr/bin/rclone mount alist-baidu:/ /mnt/alist-baidu \
  --config /root/.config/rclone/rclone.conf \
  --allow-other \
  --vfs-cache-mode full \
  --vfs-cache-max-size 8G \
  --vfs-cache-max-age 24h \
  --vfs-read-chunk-size 16M \
  --vfs-read-chunk-size-limit 128M \
  --buffer-size 16M \
  --dir-cache-time 6h \
  --poll-interval 0 \
  --cache-dir /srv/rclone-cache/alist-baidu \
  --transfers 2 \
  --checkers 4 \
  --umask 022 \
  --read-only

ExecStop=/bin/fusermount3 -uz /mnt/alist-baidu

Restart=on-failure

[Install]
WantedBy=multi-user.target

启动:

systemctl daemon-reload
systemctl enable --now rclone-alist-baidu.service

自动清理 rclone 缓存脚本:

#!/usr/bin/env bash
set -e

systemctl stop rclone-alist-baidu.service || true
fusermount3 -uz /mnt/alist-baidu || fusermount -uz /mnt/alist-baidu || true

rm -rf /srv/rclone-cache/alist-baidu/*

systemctl start rclone-alist-baidu.service
docker restart jellyfin

df -h
du -sh /srv/rclone-cache/alist-baidu || true

百度网盘添加剧集后:

systemctl restart rclone-alist-baidu.service
docker restart jellyfin

16. 重启后检查

ls -lah /mnt/alist-baidu

docker exec -it jellyfin ls -lah /media/cloud

如果 Jellyfin 看不到:

docker restart jellyfin

17. 最终推荐

适合:

1080p
普通 H.264/H.265
中低码率 4K

不推荐:

蓝光原盘
REMUX
100Mbps 高码率
频繁大跨度拖进度条

核心原则:

AList 必须开启本地代理
Jellyfin 只扫具体影视目录
rclone cache 不要过大
优先 Direct Play

18. 限速配置

换成 Linux 内核层限速:tc + CAKE。 它不管 Jellyfin、Nginx、Caddy,直接在服务器网卡出口整形,最接近“源头限速”。🧱

1. 确认出口网卡

ip route get 1.1.1.1

dev 后面的网卡名,例如:

dev eth0

下面假设网卡是 eth0


2. 安装 tc

Debian / Ubuntu:

apt update
apt install -y iproute2

3. 删除旧规则

tc qdisc del dev eth0 root 2>/dev/null || true

4. 设置出口总带宽 + 按目标 IP 公平分配

你的服务器是 20Mbps,建议限制到 18Mbps,留一点余量:

tc qdisc replace dev eth0 root cake bandwidth 18mbit besteffort dual-dsthost

效果:

1 个人看:最多可用接近 18Mbps
2 个人看:大约每人 9Mbps
3 个人看:大约每人 6Mbps

这比 Nginx 更稳,因为它在网卡出口层面生效。


5. 验证

播放时查看:

tc -s qdisc show dev eth0

看是否有流量统计增长。

也可以看实时带宽:

apt install -y nload
nload eth0

6. 开机自启

创建:

nano /etc/systemd/system/tc-cake-egress.service

内容:

[Unit]
Description=CAKE egress shaping
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/bin/bash -c 'tc qdisc del dev eth0 root 2>/dev/null || true; tc qdisc replace dev eth0 root cake bandwidth 18mbit besteffort dual-dsthost'
ExecStop=/bin/bash -c 'tc qdisc del dev eth0 root 2>/dev/null || true'

[Install]
WantedBy=multi-user.target

启用:

systemctl daemon-reload
systemctl enable --now tc-cake-egress.service

重要前提

Cloudflare 必须是:

DNS only / 灰色云朵

如果走 Cloudflare 橙色云朵,服务器看到的目标 IP 主要是 Cloudflare 节点,不是真实用户,按用户公平分配会失效。

这是更接近生产里的“出口整形”。