Initech
KB-24 Print

Set Up qBittorrent on a VPS (Web UI)

Quick answer

Install the headless client, create a dedicated user, run it as a systemd service, then log in to the web UI on port 8080 and change the default password immediately:

sudo apt update
sudo apt install qbittorrent-nox
sudo adduser --system --group qbtuser

Then set up the service below, browse to http://your-server-ip:8080, and you have a working seedbox client. The rest of this guide walks through each step properly.

1. Install qbittorrent-nox

qbittorrent-nox is the "no X" build of qBittorrent: the full client without a desktop interface, controlled entirely through a web UI. It is in the standard Ubuntu and Debian repositories:

sudo apt update
sudo apt install qbittorrent-nox

Check it installed cleanly:

qbittorrent-nox --version

2. Create a dedicated user

Do not run a torrent client as root. Create a system user that owns the process and its downloads:

sudo adduser --system --group qbtuser
sudo mkdir -p /home/qbtuser/downloads
sudo chown -R qbtuser:qbtuser /home/qbtuser

3. Run it as a systemd service

Create the unit file so the client starts on boot and restarts if it crashes:

sudo nano /etc/systemd/system/qbittorrent-nox.service

Paste this:

[Unit]
Description=qBittorrent-nox
After=network.target

[Service]
Type=simple
User=qbtuser
Group=qbtuser
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

Enable and start it:

sudo systemctl daemon-reload
sudo systemctl enable --now qbittorrent-nox

The first start prints a legal notice acceptance to the journal; if the service does not come up, run sudo -u qbtuser qbittorrent-nox once interactively, accept the notice with y, stop it with Ctrl+C, then start the service again.

4. Log in and change the default password first

Browse to http://your-server-ip:8080. Recent qBittorrent versions print a temporary admin password to the journal on first start; read it with:

sudo journalctl -u qbittorrent-nox | grep -i password

Older versions use the well-known default of admin / adminadmin. Either way, treat this as step zero: a torrent client's web UI on a public IP with a known default password will be found by scanners. Go to Tools, Options, Web UI, set a long unique password, and tick "Ban client after consecutive failures".

5. Settings worth changing on day one

  • Downloads: set the default save path to /home/qbtuser/downloads, and enable a watched folder if you want to add torrents by dropping .torrent files over scp.
  • Connection: pick a fixed listening port rather than a random one, so your firewall rule can match it.
  • Speed: set upload and download limits a little below your plan's comfort level; a seedbox that saturates its link around the clock will chew through a transfer allowance faster than you expect. Your allowance is printed in your plan's name at checkout.
  • BitTorrent: set seeding limits (ratio or time) per your needs; private trackers usually want long seed times, which is exactly what an always-on box is for.

6. Optional: firewall the web UI

If you run UFW, allow SSH, your chosen listening port, and restrict the web UI to your own IP if it is stable:

sudo ufw allow OpenSSH
sudo ufw allow 51413
sudo ufw allow from YOUR.HOME.IP.HERE to any port 8080 proto tcp
sudo ufw enable

If your home IP changes often, leave 8080 open but rely on the strong password and failure bans, or put the UI behind a reverse proxy with HTTPS later.

Moving files off the box

Pull completed downloads home with scp or rsync (both covered in our transfer guide), or leave the library server-side. The client keeps seeding either way.

The rules, once

Seed content you have the rights to share: Linux distributions, open datasets, your own work, permissively licensed media, private-tracker content you are entitled to distribute. Distributing copyrighted material without the rights to it is abuse and is handled as such. If you are setting up a box for exactly this kind of legitimate seeding, our seedbox VPS page covers which plans fit best by transfer allowance.

Was this answer helpful?
Related Articles