This install is similar to the install on Raspbian and a raspberry pi, still there are some specialities and traps you can run into, especially with the virtual architecture and openvpn service. If you want to install the same setup on a Raspberry Pi, please read my earlier guide on this topic.

WARNING: the openvpn service of ExpressVPN is heavily CPU intense and affects your download speed through expressVPN dramatically!
Therefore you should ALWAYS go with the fastest available CPU assigned to your VM container. For example my Intel Atom C2758 with VT-x2 and AES caps out at around 15 to 20 Mbps.

First create a new PRIVILIGED Proxmox Container.

Make sure your container is shut down, which is indicated in the left column in proxmox webinterface where it shows your install grayed out. Now SSH into your proxmox host server and edit the config of the container you are running expressVPN and jdownloader in. The config is located in /etc/pve/lxc/<ct-id>.conf
So if the container ID of your install is 102 then type on your proxmox cli:

sudo nano /etc/pve/lxc/102.conf

Next add the following two lines to it at the end:

For Proxmox 6.x add this:

lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry = /dev/net dev/net none bind,create=dir

For Proxmox 7.x add this (you need to use lxc.cgroup2):

lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry = /dev/net dev/net none bind,create=dir

Then save and exit the conf file with STRG+X and confirm overwrite with Y.

Boot up your container again and SSH into it. Enter the following command to utilize the prior conf file changes:

mkdir -p /dev/net
mknod -m 666 /dev/net/tun c 10 200

Now we can install expressvpn and jdownloader just as usual and described in my earlier article about vpn and jd on raspbian.

Here is the quick version of the installation process, for more details refer to the longer article:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get -y autoremove
sudo apt-get clean

Mount external volume for storage (replace X.X with your server IP address)

sudo mkdir -m 777 /mnt/incoming
sudo mount 192.168.X.X:/volume1/incoming/00_download /mnt/incoming

If mount was successful its IMPORTANT to only automount the nfs share with crontab on boot as root, this is a Proxmox speciality:

sudo crontab -e

On the last line add:

@reboot mount 192.168.X.X:/volume1/incoming/00_download/ /mnt/incoming

Install expressvpn:

cd ~/
sudo dpkg -i expressvpn_2.3.0-1_armhf.deb
expressvpn activate
expressvpn preferences set send_diagnostics false
expressvpn preferences set network_lock default
expressvpn autoconnect true
expressvpn connect ch
Test vpn connection:
expressvpn status

Install headless jDownloader:

mkdir ~/bin
mkdir ~/bin/jdownloader
cd ~/bin/jdownloader
sudo apt-get install openjdk-11-jre-headless
java -jar JDownloader.jar -norestart

Create autostart service:

cd /etc/systemd/system
sudo nano jdownloader.service

add there:



ExecStart=/usr/bin/java -jar /home/pi/bin/jdownloader/JDownloader.jar



Reload service with:

sudo systemctl daemon-reload
sudo systemctl start jdownloader.service
sudo systemctl enable jdownloader.service
sudo reboot

Go to and wait until your new install appears. Last open up the device and setup the download path of your mounted share volume in the settings, in our case: /mnt/incoming