This is an old revision of the document!
KPTree Torrent VM Setup
Deluge Headless setup
The main reference used is Havetheknowhow.com, specifically for the deluge headless setup, Havetheknowhow.com - How to install Deluge Headless. The Deluge support page is also a root source of knowledge Deluge systemd. Whatbox Deluge also has some interesting dialog.
If installing on a virtual machine (VM) it is important to also have set up the NFS to allow access to the main storage. Also, consider aligning the appropriate file system user and groups between the VM server and VM guests. (Check the local deluge directory actually exists for the user as otherwise the deluge and deluge web daemons will crash and not load. (For the Ubuntu Network Filing System, NFS, see Havetheknowhow.com - How to configure NFS Version 4, that contains configuration information for both the VM server and clients.
Unfortunately, Havetheknowhow.com does not seem to cover the alignment of user and groups between the main OS and VMs. I create a basic template machine and manual update the group and user id numbers to align, a use the basic information given in Linux: Changing UIDs and GIDs for a user. The process is tedious and takes a bit of care to complete, but once setup properly allows better operation between the server and virtual machines.
I use a dedicated VM guest for Deluge with a VPN set up on this VM. I have been using the VPN BTGuard for a few years now without any significant problems, save for BTGuard changing the IP address of their servers on occasion without informing end users, this affects the firewall software as noted below.
Recent changes not fully updated:
- I no longer use BTGuard, they were expensive and seem technically outdated. (There is a section on this below.)
- I am using Debian as the Media VM now. (I believe I will try to move fully to Debian for my server in the future instead of Ubuntu. As noted elsewhere I am now using Manjaro (XFCE) on my main desktop now instead of MSWindows. Manjaro is based upon Archlinux, not Debian or Redhat and seems a good desk top choice. I am certainly happy with it after using over 6 months. I am still forced to use Windows 10 and MS corporate software at work.)
deluge systemd setup
Setting up deluged and and deluge-web as systemd services is described in deluge docs How to create systemd services for Linux
We want to delay the start of the deluged.service to after the related drives are mounted.
First we need to check the units on on the machine. Use sudo systemctl list-units
and look for the relevant .mount
s . In mycase:
-.mount loaded active mounted Root Mount mnt-deluge.mount loaded active mounted /mnt/deluge mnt-disk2.mount loaded active mounted /mnt/disk2
Similarly, in the same listing look for the relevant .service
s:
deluge-web.service loaded active running Deluge Bittorrent Client Web Interface deluged.service loaded active running Deluge Bittorrent Client Daemon
Links:
- DigitalOcean Tutorials systemd:
systemd-analyze – Find System Boot-up Performance Statistics in Linux
OpenVPN with PrivateVPN
I decided to go with PrivateVPN that seems to get reasonably good reviews at the time of change over (2020-04-18) and my old VPN provided (BTGuard) was getting very poor reviews, was up for renewal, and was becoming comparatively expensive. The following is a list of resources to help with Linux Ubuntu CLI setup:
The PrivateVPN OpenVPN Linux CLI setup and associated download script worked well and was similar to the BTGuard setup, with the following issues easily found:
- Once the script was run PrivateVPN recommended using
sudo privatvpn
to run. The setup script creates a systemctl profile: openvpn@privatvpn.service. So the standard systemctl commands made much more sense to use! e.g.sudo systemctl start openvpn@privatvpn.service
with other standard systemctl operators: stop, status, enable, disable, etc. Similarly to get a better look at current log status:journalctl -u openvpn@privatvpn.service -xe
. - The description suggested editing
/etc/privatevpn.conf
to change the VPN servers, however the correct file was/etc/openvpn/privatevpn.conf
. - The remote server server in the downloaded script no longer was correct and had to be changed to one of the listed one in PrivateVPN Server List. The listed servers all look to now end with the domain
.host
. - The PrivatVPN tunnel host IP address is different from the end IP address, unlike BTGuard which were the same. The host IP address must be used in the NFTables firewall to prevent VPN leakage.
- I use https://www.findip-address.com/ to help find the corresponding ip address of the server.
- I then allow the tunnel VPN to pinhold these addresses only in my nftables setup,
sudo vim /etc/nftables.conf
. Basically the nftables setup firewalls the system to only allow wan through the tunnel, except the pinhole address required to setup the tunnel. wget http://ipinfo.io/ip -qO -
to check my current external ip address.- Unfortunately PrivatVPN changes their server ip address and does not seem to tell their end users.
OpenVPN setup with BTGuard
I decided to move away from BTGuard after many years of service. Primary reasons: 1. They were becoming more expense (in part of currency variation with USD) and 2. Their services seemed not to be very comprehensive and up to date. Basically not the best value for money.
Some Handy Commands to Check Configuration
- To start the vpn service:
sudo systemctl start openvpn@privatvpn.service
, wasopenvpn@btguard.service
- To check the end of the journal file for the vpn specific comments from the last boot:
journalctl -u openvpn@privatvpn.service -b 0 -xe
- To check current external IP address:
wget http://ipinfo.io/ip -qO -
- To list current tables in nftables:
sudo nft list table ip firewall
, not inet, specifically ip, as ip6 is disabled. - To start nftables:
sudo systemctl start nftables
- To check the journal for comments on nftables since the last boot:
journalctl -u nftables.service -b 0
- Other systemctl directives:
enable
: to start the systemctl service at bootdisable
: to not start the systemctl service at bootstart
: to start the systemctl servicestop
: to stop the systemctl servicestatus
: to provide the status information of the systemctl service.
Some of the last journal log lines are shown too, to see all the journal log use the journalctl command. Some journalctl directives:
-u service_unit
only list for service_unit-b n
Only list boot n, no number or 0 for last boot and 1 for previous and 2 for 2 previous etc.-xe
List end of file-f
Live continuous tail listing, until keyboard^c
NFTables Configuration
NFTables supersedes IPTables, although IPTables is still most common in use. I have taken the effort to learn both IPTables and NFTables and prefer the syntax of NFTables.
A problem with the OpenVPN system is should it fail then the IP connectivity falls back to the standard connection with all the VPN benefits lost. To diminish this risk, I have set up the Deluge VM with a NFtables based firewall to effectively stop external internet connection upon any failure of the VPN, that is only the VPN connectivity is allowed. I have learned from the original IPTables based configuration below. With the ease of use of NFTables I have been able to improve and optimise the firewall.
To install nftables: “sudo apt update” followed by sudo apt install nftables
If the nftables repository can not be found in Ubuntu 18.04 they will need to be added: sudo vim /etc/apt/sources.list
and add the following repositories:
deb http://archive.ubuntu.com/ubuntu/ bionic universe deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe deb http://security.ubuntu.com/ubuntu bionic-security universe
Sample NFTables configuration script for PrivatVPN
sudo vim /etc/nftables.conf
- Select the server from PrivateVPN Server List.
- The host IP address can be found using the following commands:
host au-mel.pvdata.host
orping au-mel.pvdata.host
. - Edit the vpn (host name) and firewall (host ip address) configuration files, respectively:
sudo vim /etc/openvpn/privatvpn.conf
&sudo vim /etc/nftables.conf
. - Restart the respective services:
sudo systemctl restart openvpn@privatvpn.service
&sudo systemctl restart nftables
- Remember the host IP address and end point IP address are not the same. To check end point IP use:
wget http://ipinfo.io/ip -qO -
Sample NFTables configuration script for BTGuard
sudo vim /etc/nftables.conf
The use of the counter directive allows the usage to be checked. I commented out lines that were not being used.
To list the firewall: sudo nft list table ip firewall
IPTables Configuration
A problem with this protection is should the OpenVPN system fail then the VPN protection will fail. To diminish this risk, I have set up the Deluge VM with an IPtables based firewall to effectively stop external internet connection upon any failure of the VPN. (The reference for the iptables filter script was AirVPN - Prevent leaks with Linux & iptables )