Infrastructure
[!WARNING] PiVPN is maintained on a best-effort basis, please read more about it here. Previous announcement is here.
PiVPN is a set of shell scripts developed to easily turn your Raspberry Pi (TM) into a VPN server using two free, open-source protocols:
This script's primary mission in life is to allow a user to have as cost-effective as possible VPN at home without being a technical wizard, hence the design of PiVPN to work on a Raspberry Pi ($35) with a one-command installer followed by easy management of the VPN with the 'pivpn' command.
That being said...
PiVPN should be, bar none, the simplest and fastest way to Install and set up an extremely secure OpenVPN or WireGuard server on your Raspberry Pi. You won't need a guide or tutorial as PiVPN will do it all for you in a fraction of the time with hardened security settings in place by default.
We recommend running PiVPN on the latest RaspberryPi OS Lite image in a Raspberry Pi at your home so you can VPN into your network from not secure remote locations and safely use the internet. However, you can also use PiVPN in any Cloud Provider VPS running Ubuntu or Debian to assist those with untrustworthy ISPs. Running a VPN on a server elsewhere means you can connect to the VPN from home, and because your traffic will be getting out from the cloud/VPS provider, your ISP will only see encrypted traffic.
PiVPN should also work with most Ubuntu and Debian based distributions, including those using UFW by default instead of raw iptables.
curl -L https://install.pivpn.io | bash
curl https://raw.githubusercontent.com/pivpn/pivpn/master/auto_install/install.sh | bash
git clone https://github.com/pivpn/pivpn.git
bash pivpn/auto_install/install.sh
curl -L https://test.pivpn.io | TESTING= bash
This is inteded to be used when testing changes during development and not for standard installations. Without this the script will always checkout the master branch.
# Syntax
git clone < customgitrepourl >
bash pivpn/auto_install/install.sh --giturl < customgitrepourl > --gitbranch < customgitbranch >
# Example
git clone https://github.com/userthatforked/pivpn.git
bash pivpn/auto_install/install.sh --giturl https://github.com/userthatforked/pivpn.git --gitbranch myfeaturebranch
The unattended setup config also supports a custom giturl and branch.
pivpnGitUrl="https://github.com/userthatforked/pivpn.git"
pivpnGitBranch="myfeaturebranch"
PiVPN is purely community-driven and its our objective for PiVPN to work for as many people as possible. We welcome any feedback on your experience. Please be respectful and be aware PiVPN is maintained with volunteers free time!
Our prefered contact method is through Github Discussions page
But the you can also reach out at:
Feature requests are very welcome, please do so at:
shfmt -i 2 -ci -sr -w -bn
PiVPN is not taking donations but if you want to show your appreciation, then contribute or leave feedback on suggestions or improvements.
Contributions can come in all kinds of different ways! You don't need to be a developer to help out.
Still, if you consider PiVPN useful and want to Donate instead, then consider donating to: