How to Install qBittorrent-nox on Ubuntu

Tech reviewed: Deepak Prasad
How to Install qBittorrent-nox on Ubuntu

qbittorrent-nox is the headless build of qBittorrent for Ubuntu Server and other systems without a graphical desktop. You manage torrents through a browser-based Web UI instead of a local window, which makes it a good fit for NAS boxes, VPS instances, and home servers.

This guide covers installing qbittorrent-nox on Ubuntu, creating a dedicated service user, completing the first-run legal notice, logging into the Web UI (including the temporary-password behavior in current releases), enabling the official systemd template, basic firewall and remote-access options, and the pitfalls that still appear in outdated forum posts.

Tested on: Ubuntu 25.04 (Plucky Puffin); kernel 6.14.0-37-generic.


Quick command summary

Task Command
Install from Ubuntu universe sudo apt update && sudo apt install -y qbittorrent-nox
Install latest from official PPA sudo add-apt-repository -y ppa:qbittorrent-team/qbittorrent-stable && sudo apt update && sudo apt install -y qbittorrent-nox
Check version qbittorrent-nox --version
Create service user sudo useradd -r -m -d /var/lib/qbittorrent -s /usr/sbin/nologin qbtuser
First interactive run sudo -u qbtuser qbittorrent-nox --confirm-legal-notice
Start systemd service sudo systemctl enable --now qbittorrent-nox@qbtuser
Read temporary Web UI password journalctl -u qbittorrent-nox@qbtuser -b --no-pager | grep -i password
Check listening port ss -ltnp | grep 8080
Stop and disable sudo systemctl disable --now qbittorrent-nox@qbtuser

What is qbittorrent-nox?

qBittorrent is a popular open-source BitTorrent client. The nox variant drops the Qt desktop interface and exposes a Web UI you reach from another machine’s browser—typically at http://server-ip:8080.

On Ubuntu you install the qbittorrent-nox package. Configuration and torrent data live under the Linux user that runs the process (for example /var/lib/qbittorrent/.config/qBittorrent/ when that user’s home is /var/lib/qbittorrent).

Use qbittorrent-nox when you want a always-on torrent box without installing a full desktop environment. If you need a GUI on the same machine, install the qbittorrent package instead.


Prerequisites

You need:

  • A supported Ubuntu release (22.04 LTS, 24.04 LTS, and newer non-LTS versions such as 25.04 are covered here).
  • sudo access.
  • Enough disk space for downloads—see check disk space in Linux before pointing qBittorrent at a large volume.
  • Outbound network access for torrent peers and optional inbound access if you rely on direct peer connections.

For adding PPAs on minimal images, install software-properties-common first if add-apt-repository is missing—see add-apt-repository command not found.


Install qbittorrent-nox on Ubuntu

You have two practical package sources on Ubuntu.

IMPORTANT
Pick one install method (universe or PPA). Do not add the PPA on top of an already-installed universe build without checking apt-cache policy qbittorrent-nox first—mixed or duplicate sources cause confusing upgrades.

Method 1: Install from Ubuntu universe (simplest)

The universe repository ships qbittorrent-nox on current Ubuntu releases. This is the fastest path when the packaged version is new enough for you.

bash
sudo apt update
sudo apt install -y qbittorrent-nox

Check the installed build:

bash
qbittorrent-nox --version

Tested output:

text
qBittorrent v5.0.4

On Ubuntu 25.04 the universe package was 5.0.4-1 at the time of writing. Older LTS releases may lag behind the upstream project.

Method 2: Install from the official qBittorrent PPA (newer builds)

The qBittorrent project wiki recommends the qbittorrent-stable PPA when you want newer releases than Ubuntu’s default archive.

bash
sudo add-apt-repository -y ppa:qbittorrent-team/qbittorrent-stable
sudo apt update
sudo apt install -y qbittorrent-nox

After adding the PPA on Ubuntu 25.04, apt offered 5.1.4.x while universe still had 5.0.4-1. Run apt-cache policy qbittorrent-nox to compare candidates before you install.

NOTE
There is also ppa:qbittorrent-team/qbittorrent-unstable for nightly builds. Use it only when you accept breakage risk; most servers should stay on qbittorrent-stable or universe.

What to avoid

WARNING

Several older tutorials (and gist copies) still show unsafe or outdated patterns on modern Ubuntu:

  • Running qbittorrent-nox as root in a custom unit file.
  • Using Type=forking with qbittorrent-nox -d instead of the shipped simple [email protected] template.
  • Assuming the Web UI password is always adminadmin (it is not on qBittorrent 4.6+).
  • Installing random third-party .deb files or curl-to-bash scripts when the PPA or universe package already matches your needs.

Create a dedicated service user

Run qbittorrent-nox under an unprivileged account that owns its config and download directories. This matches the official systemd guidance and aligns with running a systemd service as a specific user.

bash
sudo useradd -r -m -d /var/lib/qbittorrent -s /usr/sbin/nologin qbtuser
  • -r creates a system account.
  • -d /var/lib/qbittorrent keeps torrent data off /root.
  • /usr/sbin/nologin blocks interactive SSH login while still allowing the service to run.

Create your download directory and set ownership before you add torrents:

bash
sudo mkdir -p /var/lib/qbittorrent/downloads
sudo chown -R qbtuser:qbtuser /var/lib/qbittorrent

For useradd options in more detail, see the useradd command guide.


Before systemd can manage qbittorrent-nox cleanly, complete the one-time legal notice as the service user.

Interactive first start

bash
sudo -u qbtuser qbittorrent-nox --confirm-legal-notice
HINT
--confirm-legal-notice accepts the sharing disclaimer non-interactively (equivalent to agreeing at the prompt). Without it, qbittorrent-nox waits for keyboard input, which blocks a clean systemd start.

After internal startup you should see a banner similar to:

text
******** Information ********
To control qBittorrent, access the WebUI at: http://localhost:8080
The WebUI administrator username is: admin
The WebUI administrator password was not set. A temporary password is provided for this session: URVADwjAs
You should set your own password in program preferences.
IMPORTANT
On qBittorrent 4.6 and newer, the password line shows a random temporary password, not adminadmin. Copy it from this output (or from journalctl after you start the service). Press Ctrl+C to stop this test run once you have noted the password.

The legal acceptance is stored in ~/.config/qBittorrent/qBittorrent.conf under [LegalNotice] Accepted=true for that user.


Log in to the Web UI

On the Ubuntu server (with a desktop browser) or from another machine (after you open access—see the security section), open:

text
http://SERVER_IP:8080

Log in with:

  • Username: admin
  • Password: the temporary password from first-run output or journalctl (until you set your own)

In the Web UI go to Tools → Options → Web UI to set a strong permanent password, change the listening port if 8080 is taken, and optionally restrict the Web UI to a specific network interface.

Default download location and categories are also configured under Tools → Options → Downloads.


Run qbittorrent-nox as a systemd service

HINT
Modern qbittorrent-nox packages ship a template unit at /usr/lib/systemd/system/[email protected]. Use qbittorrent-nox@qbtuser instead of hand-writing a forking service with -d.

Enable and start the instance for qbtuser:

bash
sudo systemctl enable --now qbittorrent-nox@qbtuser

Check status:

bash
systemctl status qbittorrent-nox@qbtuser --no-pager

Tested output (trimmed):

text
[email protected] - qBittorrent-nox service for user qbtuser
     Loaded: loaded (/usr/lib/systemd/system/[email protected]; enabled; preset: enabled)
     Active: active (running) since Wed 2026-06-24 18:44:03 IST; 5s ago
   Main PID: 30268 (qbittorrent-nox)

Confirm the Web UI port is listening:

bash
ss -ltnp | grep 8080

Read the temporary password from journald

When the service starts before you set a permanent password, qBittorrent logs the temporary value:

bash
journalctl -u qbittorrent-nox@qbtuser -b --no-pager | grep -i password

Tested output:

text
The WebUI administrator password was not set. A temporary password is provided for this session: RrrWJAehm

For more journal filtering examples, see view logs with journalctl.

Service management commands

Action Command
Start sudo systemctl start qbittorrent-nox@qbtuser
Stop sudo systemctl stop qbittorrent-nox@qbtuser
Restart sudo systemctl restart qbittorrent-nox@qbtuser
Disable at boot sudo systemctl disable qbittorrent-nox@qbtuser
Follow live logs journalctl -u qbittorrent-nox@qbtuser -f

Wait for a mount before starting (optional)

If downloads live on a separate disk or NFS share, add mount dependencies so qbittorrent-nox does not write to an empty path when the volume is missing. The pattern is the same as starting a systemd service after NFS mount: create a drop-in override with After= and BindsTo= for the mount unit (for example mnt-data.mount for /mnt/data).


Firewall and remote access

Local firewall (UFW)

If you use UFW and want LAN browsers to reach the Web UI directly:

bash
sudo ufw allow from 192.168.0.0/24 to any port 8080 proto tcp comment 'qBittorrent Web UI'
sudo ufw reload

Adjust the source subnet to match your network.

WARNING
Opening port 8080 to 0.0.0.0/0 or the entire internet exposes the Web UI admin panel without encryption. Prefer the SSH tunnel below for remote administration, or put HTTPS and authentication in front of a reverse proxy.

Safer remote access: SSH tunnel

Instead of exposing the Web UI port publicly, tunnel it over SSH from your laptop:

bash
ssh -L 8080:127.0.0.1:8080 your-user@SERVER_IP

Then open http://127.0.0.1:8080 locally. The Web UI traffic rides inside SSH.

TIP
For long-lived tunnels, use SSH keepalive options or a persistent session manager. See keep alive SSH sessions in Linux.

If SSH is exposed to the internet, consider Fail2ban for SSH as a baseline hardening step.

Reverse proxy (optional)

Some guides terminate TLS in Nginx or Apache and proxy to http://127.0.0.1:8080. That works, but you must forward WebSocket headers for live UI updates. A minimal Nginx location block looks like:

nginx
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
WARNING
Put authentication and HTTPS in front of this proxy. Do not publish a plain HTTP admin panel to the public internet—the default Web UI was not designed as a directly exposed service.

Uninstall qbittorrent-nox

Stop the service and remove the package:

bash
sudo systemctl disable --now qbittorrent-nox@qbtuser
sudo apt purge -y qbittorrent-nox
sudo apt autoremove -y

If you added the PPA:

bash
sudo add-apt-repository --remove ppa:qbittorrent-team/qbittorrent-stable
sudo apt update
WARNING
The command below deletes qBittorrent config, resume data, and ratio statistics. Run it only when you are sure you do not need those files.
bash
sudo rm -rf /var/lib/qbittorrent/.config/qBittorrent

Troubleshooting

Problem What to check
admin / adminadmin login fails You are on qBittorrent 4.6+. Read the temporary password from first-run output or journalctl -u qbittorrent-nox@qbtuser -b.
Web UI does not load systemctl status qbittorrent-nox@qbtuser, ss -ltnp | grep 8080, and local firewall rules.
Service exits immediately Run once interactively as qbtuser to accept the legal notice, or pass --confirm-legal-notice.
Port 8080 already in use Change the port in Tools → Options → Web UI or add ExecStart=/usr/bin/qbittorrent-nox --webui-port=8081 via a systemd drop-in override.
Permission errors on downloads chown -R qbtuser:qbtuser on the download path; confirm the disk is mounted before the service starts.
Old tutorial uses -d and Type=forking Switch to the shipped [email protected] template (Type=simple, no -d).

Application logs also land under ~/.local/share/data/qBittorrent/logs/ for the service user (for example /var/lib/qbittorrent/.local/share/data/qBittorrent/logs/).


References


Frequently Asked Questions

1. What is the difference between qbittorrent and qbittorrent-nox on Ubuntu?

qbittorrent is the desktop GUI client that needs a display server. qbittorrent-nox is the headless build with only the Web UI, which is what you want on Ubuntu Server or any machine without X11 or Wayland.

2. What is the default qbittorrent-nox Web UI password on Ubuntu?

On qBittorrent 4.6 and newer, the default password is not adminadmin. The first run prints a one-time temporary password in the terminal or journalctl output. Set your own password under Tools → Options → Web UI after you log in.

3. Which port does qbittorrent-nox use for the Web UI?

The default Web UI port is 8080. You can change it with --webui-port on the command line or in the Web UI under Tools → Options → Web UI.

4. Should I run qbittorrent-nox as root?

No. Create a dedicated unprivileged user such as qbtuser and start the bundled qbittorrent-nox@qbtuser systemd instance. Running torrent software as root is a common mistake in older tutorials.

5. How do I make qbittorrent-nox start automatically on boot?

Use the template unit shipped with the package: sudo systemctl enable --now qbittorrent-nox@qbtuser. Replace qbtuser with the Linux account that owns the qBittorrent config and download directories.

6. Why does admin / adminadmin not work after I install qbittorrent-nox?

Newer qBittorrent builds generate a random temporary password on first start. Read it from the first-run terminal output or with journalctl -u qbittorrent-nox@qbtuser, then set a permanent password in the Web UI.

7. How do I uninstall qbittorrent-nox from Ubuntu?

Stop and disable the service, remove the package with sudo apt purge qbittorrent-nox, optionally remove the PPA with sudo add-apt-repository --remove ppa:qbittorrent-team/qbittorrent-stable, then run sudo apt update.

Summary

To install qbittorrent-nox on Ubuntu, add the official qbittorrent-stable PPA when you need a newer build—or install from universe when the default version is enough. Create a dedicated user such as qbtuser, complete the first-run legal notice, and log into the Web UI with username admin and the temporary password printed on first start (not adminadmin on current releases). Enable qbittorrent-nox@qbtuser with systemd, read passwords from journalctl if needed, and prefer an SSH tunnel over exposing port 8080 to the internet.

For day-to-day package work on Debian-based systems, keep the apt command cheat sheet handy when you add PPAs or purge the client later.

Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, …

  • Red Hat Certified System Administrator in Red Hat OpenStack
  • Certified Kubernetes Application Developer (CKAD)
  • Red Hat Certified Specialist in Ansible Automation
  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security