Server Enthusiast

How to use your Raspberry Pi as home VPN server?

Created July 13, 2020

Introduction

Paying a monthly fee for a VPN could be costly. What you could do instead is get a Raspberry Pi for a one time payment of ~$30 and setup your own home VPN server on your Raspberry Pi.

Of course networking and VPNs in general can be quite hard to setup and manage, especially if you do not have a lot of experience.

However, I recently discovered a tool called PiVPN which I believe offers the simplest way of setting up and managing a VPN server on Raspberry Pi.

PiVPN offers both WireGuard and OpenVPN as options. In this tutorial I use OpenVPN and will show you how to turn your Raspberry Pi into a VPN server and how to use your Phone to connect to that VPN anywhere you are.

Prerequisites

Before you get started you would need a Raspberry Pi and a fresh Raspberry Pi OS (previously called Raspbian) installed.

You can download Raspberry Pi OS from here:

https://raspberrypi.org/downloads

Installation

PiVPN offers a convenience script which would do all of the hard work for you so that you don't have to install any Kernel modules manually or follow a lengthy, complicated and confusing tutorials.

All that you need to do is to SSH to your Raspberry Pi and then run the following command:

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

Once you run the script it might take a while to complete as it does a lot of things including:

Managing your VPN

PiVPN comes with a nice set of tools that let you manage your VPN clients.

pivpn add

This would generate a your_username.ovpn config file which you then need to use to connect to your VPN.

pivpn revoke
pivpn list

Connecting to your PiVPN

First you would want to start by installing a OpenVPN client.

apt install openvpn
mkdir -p /etc/openvpn/client
chown root:root /etc/openvpn/client
chmod 700 /etc/openvpn/client

Then copy the your_username.ovpn that was generated in the last step to your Linux Desktop and move it to the /etc/openvpn/client/ foler:

mv whatever.ovpn /etc/openvpn/client/

After that to connect to your VPN just run:

sudo openvpn /etc/openvpn/client/your_username.ovpn

If you are using Mac, I would recommend using the Tunnelblick client. You can follow the instructions from their official documentation on how to set it all up here.

OpenVPN on your Phone

You could also use your PiVPN and connect from your Phone.

If you have an Android phone, you can install the following OpenVPN Connect app here:

https://play.google.com/store/apps/details?id=net.openvpn.openvpn

After that , click on 'Import' from the menu and choose the directory on your device where you stored the .ovpn file.

Then to connect, click on the profile under OpenVPN Profile and press Connect.

If you are using iOS, the procedure is quite similar. Start by installing the OpenVPN Connect app:

https://apps.apple.com/it/app/openvpn-connect/id590379981

Then go to the app where you copied the .ovpn file to, select the file, find an icon or button to 'Share' or 'Open with', and choose to open with the OpenVPN app.

Conclusion

For more information make sure to check out the the PiVPN repository.

Also make sure to star and contribute to that amazing open-source project!