Virtual Private Network (VPN) is a great way to remotely connect to your Workstation/Server and browse internet. They add a layer of encryption to the network data transfer and protect it from snooping (MITM attacks) as well as bypass the internet restrictions imposed by governments or ISP.

OpenVPN GUI Setup Wizard


OpenVPN is a VPN program that allows you to setup both Server and Client machines. It is a different implementation compared to the default PPTP/L2TP/IPSec which is shipped with Windows Server 2019 and Windows 10.

In this tutorial, we will use Ubuntu 20.04 Server to install OpenVPN server via an interactive bash script. After that we will install OpenVPN-GUI client on Windows 10 and connect to the server using the client.ovpn file generated by the OpenVPN script.

OpenVPN Server/Client Requirements:

Time: 10 minutes
Client OS: Windows 10, 8, 7
Server Linux: Ubuntu 20.04 (Focal Fossa), Ubuntu 18.04.4 (Bionic Beaver) or lower till 16.04 – Arch Linux, CentOS 8, Fedora 28 and Debian 10 also supported on AMD64 / ARM64 platforms. Fresh installation is not necessary.
Root SSH access: SSH (Secured Shell) is a command-line server administration and file transfer tool that comes with Linux distributions by default.

Features of this OpenVPN Script:

  • DNS Leak Blocking
  • NAT IPv6 Support
  • Google, OpenDNS, Cloudflare DNS and many other public DNSes supported
  • IPtables Firewall Rules
  • Works on ARM64 / AMD64
  • Headless install supported

Special thanks to @angristan for this wonderful bash script.

How to Install OpenVPN Server on Ubuntu 20.04 using Script

1. Login to your Ubuntu Server Machine using SSH

Download and install the latest stable version of PuTTY client from here. It is a GUI based tool that allows you to remotely connect to your Ubuntu Server machine via Windows 10. You can skip this step if you already have physical access to your server.

• Launch PuTTY.exe 

• In the Host Name box, enter your Server IP address
• Enter the SSH port number if you have changed it. Default is Port 22
• Click [Open] after entering the host and port.
• If you are connecting for the first time, it will show you Security Alert about Host Key, click Yes.

PuTTY Security Alert
• Now you have connected to your Server. It will ask for username [Login as:], Type ‘root‘ and press Enter.
PuTTY Root login Password• Then type the root password and hit enter. The password you type will not show because of security reasons but it’s being input, don’t worry.
Ubuntu 19.10 SSH PuTTY• If the credentials are correct, you will be shown a Welcome text with System information, copyright notice, and Last Login IP address.

In the next step, you will have to type the CLI commands after the following text:


2. Download and Install OpenVPN Server using Installation Script 

In the PuTTY SSH terminal, copy and paste the commands below one by one. CTRL+V paste will not work, just copy the text and simply Right-click once inside terminal to paste, then press Enter.

curl -O

Curl SSH OpenVPN Script

Here we are downloading the OpenVPN Installation BASH Script using Curl command, wget can be used as well. The will be stored in /root directory. You can use ls to list the contents of directory.

Now we make the script executable for the system root using chmod command.

chmod +x

chmod openvpn script

And then finally start the automated installation by running this:


It will show a warning that your Ubuntu version might not be supported. Just typey and press Enter.

OpenVPN server script

Now the script will step-by-step ask to verify the server details from you. You just have to press keep pressing Enter key as most common configuration answers are pre-entered for your convenience. You might have to enter the client name though.

The setup is complete, as shown in the video above. The OpenVPN config file is saved as “techkhoji.ovpn” in /root directory. You can use ls command to check.

ovpn config file ssh

Now we have to replicate/export the techkhoji.ovpn file into our client Windows 10 machine.

Enter the following command in PuTTY terminal:

cat techkhoji.ovpn

The cat command will paste the contents the .OVPN config file inline. The name of your file might be different so type the filename accordingly.

Example of the displayed contents:

proto udp
remote 1194
dev tun
resolv-retry infinite
remote-cert-tls server
verify-x509-name server_YR2OtzcCEHXNpd1E name
auth SHA256
-----END OpenVPN Static key V1-----

Carefully highlight everything from </tls-crypt> to client by holding left-click and dragging the mouse cursor upwards. This will automatically copy the selected text to the clipboard.

techkhoji vpn config

openvpn config file

Launch Notepad on your Windows 10 machine. Paste the config text that you just copied. Save the file as techkhoji.ovpn on your desktop. Make sure the file extension ends with .ovpn

3. Install OpenVPN-GUI client on Windows 10


Now the easiest part of whole process. Head over to the official website of OpenVPN using this link and download and install the OpenVPN-GUI using the MSI installer. It will network TAP Windows VPN adapter and ask for UAC permissions, allow it.

OpenVPN GUI Installer2

Launch OpenVPN GUI from Desktop. It will tell you that no config file has been found. That’s fine.

OpenVPN GUI Config Warning

Right-click OpenVPN tray icon from taskbar and click Import File and select the techkhoji.ovpn file that we saved on desktop. It will say “File Imported Successfully

import config file openvpn

Now right-click the same tray-icon and click “Connect

openvpn gui connect

OpenVPN GUI will show you a connection log process and the window will disappear after successful connection.

OpenVPN Connection Log

Now open your Web-browser and type What’s my IP in the search bar. It will show you the VPN server IP.

vpn ip address check

Congrats! You have now setup your own OpenVPN server on Ubuntu 20.04 Linux and Windows 10 client. If you face any problems with the setup, do let me know via comment section.



Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.