Headless qBittorrent client with remote web interface.
From www.qbittorrent.org:
An advanced and multi-platform BitTorrent client with a nice Qt user interface as well as a Web UI for remote control and an integrated search engine. qBittorrent aims to meet the needs of most users while using as little CPU and memory as possible.
The qBittorrent project aims to provide an open-source software alternative to µTorrent.
qBittorrent is released uner the GNU Generic Public License v2 to allow free use.
These images are built with qbittorrent-nox
(no X server), a version of qBittorrent with the GUI disabled that is controlled via its built-in web UI.
The images do not require any external Docker networks, volumes, environment variables, or arguments and can be run with just:
docker run \
--publish 8080:8080 \
--publish 6881:6881/tcp \
--publish 6881:6881/udp \
emmercm/qbittorrent
And accessed through the web UI at http://localhost:8080 with the default username admin
and password adminadmin
.
Due to the ephemeral nature of Docker containers these images provide a number of optional volume mounts to persist data outside of the container:
/config
: the qBittorrent config directory containingqBittorrent.conf
/downloads
: the default download location/incomplete
: the default incomplete download location/data
: the qBittorrent folder that contains fast resume data,.torrent
files, logs, and other data.
Usage:
mkdir config downloads incomplete
docker run \
--publish 8080:8080 \
--publish 6881:6881/tcp \
--publish 6881:6881/udp \
--volume "$PWD/config:/config" \
--volume "$PWD/data:/data" \
--volume "$PWD/downloads:/downloads" \
--volume "$PWD/incomplete:/incomplete" \
emmercm/qbittorrent
To change the timezone of the container set the TZ
environment variable. The full list of available options can be found on Wikipedia.
docker-compose
can help with defining the docker run
config in a repeatable way rather than ensuring you always pass the same CLI arguments.
Here's an example docker-compose.yml
config:
version: "3"
services:
qbittorrent:
image: emmercm/qbittorrent:latest
restart: unless-stopped
environment:
- TZ=America/New_York
ports:
- 8080:8080
- 6881:6881/tcp
- 6881:6881/udp
volumes:
- ./config:/config
- ./data:/data
- ./downloads:/downloads
- ./incomplete:/incomplete
There are a number of VPN images such as Julio Gutierrez's bubuntux/nordvpn that let you route network traffic from the qBittorrent container through the VPN of your choice.
Here's an example docker-compose.yml
config:
version: "3"
services:
vpn:
image: bubuntux/nordvpn:openvpn
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
environment:
- [email protected]
- PASS='pas$word'
- COUNTRY=United_States
- PROTOCOL=UDP
- CATEGORY=P2P
# Your local network, potentially 192.168.0.0/24 or something else
- NETWORK=192.168.1.0/24
- OPENVPN_OPTS='--pull-filter ignore "ping-restart" --ping-exit 180'
- TZ=America/New_York
# Ports from qBittorrent
ports:
- 8080:8080
- 6881:6881/tcp
- 6881:6881/udp
qbittorrent:
image: emmercm/qbittorrent:latest
restart: unless-stopped
network_mode: service:vpn
environment:
- TZ=America/New_York
volumes:
- ./config:/config
- ./data:/data
- ./downloads:/downloads
- ./incomplete:/incomplete
All images are based on emmercm/libtorrent
and therefore inherit those images' OS version, which is kept as up to date as possible.
The default image variant, these images are based on the alpine
official image which is designed to be "small, simple, and secure." This variant is recommended for when final image size is a concern.
This project is under the GNU Generic Public License v3 to allow free use while ensuring it stays open.