Repository navigation
qBit Mobile v1.5.0
qBit Mobile is a mobile-first web UI for qBittorrent — an installable PWA backed by a hardened Express proxy you self-host alongside qBittorrent.
This is the first tagged GitHub release.
Highlights
- Mobile-first UI — responsive design with dark mode, swipe actions, and inline row expansion.
- Virtualized torrent list — stays smooth with thousands of torrents.
- Per-torrent detail — files, trackers, transfer stats, recheck and reannounce.
- Batch operations — multi-select pause / resume / delete, plus bulk move-to-location.
- Move-to presets — operator-defined save-path presets, editable from Settings and seedable via
DOWNLOAD_LOCATIONS. - Search, sort, tag filtering, and live global stats.
- Installable PWA with an offline shell (UI loads from cache; live data needs a connection).
Security
- App auth is on by default (
AUTH_MODE=basic); the server refuses to boot without credentials. - The proxy forwards only a curated allowlist of qBittorrent endpoints, with field allowlists on set-preferences and add-torrent. Dangerous endpoints (e.g.
/app/shutdown) and RCE-enabling preference keys (e.g.autorun_program) are unreachable even when authenticated. - Optional
TRUST_PROXYandALLOWED_ORIGINfor reverse-proxy / CORS deployments.
Install
One-command deploy scripts auto-build the frontend, prompt for config, and register an auto-starting service:
- Linux (systemd):
sudo ./deploy.sh - macOS (launchd):
./deploy-macos.sh - Windows (Scheduled Task, PowerShell 7+):
pwsh .\deploy.ps1
Requires Node.js 22.12+ and qBittorrent with the Web UI enabled. See the README for manual setup and configuration.
Tech
React 19 + TypeScript + Vite 8 + Tailwind on the frontend; Express proxy on the backend. CI runs lint, typecheck, tests (117 passing), and build.