/openvpn-install

OpenVPN server installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, Fedora and Amazon Linux 2

Primary LanguageShellMIT LicenseMIT

English | 中文 | Vídeo en Español

OpenVPN Server Auto Setup Script

Build Status  License: MIT

OpenVPN server installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, Fedora and Amazon Linux 2.

This script will let you set up your own VPN server in just a few minutes, even if you haven't used OpenVPN before. OpenVPN is an open-source, robust and highly flexible VPN protocol.

» See also: WireGuard VPN Server Auto Setup Script

Features

  • Fully automated OpenVPN server setup, no user input needed
  • Supports interactive install using custom options
  • Generates VPN profiles to auto-configure Windows, macOS, iOS and Android devices
  • Supports managing OpenVPN users and certificates
  • Optimizes sysctl settings for improved VPN performance

Installation

First, download the script on your Linux server*:

wget -O openvpn.sh https://get.vpnsetup.net/ovpn

Option 1: Auto install OpenVPN using default options.

sudo bash openvpn.sh --auto
See the script in action (terminal recording).

Note: This recording is for demo purposes only.

For servers with an external firewall (e.g. EC2/GCE), open UDP port 1194 for the VPN.

Option 2: Interactive install using custom options.

sudo bash openvpn.sh
Click here if you are unable to download.

You may also use curl to download:

curl -fL -o openvpn.sh https://get.vpnsetup.net/ovpn

Then follow the instructions above to install.

Alternative setup URLs:

https://github.com/hwdsl2/openvpn-install/raw/master/openvpn-install.sh
https://gitlab.com/hwdsl2/openvpn-install/-/raw/master/openvpn-install.sh

If you are unable to download, open openvpn-install.sh, then click the Raw button on the right. Press Ctrl/Cmd+A to select all, Ctrl/Cmd+C to copy, then paste into your favorite editor.

Advanced: Auto install using custom options.

Advanced users can auto install OpenVPN using custom options, by providing a Bash "here document" as input to the setup script. This method can also be used to provide input to manage users after install.

First, install OpenVPN interactively using custom options, and write down all your inputs to the script.

sudo bash openvpn.sh

If you need to remove OpenVPN, run the script again and select the appropriate option.

Next, create the custom install command using your inputs. Example:

sudo bash openvpn.sh <<ANSWERS
1
1194
2
client
y
ANSWERS

Note: The install options may change in future versions of the script.

* A cloud server, virtual private server (VPS) or dedicated server.

Next steps

After setup, you can run the script again to manage users or uninstall OpenVPN.

Get your computer or device to use the VPN. Please refer to:

Configure OpenVPN Clients

📖 Book: Set Up Your Own IPsec VPN, OpenVPN and WireGuard Server

Enjoy your very own VPN! ✨🎉🚀✨

Like this project? ❤️ Sponsor or ☕ Support and access extra content.

Credits

This script is based on the great work of Nyr and contributors, with enhancements and changes for compatibility with the Setup IPsec VPN project.

List of enhancements over Nyr/openvpn-install.
  • Improved compatibility with Setup IPsec VPN
  • Improved script reliability, user input and output
  • Supports auto install using default options
  • Added support for Amazon Linux 2
  • Supports exporting configuration for an existing VPN client
  • Supports listing existing VPN clients
  • Supports custom DNS server(s) for VPN clients
  • Optimizes sysctl settings for improved VPN performance
  • Improved creation of client config files when using sudo

...and more!

License

MIT