The simplest way to setup and manage a VPN,
designed for Raspberry Pi.

  • ::: INSTALLATION :::
    curl -L https://install.pivpn.io | bash

    ::: Test (unstable) Branch :::
    curl -L https://test.pivpn.io | TESTING= bash

SIMPLE ::: Yes, that's it! It is *almost* that simple.
To elaborate a little more, you will want to install Raspberry Pi OS Lite on a Raspberry pi, we strongly recommend using the latest Raspberry Pi OS Lite image but the normal Raspberry Pi OS image will work as well, preferably enable ssh access and then begin.
After install, you may need to open a port on your router.
There is a (now slightly outdated) guided walkthrough of the install available here.
More information is also available on the PiVPN GitHub

FLEXIBLE ::: Think if you can figure out how to do this yourself you'll have more options?
This installer is no slouch! It'll allow you to customize your VPN port, key encryption strength, client DNS server, and more! Even if you are an expert, the options presented within are a perfect foundation for any openvpn server installation. Although this is geared toward running on a $35 Raspberry Pi, the installer will work just as well on an Ubuntu or Debian server.

MANAGEABLE ::: Installation is finished, now what do you do? No worries, we've got you covered!
Provided free of charge on your server is a new 'pivpn' command. Simply run pivpn and you are presented with all of the available options. Easily add client profiles (OVPN), revoke them, list the ones you created, etc. There is also an option to completely remove everything the installer did with the 'pivpn uninstall' command. So you can experiment with pivpn with no fear of irreversible changes to your server.

SECURE ::: Even though this installer makes everything so trivial, it doesn't mean it gives you trivial security settings.
Everything has been upgraded right out of the box beyond the default settings to harden the security of the server and client. Starting with offering you the ability to enable unattended-upgrades which will automatically patch your server with security updates. Next, the server configuration will only use the latest TLS protocol. Both the data and control channels use upgraded AES and SHA256 encryption and hash algorithms. Options are pre-configured to verify your server certificate to battle MITM attack vectors. All this and more are configured out of the box by the pivpn installer. This is a detailed level of hardening you'll have a difficult time finding elsewhere.



There are quite a few various scripts that in some way install openvpn for you. This project, in particular, was started by 0-kaladin and began from the code by StarshipEngineer to help to install OpenVPN on a raspberry pi as simple as it can be. This is still the striving goal today (see Why This Is Important just below) however, even with the solid foundation provided by StarshipEngineer, 0-kaladin came across the Pi-Hole project and saw just how easy the installation can be! He took the scripts from StarshipEngineer, the framework, and functions from the pi-hole project, and merged them into what you now see as PiVPN. Then added a ton of functionality, failsafe checks, hardened security, etc...
Currently, community-maintained this should be bar none, the simplest and fastest way to set up an OpenVPN server on your raspberry pi that leaves you with an extremely secure configuration.
We've made a few additions and tweaks as well to help make managing the OpenVPN server even easier after install.
Everything can be managed by using a new 'pivpn' command on your system, this includes adding new client certs, revoking them, and completely uninstalling the pivpn.
There is a lot more that can be added and we hope the suggestions and improvements can be contributed by the community at large.

Why This Is Important

There are a few driving factors that make this very important to us, and we believe, the community at large. In this post-Snowden era where our privacy and security are infringed upon, not only by bad actors but potentially by those whom we thought should be protecting these very ideals, normal citizens must take matters into their own hands. The trouble with this, many times, is that if you are not very technical you may not know how to begin. I believe the EFF has helped lower a barrier of encrypted sites with their Let's Encrypt initiative. Allowing many to now have their sites on encrypted channels. To us, the next logical step here is also ensuring the pipe you are using is as secure as possible. This not only could include unknown networks at airports, Starbucks, generic public hot-spots; but also your ISP. To that end, We'd like to make sure these scripts also work on a Debian image from an Amazon free tier server. It is important that more and more people, have access to protecting their traffic online. Its clear others won't hand you this protection. PiVPN tries to make it easier for you to grab.

Technical Information & Features

  • Supports OpenVPN 2.4
  • Supports WireGuard
  • Elliptic curve encryption keys up to 512 bit
  • Integrates with Bitwarden
  • iOS keychain support
  • Supports multiple DNS providers
  • Supports Custom DNS Servers
  • Custom Search Domains (OpenVPN Only)
  • Runs with Pi-Hole®
  • Doesn't need to be a raspberry pi, It runs on any Debian VPS Server
  • Supports unattended installation for automated deployments
For more information on PiVPN be sure to check the PiVPN documentation
It could also be helpful to browse closed Issues with the Information or Question tag.


Contributions are Welcome and Encouraged!

The PiVPN installation code is available on github.
The PiVPN documentation is also available on github
Please make sure you read the Contributors Guide
After reading the Contributors Guide , checkout for any issues especially with the 'help wanted' label.