Skip to content

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

*标题中“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、创建&运行容器

运行以下命令即可

注意按需修改相关参数

# 设置环境变量
# QBT_VERSION qbit版本,默认latest(最新)
# QBT_WEBUI_PORT qbit webui端口(网页管理)
# QBT_CONFIG_PATH 存储qbit配置文件的目录
# QBT_DOWNLOADS_PATH qbit默认下载位置(宿主机)
# QBT_ALIST_TEMP alist的temp/qbittorrent目录
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的步骤已经规避了该问题)

若按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/qbittorrent"

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来减少垃圾评论。了解我们如何处理您的评论数据