Skip to content

Centos中使用Alist和qBittorrent(Docker)实现离线下载

本人在哔哩哔哩撰写发布此文,图片改日再搬(我懒)

求个三连。。

Centos中使用Alist和qBittorrent(Docker)实现离线下载 – 哔哩哔哩 (bilibili.com)

*标题中“Docker”所指为仅qBittorrent使用Docker部署,而Alist位于宿主机中。
*本文着重解决由于Alist每次重启时都将temp(alist本地缓存目录)用户&用户组设置为root:root,权限设置为755,导致位于容器中的qBittorrent无法对其读写的问题(webui提示下载错误)

一、安装Alist

有手就行自行百度或查看官方文档[安装]

后按自身需求参照文档自定修改配置文件

# 附一键脚本(官)curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install

二、Docker部署qBittorrent

1、创建&运行容器

运行以下命令即可

注意按需修改相关参数

挂载temp目录时,请务必直接挂载alist的temp目录而不是temp/qbittorrent,当主机中qbittorrent目录未创建时,下载同样 报错

# 设置环境变量# QBT_VERSION qbit版本,默认latest(最新)# QBT_WEBUI_PORT qbit webui端口(网页管理)# QBT_CONFIG_PATH 存储qbit配置文件的目录# QBT_DOWNLOADS_PATH qbit默认下载位置(宿主机)# QBT_ALIST_TEMP alist的temp目录export \QBT_EULA=accept \QBT_VERSION=latest \PAGID=0 \PGID=0 \PUID=0 \QBT_WEBUI_PORT= \QBT_CONFIG_PATH="" \QBT_DOWNLOADS_PATH="" \QBT_ALIST_TEMP=""docker run \  -t \  --restart=always \  --privileged=true \  --name qbittorrent-nox \  --stop-timeout 1800 \  --tmpfs /tmp \  -e QBT_EULA \  -e QBT_WEBUI_PORT \  -e PAGID=0 \  -e PGID=0 \  -e PUID=0 \  -p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT"/tcp \  -p 6881:6881/tcp \  -p 6881:6881/udp \  -v "$QBT_CONFIG_PATH":/config \  -v "$QBT_DOWNLOADS_PATH":/downloads \  -v "$QBT_ALIST_TEMP":"$QBT_ALIST_TEMP" \  qbittorrentofficial/qbittorrent-nox:${QBT_VERSION}

2、更改账密

登录webui,地址:http://容器宿主机ip:环境变量中设置的QBT_WEBUI_PORT

默认账户:admin

默认密码:adminadmin

设置完后拨动滚轮向下翻,点击最下面的保存即可

三、设置Alist

访问 http://alist域名或ip:端口/@manage/settings/other

在这里填写http(s)://qbit用户名:qbit密码@qbit宿主机ip:qbit端口/

点击设置qBittorrent,右上角出现下图气泡即为设置成功

完成后就可以在离线下载页面选择qBittorrent下载了

四、错误分析与解决

UP目前只遇到了这个问题,所以只阐述该问题的现象和解决办法(上文部署qbit的步骤已经规避了该问题)

*挂载temp目录时,请务必直接挂载alist的temp目录而不是temp/qbittorrent,当主机中qbittorrent目录未创建时,下载同样 报错

若按qb官方提供的命令进行部署 (挂载alsit的temp)

export \  QBT_EULA=<put_accept_here> \  QBT_VERSION=devel \  QBT_WEBUI_PORT=8080 \  QBT_CONFIG_PATH="<your_path>/config" \  QBT_DOWNLOADS_PATH="<your_path>/downloads" \  QBT_ALIST_TEMP="/data/alist/temp"docker run \  -t \  --name qbittorrent-nox \  --read-only \  --rm \  --stop-timeout 1800 \  --tmpfs /tmp \  -e QBT_EULA \  -e QBT_WEBUI_PORT \  -e TZ=UTC \  -p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT"/tcp \  -p 6881:6881/tcp \  -p 6881:6881/udp \  -v "$QBT_CONFIG_PATH":/config \  -v "$QBT_DOWNLOADS_PATH":/downloads \  -v "$QBT_ALIST_TEMP":"$QBT_ALIST_TEMP" \  qbittorrent-nox:"$QBT_VERSION"

qbit进程将以qbtUser用户运行,id为1000

主机中id=1000的用户为www,但temp目录owner为root,权限为755,造成不可写

尝试调整权限为775后正常,但重启alist后该目录权限又被改回755,此路不通

于是在创建qBittorrent容器时,加入以下环境变量:

  -e PAGID=0 \  -e PGID=0 \  -e PUID=0 \

即设置容器中qbtUser用户的uid,gid为主机中的root 的uid,gid(具体参见docker-qBittorrent-nox中entrypoint.sh)同时删除容器的只读属性(不删貌似改不了)

启动即可见

解决问题

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据