openvpn-install/README.md

153 lines
5.1 KiB
Markdown
Raw Permalink Normal View History

2022-10-10 05:21:37 +02:00
[English](README.md) | [中文](README-zh.md) | [Vídeo en Español](https://www.youtube.com/watch?v=99qtaJU2E2k)
2022-05-22 05:10:41 +02:00
2022-05-26 06:08:17 +02:00
# OpenVPN Server Auto Setup Script
2022-05-20 15:36:14 +02:00
2022-10-05 01:06:49 +02:00
[![Build Status](https://github.com/hwdsl2/openvpn-install/actions/workflows/main.yml/badge.svg)](https://github.com/hwdsl2/openvpn-install/actions/workflows/main.yml)  [![License: MIT](docs/images/license.svg)](https://opensource.org/licenses/MIT)
2023-09-14 07:03:49 +02:00
OpenVPN server installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, Fedora, openSUSE, Amazon Linux 2 and Raspberry Pi OS.
2013-05-14 14:04:19 +02:00
2023-09-14 07:03:49 +02:00
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](https://openvpn.net/community-resources/reference-manual-for-openvpn-2-6/) is an open-source, robust and highly flexible VPN protocol.
2013-05-14 14:04:19 +02:00
2023-04-24 06:54:32 +02:00
See also: [WireGuard](https://github.com/hwdsl2/wireguard-install) and [IPsec VPN](https://github.com/hwdsl2/setup-ipsec-vpn) server auto setup scripts.
2023-04-10 00:33:15 +02:00
2023-08-20 07:20:57 +02:00
**[» :book: Book: Build Your Own VPN Server: A Step by Step Guide](https://books2read.com/vpnguide?store=amazon)**
2022-10-11 08:31:40 +02:00
2022-10-15 05:07:21 +02:00
## Features
2022-10-11 08:31:40 +02:00
2022-10-15 05:07:21 +02:00
- 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
2022-05-26 06:08:17 +02:00
## Installation
2013-05-14 14:04:19 +02:00
2022-10-15 05:07:21 +02:00
First, download the script on your Linux server\*:
2022-10-01 22:36:45 +02:00
```bash
2022-10-03 06:18:07 +02:00
wget -O openvpn.sh https://get.vpnsetup.net/ovpn
2022-10-10 05:21:37 +02:00
```
**Option 1:** Auto install OpenVPN using default options.
```bash
2022-10-01 22:36:45 +02:00
sudo bash openvpn.sh --auto
```
2022-10-15 05:07:21 +02:00
<details>
<summary>
See the script in action (terminal recording).
</summary>
2022-10-25 07:20:56 +02:00
**Note:** This recording is for demo purposes only.
2022-10-15 05:07:21 +02:00
<p align="center"><img src="docs/images/demo1.svg"></p>
</details>
2022-10-03 06:18:07 +02:00
2023-09-13 05:59:32 +02:00
For servers with an external firewall (e.g. [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/firewall/docs/firewalls)), open UDP port 1194 for the VPN.
2022-10-03 06:18:07 +02:00
2022-10-01 22:36:45 +02:00
**Option 2:** Interactive install using custom options.
2022-05-20 15:36:14 +02:00
```bash
sudo bash openvpn.sh
```
2023-09-12 06:25:56 +02:00
You can customize the following options: VPN server's DNS name, protocol (TCP/UDP) and port, DNS server for VPN clients and name of the first client.
2023-09-14 07:03:49 +02:00
For servers with an external firewall, open your selected TCP or UDP port for the VPN.
2022-05-28 22:17:34 +02:00
<details>
<summary>
2022-10-10 05:21:37 +02:00
Click here if you are unable to download.
2022-05-28 22:17:34 +02:00
</summary>
2022-06-03 15:29:43 +02:00
You may also use `curl` to download:
2022-05-28 22:17:34 +02:00
```bash
2022-10-03 06:18:07 +02:00
curl -fL -o openvpn.sh https://get.vpnsetup.net/ovpn
2022-05-28 22:17:34 +02:00
```
2022-10-10 05:21:37 +02:00
Then follow the instructions above to install.
2022-09-20 04:41:25 +02:00
Alternative setup URLs:
2022-06-03 15:29:43 +02:00
```bash
https://github.com/hwdsl2/openvpn-install/raw/master/openvpn-install.sh
2022-09-20 04:41:25 +02:00
https://gitlab.com/hwdsl2/openvpn-install/-/raw/master/openvpn-install.sh
2022-06-03 15:29:43 +02:00
```
2022-05-28 22:17:34 +02:00
If you are unable to download, open [openvpn-install.sh](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.
</details>
2022-11-02 05:51:47 +01:00
<details>
<summary>
Advanced: Auto install using custom options.
</summary>
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.
```bash
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:
```bash
sudo bash openvpn.sh <<ANSWERS
2023-09-13 05:59:32 +02:00
n
2022-11-02 05:51:47 +01:00
1
1194
2
client
y
ANSWERS
```
**Note:** The install options may change in future versions of the script.
</details>
2022-05-28 22:17:34 +02:00
2022-06-02 16:09:14 +02:00
\* A cloud server, virtual private server (VPS) or dedicated server.
## Next steps
2022-05-22 03:16:43 +02:00
After setup, you can run the script again to manage users or uninstall OpenVPN.
2022-05-20 15:36:14 +02:00
2022-10-03 06:18:07 +02:00
Get your computer or device to use the VPN. Please refer to:
**[Configure OpenVPN Clients](docs/clients.md)**
2022-05-22 05:53:14 +02:00
2023-08-11 06:15:34 +02:00
**Read [:book: VPN book](https://ko-fi.com/post/Support-this-project-and-get-access-to-supporter-o-O5O7FVF8J) to access [extra content](https://ko-fi.com/post/Support-this-project-and-get-access-to-supporter-o-O5O7FVF8J).**
2013-05-14 14:04:19 +02:00
2023-07-01 23:57:27 +02:00
Enjoy your very own VPN! :sparkles::tada::rocket::sparkles:
2022-07-14 05:06:29 +02:00
2022-05-26 06:08:17 +02:00
## Credits
2013-05-14 14:04:19 +02:00
2022-05-24 15:39:21 +02:00
This script is based on the great work of [Nyr and contributors](https://github.com/Nyr/openvpn-install), with enhancements and changes for compatibility with the [Setup IPsec VPN](https://github.com/hwdsl2/setup-ipsec-vpn) project.
2013-05-14 14:04:19 +02:00
2022-09-20 04:41:25 +02:00
<details>
<summary>
List of enhancements over Nyr/openvpn-install.
</summary>
- Improved compatibility with Setup IPsec VPN
- Improved script reliability, user input and output
2022-10-01 22:36:45 +02:00
- Supports auto install using default options
2023-09-12 06:25:56 +02:00
- Supports using a DNS name as server address
2023-09-03 08:42:39 +02:00
- Added support for openSUSE Linux
2022-09-20 04:41:25 +02:00
- Added support for Amazon Linux 2
- Supports exporting configuration for an existing VPN client
2022-09-26 05:53:06 +02:00
- Supports listing existing VPN clients
2022-09-20 07:10:54 +02:00
- Supports custom DNS server(s) for VPN clients
2022-10-15 05:07:21 +02:00
- Optimizes `sysctl` settings for improved VPN performance
2022-09-20 04:41:25 +02:00
- Improved creation of client config files when using `sudo`
...and more!
</details>
2022-05-26 06:08:17 +02:00
## License
2014-12-10 23:31:04 +01:00
2022-05-20 15:36:14 +02:00
MIT