How to Create Your Own VPN Server and Why You Should Try It

How to Create Your Own VPN Server and Why You Should Try It
Photo by Dayne Topkin / Unsplash

In today's digital world, privacy and security are paramount. Whether you're working remotely, accessing sensitive information, or simply browsing the internet, protecting your data is essential. One of the most effective ways to secure your online activities is by using a Virtual Private Network (VPN). While there are many commercial VPN services available, creating your own VPN server can offer greater control, security, and customization. In this guide, we'll walk you through the steps to create your own VPN server using OpenVPN on a VPS (Virtual Private Server) and explore the reasons why setting up your own VPN is worth considering.

Why You Should Create Your Own VPN Server

Before diving into the technical steps, let's first explore the benefits of setting up your own VPN server:

1. Enhanced Privacy and Security

  • Commercial VPN services route your data through their servers, which means they have access to your online activities. By setting up your own VPN server, you eliminate the middleman and maintain full control over your data, ensuring that only you have access to your browsing history and online activities.

2. Avoid Bandwidth Throttling

  • Some ISPs (Internet Service Providers) throttle your internet speed based on your activities, such as streaming videos or downloading large files. With your own VPN, you can mask your online activities from your ISP, potentially avoiding throttling and enjoying a faster, more stable internet connection.

3. Access to Geo-Restricted Content

  • VPNs are commonly used to bypass geo-restrictions on content, such as streaming services that are only available in certain countries. By setting up your own VPN server in a specific location, you can access content that would otherwise be blocked in your region.

4. Cost-Effective Solution

  • While commercial VPN services typically require a subscription, creating your own VPN server can be a more cost-effective solution in the long run. With a low-cost VPS and a free VPN software like OpenVPN, you can set up a secure VPN server without recurring subscription fees.

5. Customization and Flexibility

  • When you create your own VPN server, you have full control over the configuration and settings. This allows you to customize the VPN to suit your specific needs, such as routing only certain traffic through the VPN while keeping other traffic on your regular connection.

Step-by-Step Guide to Creating Your Own VPN Server with OpenVPN

Now that you understand the benefits, let's walk through the process of setting up your own VPN server using OpenVPN on a VPS.

1. Choose Your VPS and Operating System

First, you'll need a VPS to host your VPN server. There are many VPS providers to choose from, such as DigitalOcean, Hetzner, and AWS. Once you've chosen a provider, select a VPS plan that meets your needs. A basic plan with 1 GB of RAM and 1 CPU core is usually sufficient for a personal VPN server.

For the operating system, you can choose between CentOS and Ubuntu. This guide will cover both options.

2. Update Your System

Before installing OpenVPN, it's important to update your system to ensure you have the latest security patches and software updates.

For CentOS, run the following command:

sudo yum update -y

For Ubuntu, run the following command:

sudo apt update

3. Download the OpenVPN Installation Script

To simplify the installation process, we'll use a script available on GitHub that automates the setup of OpenVPN.

Download the script using the following command:

wget https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh -O openvpn-install.sh

Next, give the script execution permissions:

chmod +x openvpn-install.sh

4. Run the Installation Script

Execute the script to start the OpenVPN installation process. You'll be prompted to configure several options during the installation, such as choosing the port for OpenVPN. It's recommended to use a random port for added security, while the rest of the options can be left at their default settings.

To start the installation, run:

./openvpn-install.sh

Follow the prompts to complete the installation.

5. Edit the OpenVPN Configuration

After the installation is complete, you'll need to edit the OpenVPN server configuration to customize how the VPN routes traffic. Specifically, if you want the VPN to route only certain IPs (such as social media platforms) to save bandwidth, you'll need to modify the configuration file.

Open the configuration file for editing:

vi /etc/openvpn/server.conf

Comment out any lines containing "push" and add the following line to prevent the VPN from routing all traffic:

push "route-nopull"

Next, add specific routes for the IPs you want to tunnel through the VPN. For example, to route traffic for Twitter, add the following lines:

push "route 104.244.42.0 255.255.255.0"
push "route 199.59.148.0 255.255.255.0"

6. Restart the OpenVPN Server

Once you've made the necessary changes to the configuration file, restart the OpenVPN server to apply the changes.

Restart the server and check its status with the following commands:

systemctl restart openvpn@server
systemctl status openvpn@server

If the server doesn't restart automatically, you can manually kill the process and restart it.

7. Install Firewalld for Security (Ubuntu)

If you're using Ubuntu, it's recommended to install Firewalld to manage your firewall settings and secure your VPN server.

First, install Firewalld:

sudo apt -y install firewalld

Next, disable UFW (Uncomplicated Firewall) if it's enabled:

sudo ufw disable

8. Configure Firewalld

To allow OpenVPN traffic through the firewall, you'll need to configure Firewalld by adding the port you chose during the OpenVPN installation.

Enable and start Firewalld with the following commands:

sudo systemctl enable firewalld
sudo systemctl start firewalld

Add the OpenVPN port (replace PORT with your chosen port):

sudo firewall-cmd --zone=public --permanent --add-port=PORT/udp
sudo firewall-cmd --zone=public --permanent --add-masquerade

Reload Firewalld to apply the changes:

sudo firewall-cmd --reload

9. Create and Manage VPN Users

To add or remove users from your VPN server, you can use the same OpenVPN installation script. This allows you to easily generate new .ovpn client configuration files for users.

Run the script again:

./openvpn-install.sh

Follow the prompts to create or remove users as needed.

10. Connect to Your VPN

Once you've created a user, you'll need to transfer the generated .ovpn file to your local machine. This file contains the necessary configuration for connecting to your VPN.

Download the OpenVPN client for your operating system from the official OpenVPN website: https://openvpn.net/client/

Import the .ovpn file into the OpenVPN client and connect to your VPN. You should now be able to browse securely through your own VPN server.

Conclusion: Why Creating Your Own VPN Server is Worth It

Setting up your own VPN server might seem daunting at first, but as we've shown, it's a straightforward process with significant benefits. By creating your own VPN server, you gain enhanced privacy and security, avoid ISP throttling, access geo-restricted content, and enjoy the flexibility to customize your VPN to suit your needs — all at a lower cost compared to commercial VPN services.

Whether you're looking to protect your online privacy, secure your remote work connections, or simply explore the capabilities of a VPS, setting up your own VPN server with OpenVPN is a rewarding and practical project. Give it a try, and experience the control and freedom that comes with running your own VPN server.

Subscribe to codingwithalex

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe