Giter Club home page Giter Club logo

docker-qbittorrent's Introduction

Latest Version Build Status Docker Stars Docker Pulls
Become a sponsor Donate Paypal

About

qBittorrent Docker image.

Tip

Want to be notified of new releases? Check out ๐Ÿ”” Diun (Docker Image Update Notifier) project!


Features

Build locally

git clone https://github.com/crazy-max/docker-qbittorrent.git
cd docker-qbittorrent

# Build image and output to docker (default)
docker buildx bake

# Build multi-platform image
docker buildx bake image-all

Image

Registry Image
Docker Hub crazymax/qbittorrent
GitHub Container Registry ghcr.io/crazy-max/qbittorrent

Following platforms for this image are available:

$ docker run --rm mplatform/mquery crazymax/qbittorrent:latest
Image: crazymax/qbittorrent:latest
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/v6
   - linux/arm/v7
   - linux/arm64

Environment variables

  • TZ: Timezone assigned to the container (default UTC)
  • PUID: qBittorrent user id (default 1000)
  • PGID: qBittorrent group id (default 1000)
  • WAN_IP: Public IP address reported to the tracker (default auto resolved with dig +short myip.opendns.com @resolver1.opendns.com)
  • WEBUI_PORT: WebUI port to be used (default 8080)
  • ALT_WEBUI: Enable alternative WebUI located in /data/webui (default false)

Volumes

  • /data: qBittorrent config, downloads, temp, torrents, watch, webui...

โš ๏ธ Note that the volumes should be owned by the user/group with the specified PUID and PGID. If you don't give the volume correct permissions, the container may not start.

Ports

  • 6881: DHT port
  • 8080: qBittorrent HTTP port

Usage

Docker Compose

Docker compose is the recommended way to run this image. You can use the following compose template, then run the container:

$ docker compose up -d
$ docker compose logs -f

Command line

You can also use the following minimal command:

$ docker run -d --name qbittorrent \
  --ulimit nproc=65535 \
  --ulimit nofile=32000:40000 \
  -p 6881:6881/tcp \
  -p 6881:6881/udp \
  -p 8080:8080 \
  -v $(pwd)/data:/data \
  crazymax/qbittorrent:latest

Upgrade

Recreate the container whenever I push an update:

docker compose pull
docker compose up -d

Notes

qBittorrent Web API

qBittorrent Web API can be used within this image using curl.

$ docker compose exec qbittorrent curl --fail http://127.0.0.1:8080/api/v2/app/version
v4.1.8

Change username and password

You can change the default username admin and password adminadmin through the API or WebUI.

docker compose exec qbittorrent curl --fail -X POST \
  -d 'json={"web_ui_username":"myuser","web_ui_password":"mypassword"}' \
  http://127.0.0.1:8080/api/v2/app/setPreferences

Watch torrents

You can configure the monitored folders on the qBittorrent interface:

Or through the API:

docker compose exec qbittorrent curl --fail -X POST \
  -d 'json={"scan_dirs":{"/data/watch": 1}}' \
  http://127.0.0.1:8080/api/v2/app/setPreferences

Contributing

Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a PayPal donation to ensure this journey continues indefinitely!

Thanks again for your support, it is much appreciated! ๐Ÿ™

License

MIT. See LICENSE for more details.

docker-qbittorrent's People

Contributors

adamrothman avatar crazy-max avatar dependabot[bot] avatar suika avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

docker-qbittorrent's Issues

entrypoint.sh creates recursive symlinks on subsequent starts (after first)

Behaviour

Steps to reproduce this issue

  1. Pull crazymax/qbittorrent:latest
  2. Start a container
  3. Restart the container
  4. Observe recursive symlinks /data/config/config -> /data/config and /data/data/data -> /data/data
# docker exec test_qbittorrent_1 ls -ahl /data/config
total 26M
drwxrwxr-x    1 qbittorr qbittorr     114 Mar 10 22:18 .
drwxrwxr-x    1 qbittorr qbittorr      82 Mar  8 23:16 ..
-rwxr-xr-x    1 root     root       26.2M Mar  8 00:00 biglist.p2p
lrwxrwxrwx    1 root     root          12 Mar 10 22:18 config -> /data/config
-rwxrwxrwx    1 qbittorr qbittorr     196 Mar 10 22:15 qBittorrent-data.conf
-rwxrwxrwx    1 qbittorr qbittorr    2.5K Mar 10 22:18 qBittorrent.conf
drwxrwxr-x    1 qbittorr qbittorr      44 Mar 10 22:18 rss

# docker exec test_qbittorrent_1 ls -ahl /data/data
total 4K
drwxrwxr-x    1 qbittorr qbittorr      52 Mar 10 22:18 .
drwxrwxr-x    1 qbittorr qbittorr      82 Mar  8 23:16 ..
drwxrwxr-x    1 qbittorr qbittorr   18.8K Mar 10 22:18 BT_backup
drwxrwxr-x    1 qbittorr qbittorr      44 Mar  3 23:26 GeoDB
lrwxrwxrwx    1 root     root          10 Mar 10 22:18 data -> /data/data
drwxrwxr-x    1 qbittorr qbittorr     158 Mar 10 02:18 nova3
drwxrwxr-x    1 qbittorr qbittorr      16 Mar  3 23:26 rss

Expected behaviour

Based on reading these lines:

ln -s /data/config "${QBITTORRENT_HOME}/.config/qBittorrent"
ln -s /data/data "${QBITTORRENT_HOME}/.local/share/qBittorrent"

I expect the script to create a link at /home/qbittorrent/.config/qBittorrent -> /data/config (it does):

# docker exec test_qbittorrent_1 ls -ahl /home/qbittorrent/.config
total 4K     
drwxr-sr-x    1 qbittorr qbittorr      22 Mar 10 21:17 .
drwxr-sr-x    1 qbittorr qbittorr      38 Mar 10 21:17 ..
lrwxrwxrwx    1 qbittorr qbittorr      12 Mar 10 21:17 qBittorrent -> /data/config

I also expect the script to create a link at /home/qbittorrent/.local/share/qBittorrent -> /data/data (it does):

# docker exec test_qbittorrent_1 ls -ahl /home/qbittorrent/.local/share
total 4K     
drwxr-sr-x    1 qbittorr qbittorr      22 Mar 10 21:17 .
drwxr-sr-x    1 qbittorr qbittorr      10 Mar 10 21:17 ..
lrwxrwxrwx    1 qbittorr qbittorr      10 Mar 10 21:17 qBittorrent -> /data/data

These should be the only links created.

Actual behaviour

Because the ln commands highlighted above are executed without first checking whether the destination already exists (unlike the preceding mkdir -p), restarting the container results in the creation of the recursive links described above.

When the container is restarted, the entrypoint script has already run once. Thus /home/qbittorrent/.config/qBittorrent already exists and is already a symlink to /data/config. When the ln command is run a second time, it creates another link โ€“ this time inside the existing linked directory.

The same is true for the other symlink.

Configuration

  • Docker version (type docker --version) : Docker version 18.09.8, build bfed4f5
  • Docker compose version if applicable (type docker-compose --version) : docker-compose version 1.24.0, build 0aa59064
  • Platform (Debian 9, Ubuntu 18.04, ...) : Synology DSM 6.2.3-25426 Update 3
  • System info (type uname -a) : Linux TARS 3.10.105 #25426 SMP Mon Dec 14 18:47:29 CST 2020 x86_64 GNU/Linux synology_avoton_rs2416+

Here's the relevant excerpt from my compose file:

docker-compose.yml
version: '3'

services:
  qbittorrent:
    depends_on:
      - nginx
    environment:
      ALT_WEBUI: 'false'
      PUID: '1044'
      PGID: '65538'
      TZ: America/Los_Angeles
    image: crazymax/qbittorrent
    networks:
      - tarsnet
    ports:
      - 'XXX:6881/tcp' # redacted
      - 'XXX:6881/udp' # redacted
    restart: always
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    volumes:
      - /volume1/docker/qbittorrent:/data
      - /volume1/Media/Downloads:/data/downloads

Docker info

# docker info
Containers: 4
 Running: 4
 Paused: 0
 Stopped: 0
Images: 34
Server Version: 18.09.8
Storage Driver: btrfs
Logging Driver: db
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs db fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 0cf16177dbb234350dc27dd2bbd1d7cebd098108
runc version: 6cc9d3f2cd512eeb3d548e2f6b75bcdebc779d4d
init version: e01de58 (expected: fec3683)
Security Options:
 apparmor
Kernel Version: 3.10.105
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 5.814GiB
Name: TARS
ID: VC5Y:VJHJ:EHD3:JVFU:RQPU:MTKU:ULVH:PZPM:NL2Z:HWP5:4UUO:XZ5D
Docker Root Dir: /volume1/@docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No kernel memory limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

Logs

WAN IP address is X.X.X.X
Creating folders...
Overriding required parameters...
Fixing perms...

******** Information ********
To control qBittorrent, access the Web UI at http://localhost:8080

Discussion

I think the solution is fairly simple: those invocations of ln should only happen if the target doesn't exist yet. Something like this maybe?

if [ ! -e "${QBITTORRENT_HOME}/.config/qBittorrent" ]; then
  ln -s /data/config "${QBITTORRENT_HOME}/.config/qBittorrent"
fi

if [ ! -e "${QBITTORRENT_HOME}/.local/share/qBittorrent" ]; then
  ln -s /data/data "${QBITTORRENT_HOME}/.local/share/qBittorrent"
fi

Ability to change the WebUI port and sed not working

Behaviour

Web port of the container clashes with other container ports when using the network of a VPN.
Start r(u)torrent container and this qbittorrent container with the same network_mode: "container:*" and one the of the containers will fail.
And the config is overwritten on every start of the container, so editing the config file doesn't do anything.

Steps to reproduce this issue

  1. Start two containers of qbittorrent with the same network_mode: "container:*"
  2. See as one of the contaienrs fail
  3. Edit the config to have another webport
  4. See as the webport is overwritten and the healthcheck fail

Expected behaviour

Ability to change the port in the config or via ENV and have both containers running without problems.

Actual behaviour

Two containers can't stat because ports clash.
Port configuration in file can't be changed, because it will be overwritten on every start.
Forcing RO on the config file will cause the healthcheck to fail.

Extra

Strangely the way the backslash is escaped in the entrypoint does not work. Please check it for yourself in the container that you started.
Either way, #18 is meant to fix it.

Configuration

  • Docker version (type docker --version) : Docker version 19.03.14, build 5eb3275d40
  • Docker compose version if applicable (type docker-compose --version) : docker-compose version 1.26.0, build d4451659
  • Platform (Debian 9, Ubuntu 18.04, ...) : Debian 9
  • System info (type uname -a) : Linux 4.15.18-10-pve #1 SMP PVE 4.15.18-32 (Sat, 19 Jan 2019 10:09:37 +0100) x86_64 GNU/Linux
  • Include all necessary configuration files :
  qbittorrent:
    image: crazymax/qbittorrent
    container_name: qbittorrent
    network_mode: "container:SomeOtherCotnainer"
    environment:
      - PUID=1000
      - PGID=1000
    restart: unless-stopped

Docker info

Client:
 Debug Mode: false

Server:
 Containers: 130
  Running: 121
  Paused: 0
  Stopped: 9
 Images: 441
 Server Version: 19.03.14
 Storage Driver: overlay2
  Backing Filesystem: btrfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 4.15.18-10-pve
 Operating System: Debian GNU/Linux 9 (stretch)
 OSType: linux
 Architecture: x86_64
 CPUs: 24
 Total Memory: 188.9GiB
 ID: 2MFV:ZXBN:OXWR:NSA6:TE7W:OAC5:HVKT:KR2Y:RE4V:G4V4:OUZU:P2BC
 Docker Root Dir: /snapraid/storage_c2/lib_docker
 Debug Mode: false
 Username: legsplits
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Logs

Was ages ago, already dropped that container.

Container crashes without warning

Behaviour

Download starts and container crashes without logs

Steps to reproduce this issue

  1. Add torrent
  2. Wait a few seconds until the torrent gains speed

Expected behaviour

The container should run without interruption

Actual behaviour

Container crashes without logs in both containers (actual qbittorrent and logs). RAM and CPU usage is increasing before the actual crash

Configuration

  • Docker version (type docker --version) : Docker version 19.03.15, build 99e3ed8919
  • Docker compose version if applicable (type docker-compose --version) : docker-compose version 1.27.4, build 40524192
  • Platform (Debian 9, Ubuntu 18.04, ...) : Ubuntu 20.04.2 LTS
  • System info (type uname -a) : Linux 5.4.0-73-generic #82~18.04.1-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
  • Include all necessary configuration files : I use the same docker-compose file as you provide in your examples.

Docker info

Client:
 Debug Mode: false

Server:
 Containers: 18
  Running: 17
  Paused: 0
  Stopped: 1
 Images: 22
 Server Version: 19.03.15
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: ea765aba0d05254012b0b9e595e995c09186427f
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-73-generic
 Operating System: Ubuntu 20.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 4.657GiB
 Name: xxx
 ID: xxx
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

Logs

(N) 2021-05-23T17:16:33 - qBittorrent v4.3.5 started
(N) 2021-05-23T17:16:33 - Using config directory: /home/qbittorrent/.config/qBittorrent/
(I) 2021-05-23T17:16:34 - Trying to listen on: 0.0.0.0:2xxxx,[::]:2xxxx
(N) 2021-05-23T17:16:35 - Peer ID: -qB4350-
(N) 2021-05-23T17:16:35 - HTTP User-Agent is 'qBittorrent/4.3.5'
(I) 2021-05-23T17:16:35 - DHT support [OFF]
(I) 2021-05-23T17:16:35 - Local Peer Discovery support [OFF]
(I) 2021-05-23T17:16:35 - PeX support [OFF]
(I) 2021-05-23T17:16:35 - Anonymous mode [OFF]
(I) 2021-05-23T17:16:35 - Encryption support [ON]
(I) 2021-05-23T17:16:35 - IP geolocation database loaded. Type: DBIP-Country-Lite. Build time: Sat May 1 02:03:23 2021.
(N) 2021-05-23T17:16:35 - Using built-in Web UI.
(N) 2021-05-23T17:16:35 - Web UI translation for selected locale (en) has been successfully loaded.
(N) 2021-05-23T17:16:35 - Web UI: Now listening on IP: 0.0.0.0, port: 8080
(I) 2021-05-23T17:16:36 - Successfully listening on IP: 127.0.0.1, port: TCP/2xxxx
(I) 2021-05-23T17:16:36 - Successfully listening on IP: 127.0.0.1, port: UDP/2xxxx
(I) 2021-05-23T17:16:36 - Successfully listening on IP: 172.20.0.18, port: TCP/2xxxx
(I) 2021-05-23T17:16:36 - Successfully listening on IP: 172.20.0.18, port: UDP/2xxxx
(I) 2021-05-23T17:16:38 - Detected external IP: xxx.xxx.xxx.x
(N) 2021-05-23T17:16:38 - WebAPI login success. IP: 172.20.0.17
(N) 2021-05-23T17:16:38 - WebAPI login success. IP: 172.20.0.14
(N) 2021-05-23T17:16:48 - WebAPI login success. IP: 172.20.0.9
(N) 2021-05-23T17:17:36 - WebAPI login success. IP: 172.20.0.4

Sidenote:
When I try to disable the "Keep incomplete torrents in" section, the change is ignored when the container starts over. The rest of the configuration seems to be persistent.

Environment value for DHT port

If possible, it would be great to have the ability to pass in an environment variable to configure the DHT port, similar to the current WEBUI_PORT option. Thanks

torrents saving to temp each time container restart

Behaviour

why each time I restart container it restore one setting that is telling qbittorrent to save unfinished torrents to /data/temp how to keep that option turned off on restarts like it keep other options? I have suspision that docker each time overwrote this option.

Steps to reproduce this issue

  1. disable that option
  2. restart container

Expected behaviour

option should not re enable after restart, it should be keep in state before restart

Actual behaviour

right now I turn off that option, then I restart container and after restart it is enabled again

Configuration

  • Docker version (type docker --version) : dunno
  • Docker compose version if applicable (type docker-compose --version) : dunno
  • Platform (Debian 9, Ubuntu 18.04, ...) : synology dsm
  • System info (type uname -a) : dunno
  • Include all necessary configuration files : docker-compose.yml, .env, ... dont have

Docker info

dont have

Logs

dont have

[Question] Is this build with the headless no-X version of QB?

Since there are several docker images out there for QB, for comparison to the three other images I wonder if you used the headless no-X version of QB? Since it will only be used via webUI, that would make sense.

If not the NOX version, why not?

Also, I use Caddy v2 as it is much (much!) simpler (just 2 easy to read labels and this docker image). Did add anything pecifically for Traefik? Readme says it has Traefik.

Btw I already use your Firefox-Sync server image, thank you for that one!

entrypoint.sh mangles Downloads\ScanDirsV2 config parameter

Behaviour

Steps to reproduce this issue

  1. Launch a fresh crazy-max/docker-qbittorrent container

  2. Navigate to web UI and open Options

  3. On the Downloads tab, observe no entries under Automatically add torrents from:

  4. Observe malformed value for Downloads\ScanDirsV2 in /data/config/qBittorrent.conf, e.g.:

    Downloads\ScanDirsV2=@Variant(Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1cDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x16Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)/Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x64Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)tDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)/Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)wDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)tDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x63Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)hDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x2Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1)
    

Expected behaviour

entrypoint.sh should properly configure /data/watch as a monitored folder:

# /data/watch | Default save location
WATCH_DIR="@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)"

Actual behaviour

No monitored folders are configured. Torrent files added to the directory mapped to /data/watch are not automatically started.

Manually adding /data/watch as a monitored folder and saving my Options overwrites the garbage value and gets the watch dir working as expected. Unfortunately, the invocations of sed in entrypoint.sh revert this change every time the container (re)starts:

sed -i "s!Downloads\\\ScanDirsV2=.*!Downloads\\\ScanDirsV2=${WATCH_DIR}!g" /data/config/qBittorrent.conf

Configuration

  • Docker version (type docker --version) : Docker version 18.09.8, build bfed4f5
  • Docker compose version if applicable (type docker-compose --version) : docker-compose version 1.24.0, build 0aa59064
  • Platform (Debian 9, Ubuntu 18.04, ...) : Synology DSM 6.2.3-25426 Update 3
  • System info (type uname -a) : Linux TARS 3.10.105 #25426 SMP Mon Dec 14 18:47:29 CST 2020 x86_64 GNU/Linux synology_avoton_rs2416+

Here's my compose file:

docker-compose.yml
version: '3'

services:
  flexget:
    build: flexget
    depends_on:
      - nginx
    environment:
      TZ: America/Los_Angeles
    networks:
      - tarsnet
    restart: always
    volumes:
      - /volume1/docker/flexget:/home/flexget/.flexget
      - /volume1/docker/transmission/watch:/home/flexget/torrents

  nginx:
    build: nginx
    networks:
      - tarsnet
    ports:
      - 'XXX:443' # redacted
    restart: always
    volumes:
      - /usr/syno/etc/certificate/_archive/1B4XLl:/etc/nginx/ssl:ro

  qbittorrent:
    depends_on:
      - nginx
    environment:
      ALT_WEBUI: 'false'
      PUID: '1044'
      PGID: '65538'
      TZ: America/Los_Angeles
    image: crazymax/qbittorrent
    networks:
      - tarsnet
    ports:
      - 'XXX:6881/tcp' # redacted
      - 'XXX:6881/udp' # redacted
    restart: always
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    volumes:
      - /volume1/docker/qbittorrent:/data
      - /volume1/Media/Downloads:/data/downloads

  transmission:
    build: transmission
    depends_on:
      - nginx
    environment:
      CURL_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt
      TZ: America/Los_Angeles
    networks:
      - tarsnet
    ports:
      - 'XXX:XXX' # redacted
    restart: always
    volumes:
      - /volume1/docker/transmission/config:/home/transmission/.config
      - /volume1/docker/transmission/incomplete:/home/transmission/incomplete
      - /volume1/docker/transmission/watch:/home/transmission/watch
      - /volume1/Media/Downloads:/home/transmission/downloads

Docker info

# docker info
Containers: 4
 Running: 4
 Paused: 0
 Stopped: 0
Images: 34
Server Version: 18.09.8
Storage Driver: btrfs
Logging Driver: db
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs db fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 0cf16177dbb234350dc27dd2bbd1d7cebd098108
runc version: 6cc9d3f2cd512eeb3d548e2f6b75bcdebc779d4d
init version: e01de58 (expected: fec3683)
Security Options:
 apparmor
Kernel Version: 3.10.105
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 5.814GiB
Name: TARS
ID: VC5Y:VJHJ:EHD3:JVFU:RQPU:MTKU:ULVH:PZPM:NL2Z:HWP5:4UUO:XZ5D
Docker Root Dir: /volume1/@docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No kernel memory limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

Logs

WAN IP address is X.X.X.X
Switching to PGID 65538...
Switching to PUID 1044...
Creating folders...
Overriding required parameters...
Fixing perms...
Trying to construct an instance of an invalid type, type id: 74413837

******** Information ********
To control qBittorrent, access the Web UI at http://localhost:8080

Discussion

Some light Googling suggests that the "trying to construct an instance of invalid type" error message that gets printed on container startup could be related to decoding a QVariant value, which just so happens to be the type of the Downloads\ScanDirsV2 config parameter.

My theory is that the double quotes around WATCH_DIR on this line

# /data/watch | Default save location
WATCH_DIR="@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)"

might be causing bits of that string to be interpreted as escape sequences and/or causing it to interact badly with sed.

Don't combine RUN's in builder image

RUN apk add --update --no-cache \

There is no need to combine RUN lines in the builder stage for a 'flatter' image. The builder image will be discarded. Leaving them as separate RUN statements will let the build host cache things more efficiently and debugging the build will be a lot easier and faster.

Something bad is with this container

Hello, I really appreciate all your work and I like your containers and what you are doing, I'm using your container for Firefox SyncServer because original is broken somehow while your works like a harm. I wanted also use your qBitTorrent container because I like the features. I didn't had problem to download and start container (no crash after startup) but somehow it does not work, when I open port locally so using IP of my device my browsers tells that connection were break or something like that (I've my browser in my native language). I checked triple times all ports but I've others containers setup exactly same way and these works. I checked other closed issues to dig out and few ppl reported that missing is folder data or something like that so I wanted check this and when I tried to open bash terminal within container the whole container crashed. So for compare I did exactly same thing with your Firefox SyncServer container and I was able to open bash terminal. I'm using Docker on my Synology NAS DSM 7.0, but this should not be a problem. I will paste few screenshots from Docker GUI. On one screenshot will be visible error when I wanted to create bash terminal.

2021-08-21_13-41-06
firefox_2021-08-21_13-38-58
firefox_2021-08-21_13-39-13
2021-08-21_13-39-47
2021-08-21_13-39-59

I had before official qBitTorrent container and worked great so I think I will use it again and maybe I will return to your container if will be possible to copy db between them.

Qbittorrent 4.3.8 has a few usability problems, latest tag "breaks" setup.

Behaviour

Just a heads up, no a problem of this repo but a problem of qbittorrent qbittorrent/qBittorrent#15420
Also, the configurations do not change. So it doesn't really "break" the setup.

Steps to reproduce this issue

  1. Be on 4.3.6
  2. Have a populated qbittorrent setup
  3. Upgrade to 4.3.8
  4. Open webui
  5. The bug.

Expected behaviour

To have all configurations and torrens be present after upgrade.

Actual behaviour

Configuration and settings are empty.

Configuration

  • Docker version (type docker --version) : Docker version 20.10.6-ce, build 8728dd246c3a
  • Docker compose version if applicable (type docker-compose --version) :
  • Platform (Debian 9, Ubuntu 18.04, ...) : SLES15
  • System info (type uname -a) :
  • Include all necessary configuration files : docker-compose.yml, .env, ...

Docker info

> Output of command `docker info`

Logs

None which would apply.

improvement

Hey there,

do you plan to add unrar to that image, or do you advise to extract archives another way in that container?
thx

Container/application does not create /data/config and /data/data directories

I believe this is the same problem described in #1; finding that issue is what allowed me to work around this. I have tried to provide as much detail as possible below โ€“ please ping me if I can answer any questions.

Thanks for maintaining this repo!

Behaviour

Steps to reproduce this issue

  1. Create a docker-compose file that maps an empty host directory to the container's /data volume
  2. Start the qBittorrent container
  3. Container fails to start and enters restart loop

Expected behaviour

The container/application should create all necessary directories it expects to find inside /data on first run:

  • config
  • data
  • downloads
  • temp
  • torrents
  • watch
  • webui

Actual behaviour

Container/application does not create config and data directories inside of /data volume (it does create the others) and fails to start. Manually creating these directories allows the container to start and remain up.

Configuration

  • Docker version (type docker --version) : Docker version 18.09.8, build bfed4f5
  • Docker compose version if applicable (type docker-compose --version) : docker-compose version 1.24.0, build 0aa59064
  • Platform (Debian 9, Ubuntu 18.04, ...) : Synology DSM 6.2.3-25426 Update 3
  • System info (type uname -a) : Linux TARS 3.10.105 #25426 SMP Mon Dec 14 18:47:29 CST 2020 x86_64 GNU/Linux synology_avoton_rs2416+

Here's my compose file:

docker-compose.yml
version: '3'

services:
  flexget:
    build: flexget
    depends_on:
      - nginx
    environment:
      TZ: America/Los_Angeles
    networks:
      - tarsnet
    restart: always
    volumes:
      - /volume1/docker/flexget:/home/flexget/.flexget
      - /volume1/docker/transmission/watch:/home/flexget/torrents

  nginx:
    build: nginx
    networks:
      - tarsnet
    ports:
      - 'XXX:443' # redacted
    restart: always
    volumes:
      - /usr/syno/etc/certificate/_archive/1B4XLl:/etc/nginx/ssl:ro

  qbittorrent:
    depends_on:
      - nginx
    environment:
      ALT_WEBUI: 'false'
      PUID: '1044'
      PGID: '65538'
      TZ: America/Los_Angeles
    image: crazymax/qbittorrent
    networks:
      - tarsnet
    ports:
      - 'XXX:6881/tcp' # redacted
      - 'XXX:6881/udp' # redacted
    restart: always
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    volumes:
      - /volume1/docker/qbittorrent:/data

  transmission:
    build: transmission
    depends_on:
      - nginx
    environment:
      CURL_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt
      TR_CURL_VERBOSE: 1
      TZ: America/Los_Angeles
    networks:
      - tarsnet
    ports:
      - 'XXX:XXX' # redacted
    restart: always
    volumes:
      - /volume1/docker/transmission/config:/home/transmission/.config
      - /volume1/docker/transmission/incomplete:/home/transmission/incomplete
      - /volume1/docker/transmission/watch:/home/transmission/watch
      - /volume1/Media/Downloads:/home/transmission/downloads

networks:
  tarsnet: {}

Docker info

# docker info
Containers: 4
 Running: 4
 Paused: 0
 Stopped: 0
Images: 34
Server Version: 18.09.8
Storage Driver: btrfs
Logging Driver: db
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs db fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 0cf16177dbb234350dc27dd2bbd1d7cebd098108
runc version: 6cc9d3f2cd512eeb3d548e2f6b75bcdebc779d4d
init version: e01de58 (expected: fec3683)
Security Options:
 apparmor
Kernel Version: 3.10.105
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 5.814GiB
Name: TARS
ID: VC5Y:VJHJ:EHD3:JVFU:RQPU:MTKU:ULVH:PZPM:NL2Z:HWP5:4UUO:XZ5D
Docker Root Dir: /volume1/@docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No kernel memory limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

Logs

When first starting the container with an empty host directory mapped to /data:

WAN IP address is X.X.X.X
Creating folders...
Initializing qBittorrent configuration...
/entrypoint.sh: line 35: can't create /data/config/qBittorrent.conf: nonexistent directory
Overriding required parameters...
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
sed: /data/config/qBittorrent.conf: No such file or directory
Fixing perms...
Could not create required directory '/home/qbittorrent/.config/qBittorrent/'

The container does create a few subdirectories inside the host directory mapped to /data but is missing some crucial ones:

# ls -ahl /volume1/docker/qbittorrent
total 0
drwxrwxr-x+ 1 docker docker 62 Mar  6 18:50 .
drwxr-xr-x+ 1 root   root   92 Mar  6 18:50 ..
drwxrwxr-x+ 1 docker docker  0 Mar  6 18:50 downloads
drwxrwxr-x+ 1 docker docker  0 Mar  6 18:50 temp
drwxrwxr-x+ 1 docker docker  0 Mar  6 18:50 torrents
drwxrwxr-x+ 1 docker docker  0 Mar  6 18:50 watch
drwxrwxr-x+ 1 docker docker  0 Mar  6 18:50 webui

After manually creating a config directory in the host directory mapped to /data:

WAN IP address is X.X.X.X
Creating folders...
Initializing qBittorrent configuration...
Overriding required parameters...
Fixing perms...
Could not create required directory '/home/qbittorrent/.local/share/qBittorrent/'

While in this state, where /data/config exists but not /data/data, something causes the Downloads\ScanDirsV2 field in qBittorrent's config file to grow and grow. I think it's this line:

sed -i "s!Downloads\\\ScanDirsV2=.*!Downloads\\\ScanDirsV2=${WATCH_DIR}!g" /data/config/qBittorrent.conf

It seems like it gets longer every time the container restarts. While troubleshooting this issue, my qBittorrent.conf file grew to 1.5 GB. Here's an example from after a few restarts:

Downloads\ScanDirsV2=@Variant(Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1cDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x16Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)/Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x64Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)tDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)/Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)wDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x61Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)tDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x63Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)hDownloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x2Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x16\0/\0\x64\0\x61\0t\0\x61\0/\0w\0\x61\0t\0\x63\0h\0\0\0\x2\0\0\0\x1)x1)

/data/config and /data/data are missing

Behaviour

Steps to reproduce this issue

  1. docker run -d --name qb -v /mnt/my-big-raid5-volume:/data crazymax/qbittorrent

Expected behaviour

ln /data, the following folders should be present:
config, data, downloads, temp, torrents, watch and webui

Actual behaviour

ln /data, only the following folders are present:
downloads, temp, torrents, watch and webui

This is because /data/config and /data/data are created in Dockerfile. When a storage volume is mounted onto /data, they get hidden.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.