x-arcane:
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/qbittorrent.svg
urls:
- https://docs.linuxserver.io/images/docker-qbittorrent/
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
restart: unless-stopped
ports:
- "${APP_PORT:-8080}:${APP_PORT:-8080}"
- "${TORRENT_PORT:-6881}:${TORRENT_PORT:-6881}/tcp"
- "${TORRENT_PORT:-6881}:${TORRENT_PORT:-6881}/udp"
environment:
TZ: ${TZ:-Etc/UTC}
PUID: ${PUID:-1000}
PGID: ${PGID:-1000}
WEBUI_PORT: ${APP_PORT:-8080}
TORRENTING_PORT: ${TORRENT_PORT:-6881}
volumes:
- ${BASE_PATH}/config:/config
- ${DATA_PATH}:/data
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/qbittorrent.svg
APP_PORT=8080
TORRENT_PORT=6881
BASE_PATH=/data/compose/qbittorrent
DATA_PATH=/data/media
PUID=1000
PGID=1000
TZ=Etc/UTC
README
BitTorrent client with a web interface and download automation support.
Deployment
Copy .env.example to .env (or enter its values in Arcane), set paths and credentials, and deploy compose.yaml. Open http://HOST:APP_PORT (default 8080). Use reachable hostnames or host IPs for services in other Compose projects; localhost inside a container refers to that container.
Log in as admin using the temporary password printed in the container logs, then set a permanent password. Set the default save path to /data/downloads/torrents. APP_PORT also controls the internal Web UI port, as required by this image. TORRENT_PORT controls the peer port on both sides of the mapping.
Shared media paths
DATA_PATH=/data/media mounts the same host directory at /data. Use /data/downloads for downloads, /data/tv, /data/movies, and /data/music for libraries. Create these directories and grant the configured UID/GID access before deployment. Keep every participating application on the same host and container paths so imports and hardlinks work.
The existing Sonarr and Radarr templates use /tv or /movies and /downloads, and their default downloads host directory is /data/downloads. To adopt this layout, add ${DATA_PATH}:/data to those deployments and update their root folders and download client paths. Alternatively, change this deployment's media mounts to exactly match their existing host and container paths. Do not point two different host directories at what appears to be the same downloads path. Bazarr needs matching library paths or explicit path mappings.