qBittorrent Docker image.
Tip
Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!
- Features
- Build locally
- Image
- Environment variables
- Volumes
- Ports
- Usage
- Upgrade
- Notes
- Contributing
- License
- Run as non-root user
- Multi-platform image
- Latest qBittorrent / libtorrent-rasterbar release compiled from source
- WAN IP address automatically resolved for reporting to the tracker
- Finished torrents automatically saved to
/data/torrents
- Handle watch directory from
/data/watch
- Ability to use an alternative WebUI in
/data/webui
- Healthcheck through qBittorrent API
- Logs managed through a dedicated container
- Traefik as reverse proxy and creation/renewal of Let's Encrypt certificates (see this template)
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
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
TZ
: Timezone assigned to the container (defaultUTC
)PUID
: qBittorrent user id (default1000
)PGID
: qBittorrent group id (default1000
)WAN_IP
: Public IP address reported to the tracker (default auto resolved withdig +short myip.opendns.com @resolver1.opendns.com
)WEBUI_PORT
: WebUI port to be used (default8080
)ALT_WEBUI
: Enable alternative WebUI located in/data/webui
(defaultfalse
)
/data
: qBittorrent config, downloads, temp, torrents, watch, webui...
⚠️ Note that the volumes should be owned by the user/group with the specifiedPUID
andPGID
. If you don't give the volume correct permissions, the container may not start.
6881
: DHT port8080
: qBittorrent HTTP port
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
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
Recreate the container whenever I push an update:
docker compose pull
docker compose up -d
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
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
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
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! 🙏
MIT. See LICENSE
for more details.