Some days ago I wrote a tutorial on installing Pritunl server on Orange Pi 5, which is a compact single-board computer (SBC). The CPU turned out to be mighty powerful and quite sufficient to handle significant loads (e.g. streaming HQ Youtube videos on multiple client devices).
Here’s an updated tutorial with the installation of the latest Pritunl server on the Orange Pi 5 running Armbian Resolute (Ubuntu) 26.2.5 with 6.18.24 kernel. The guide was slightly updated and improved:
### Installing pritunl
sudo su
cd &&
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor &&
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list &&
apt update && sudo apt install golang-go mongodb-org net-tools openvpn openssl iptables ipset ca-certificates psmisc gcc python3-dev python3-setuptools python3-virtualenv libssl-dev libffi-dev -y &&
systemctl start mongod && sudo systemctl enable mongod &&
tee -a ~/.bashrc << EOF
export VERSION=1.34.4575.42
export GOPATH=\$HOME/go
export GOROOT=/usr/lib/go
export PATH=/usr/lib/go/bin:\$PATH
EOF
source ~/.bashrc &&
mkdir pritunl && cd pritunl &&
curl -fsSL -o $VERSION.tar.gz https://github.com/pritunl/pritunl/archive/refs/tags/$VERSION.tar.gz &&
tar xf $VERSION.tar.gz && rm $VERSION.tar.gz &&
cd pritunl-$VERSION &&
sed -i "s/’/'/" LICENSE &&
sed -i -e '/^dataclasses==0.8/,+2d' requirements.txt &&
virtualenv --python=python3 /usr/lib/pritunl &&
/usr/lib/pritunl/bin/pip install -U pip &&
/usr/lib/pritunl/bin/pip install -U setuptools &&
/usr/lib/pritunl/bin/python setup.py build &&
/usr/lib/pritunl/bin/pip install --require-hashes -r requirements.txt
go install github.com/pritunl/pritunl-dns@latest &&
go install github.com/pritunl/pritunl-web@latest &&
ln -s ~/go/bin/pritunl-dns /usr/bin/pritunl-dns &&
ln -s ~/go/bin/pritunl-web /usr/bin/pritunl-web &&
/usr/lib/pritunl/bin/python setup.py install &&
ln -s /usr/lib/pritunl/bin/pritunl /usr/bin/pritunl &&
systemctl start pritunl && sudo systemctl enable pritunl
A couple of comments on the procedure:
- The compilation process is almost identical in principal to the one used in the previous tutorial, so no big surprises;
- python3-virtualenv no longer came with Python, so I needed to add it manually. Maybe there is a more elegant approach I am not aware of or maybe it’s no longer needed, but I digress;
- The VERSION constant is hardcoded. Maybe there is a more elegant way;
- The installation is performed under Root user. In multiple tests it simply showed as a much more reliable approach overall, although you may be able to get away with adding a zillion of sudo’s.
To address possible questions about other OS’es and boards - this tutorial is a boilerplate for the installation process. Most likely with minor adjustments it can be tailored to your case. Your installed packages and dependencies can differ, so be prepared to get your hands dirty if the process fails at one point. Be patient and you should be good!
Cheers!