Updated Running qBittorrent without X server (WebUI only systemd service setup, Ubuntu 15.04 or newer) (markdown)

Agneev Mukherjee 2021-04-10 20:30:25 +05:30
parent d24e555ce4
commit 96803b4bf2

@ -1,4 +1,4 @@
# Introduction ## Introduction
qBittorrent has a feature-rich Web UI allowing users to control qBittorrent remotely. qBittorrent has a feature-rich Web UI allowing users to control qBittorrent remotely.
`qbittorrent-nox` is a version of qBittorrent that only has a WebUI instead of a windowed desktop GUI. `qbittorrent-nox` is a version of qBittorrent that only has a WebUI instead of a windowed desktop GUI.
@ -10,7 +10,7 @@ It can then be customized like any other `systemd` service, to automatically sta
Side Note: these instructions are written with Ubuntu in mind but should be much the same if not exactly the same for any modern distro that uses `systemd`. Side Note: these instructions are written with Ubuntu in mind but should be much the same if not exactly the same for any modern distro that uses `systemd`.
All instructions assume very basic knowledge of how to use the terminal. All instructions assume very basic knowledge of how to use the terminal.
# Install `qBittorrent-nox` ### Install `qbittorrent-nox`
Official qBittorrent packages are available for all mainstream Linux distributions, but distributions may not always contain the latest package versions. Official qBittorrent packages are available for all mainstream Linux distributions, but distributions may not always contain the latest package versions.
@ -19,7 +19,7 @@ Refer to https://github.com/qbittorrent/qBittorrent/wiki/Installing-qBittorrent
Alternatively, you can always compile from source. Check out the articles under the [Compilation](https://github.com/qbittorrent/qBittorrent/wiki#compilation) section of the Wiki home page for more information. Alternatively, you can always compile from source. Check out the articles under the [Compilation](https://github.com/qbittorrent/qBittorrent/wiki#compilation) section of the Wiki home page for more information.
# Create a separate user account (optional - you may want to do this for security depending on your setup) ### Create a separate user account (optional - you may want to do this for security depending on your setup)
Create the user that `qbittorrent-nox` will run under with: Create the user that `qbittorrent-nox` will run under with:
@ -43,7 +43,7 @@ This can be reversed if necessary with the command:
sudo usermod -s /bin/bash qbtuser sudo usermod -s /bin/bash qbtuser
``` ```
# Initialise qBittorent ## Initialize qBittorrent
Before we set up `qbittorrent-nox` to run as a background service, it's advisable to run it once so that we can get some configuration out of the way such as the legal disclaimer. Before we set up `qbittorrent-nox` to run as a background service, it's advisable to run it once so that we can get some configuration out of the way such as the legal disclaimer.
@ -71,7 +71,7 @@ Now is a good time to adjust some qBittorrent settings.
Visit the URL mentioned in `To control qBittorrent, access the Web UI at...` (might be different in your case), and log in with the credentials given. Visit the URL mentioned in `To control qBittorrent, access the Web UI at...` (might be different in your case), and log in with the credentials given.
Then you can go to `Tools -> Options` to change settings such as the WebUI port. Then you can go to `Tools -> Options` to change settings such as the WebUI port.
Quit the running `qbittorrent-nox` process by pressing `Ctrl-c` on your keyboard in the terminal: Quit the running `qbittorrent-nox` process by pressing <kbd>Ctrl</kbd>-<kbd>c</kbd> on your keyboard:
```txt ```txt
^CCatching signal: SIGINT ^CCatching signal: SIGINT
@ -80,20 +80,20 @@ Exiting cleanly
You can now stop impersonating the qbittorent user by executing the `exit` command or simply pressing `Ctrl-d`. You can now stop impersonating the qbittorent user by executing the `exit` command or simply pressing `Ctrl-d`.
# Setup the `systemd` service ## Setup the `systemd` service
On Ubuntu, system-wide `systemd` service definition files are located under `/etc/systemd/system/` (for other distros it might be a different directory), so we'll create the service definition file for `qbittorrent-nox` there. On Ubuntu, system-wide `systemd` service definition files are located under `/etc/systemd/system/` (for other distros it might be a different directory), so we'll create the service definition file for `qbittorrent-nox` there.
Create a new file, `/etc/systemd/system/qbittorrent.service`, and edit it with the appropriate permissions and text editor of your choice, for example: Create a new file, `/etc/systemd/system/qbittorrent.service`, and edit it with the appropriate permissions and text editor of your choice, for example:
```sh ```sh
sudoedit /etc/systemd/system/qbittorrent.service sudo nano /etc/systemd/system/qbittorrent.service
``` ```
Save the file with the following contents or similar. Save the file with the following contents or similar.
You may modify them as-needed to better suit your needs: You may modify them as-needed to better suit your needs:
```txt ```ini
[Unit] [Unit]
Description=qBittorrent-nox service Description=qBittorrent-nox service
Documentation=man:qbittorrent-nox(1) Documentation=man:qbittorrent-nox(1)
@ -112,6 +112,7 @@ ExecStart=/usr/bin/qbittorrent-nox
# uncomment this to use "Network interface" and/or "Optional IP address to bind to" options # uncomment this to use "Network interface" and/or "Optional IP address to bind to" options
# without this binding will fail and qBittorrent's traffic will go through the default route # without this binding will fail and qBittorrent's traffic will go through the default route
# AmbientCapabilities=CAP_NET_RAW # AmbientCapabilities=CAP_NET_RAW
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
``` ```
@ -123,7 +124,7 @@ The qBittorrent service is now ready to be used. To start the service on system
# Controlling the service # Controlling the service
- start the service: `sudo systemctl start qbittorrent` - start the service: `sudo systemctl start qbittorrent`
- check service status: `sudo systemctl status qbittorrent` - check service status: `systemctl status qbittorrent`
- stop the service: `sudo systemctl stop qbittorrent` - stop the service: `sudo systemctl stop qbittorrent`
- enable/disable it to start up on boot: `sudo systemctl enable qbittorrent` - enable/disable it to start up on boot: `sudo systemctl enable qbittorrent`
- this should output something like the following: - this should output something like the following:
@ -148,15 +149,16 @@ sudo journalctl -u qbittorrent.service
For more information on how to use and customize `systemd` logging, refer to its documentation. For more information on how to use and customize `systemd` logging, refer to its documentation.
# `systemd` Service Dependencies (optional) # `systemd` service dependencies (optional)
Let's say that you've configured `qbittorrent-nox` to download files to a directory that is in another drive, for example, mounted on `/media/user/volume`. Let's say that you've configured `qbittorrent-nox` to download files to a directory that is in another drive, for example, mounted on `/media/user/volume`.
It's important that you edit the service created above and add some `systemd` dependencies to prevent qbittorrent from writing files on a directory that it should not, in case your drive fails to mount or is accidentally unmounted.
It's important that you edit the service created above and add dependencies to `systemd` service to prevent qBittorrent from writing files on a directory that it should not, in case your drive fails to mount or is accidentally unmounted.
After you added the mount point to the `/etc/fstab`, it should have a line like this: After you added the mount point to the `/etc/fstab`, it should have a line like this:
```txt ```txt
UUID=c987355d-0ddf-4dc7-bbbc-bab8989d0690 /media/volume ext4 defaults,nofail 0 0 UUID=aa-bb-cc /media/volume ext4 defaults,nofail 0 0
``` ```
The `nofail` option prevents the system from stopping the boot process in case the drive can't mount on startup. The `nofail` option prevents the system from stopping the boot process in case the drive can't mount on startup.
@ -164,7 +166,7 @@ The `nofail` option prevents the system from stopping the boot process in case t
You should edit `/etc/systemd/system/qbittorrent.service` to add your volume's systemd name (for example: `media-volume.mount`) to the line `After=network-online.target` and add the line `BindsTo=media-volume.mount` to bind the qbittorrent service to the mount point that you want it to write the files. You should edit `/etc/systemd/system/qbittorrent.service` to add your volume's systemd name (for example: `media-volume.mount`) to the line `After=network-online.target` and add the line `BindsTo=media-volume.mount` to bind the qbittorrent service to the mount point that you want it to write the files.
Your service file should look like this: Your service file should look like this:
```txt ```ini
# ... other stuff ... # ... other stuff ...
[Unit] [Unit]
@ -177,6 +179,7 @@ BindsTo=media-volume.mount
The `media-volume.mount` is a `systemd` convention created dynamically at boot, based on the entries found in `/etc/fstab`. The `media-volume.mount` is a `systemd` convention created dynamically at boot, based on the entries found in `/etc/fstab`.
Conventions such as these are used by `systemd` to define conditions around services, such as requiring a drive to be mounted before the service will start. Conventions such as these are used by `systemd` to define conditions around services, such as requiring a drive to be mounted before the service will start.
Refer to [Systemd.mount reference](http://man7.org/linux/man-pages/man5/systemd.mount.5.html) for further reading. Refer to [Systemd.mount reference](http://man7.org/linux/man-pages/man5/systemd.mount.5.html) for further reading.
It follows a simple logic: if your drive is mounted on `/media/volume`, the unit name will be `media-volume.mount`, if it's on `/mnt/disk`, the unit will be `mnt-disk.mount`. It follows a simple logic: if your drive is mounted on `/media/volume`, the unit name will be `media-volume.mount`, if it's on `/mnt/disk`, the unit will be `mnt-disk.mount`.