Install Openvpn in Ubuntu 20

#!/bin/bash

# Update package lists
sudo apt-get update

# Install necessary packages
sudo apt-get install -y openvpn easy-rsa

# Create the OpenVPN server directory
sudo mkdir -p /etc/openvpn/server

# Generate the server certificates and keys
cd /etc/openvpn/server
sudo cp -r /usr/share/easy-rsa/ .
sudo ./easy-rsa/easyrsa init-pki
sudo ./easy-rsa/easyrsa build-ca nopass
sudo ./easy-rsa/easyrsa gen-dh
sudo ./easy-rsa/easyrsa build-server-full server nopass

# Generate the client certificates and keys
sudo ./easy-rsa/easyrsa build-client-full vpn nopass

# Generate the TLS auth key
sudo openvpn --genkey --secret ta.key

# Generate the OpenVPN server configuration
cat << EOF | sudo tee /etc/openvpn/server/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/server/pki/ca.crt
cert /etc/openvpn/server/pki/issued/server.crt
key /etc/openvpn/server/pki/private/server.key
dh /etc/openvpn/server/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
user nobody
group nogroup
EOF

# Generate the client username and password
echo "vpn:Toitudo04!" | sudo tee /etc/openvpn/server/creds.txt

# Create the client configuration directory
sudo mkdir -p /root/vpn

# Copy the necessary files to the client directory
sudo cp /etc/openvpn/server/pki/ca.crt /root/vpn/
sudo cp /etc/openvpn/server/pki/issued/vpn.crt /root/vpn/
sudo cp /etc/openvpn/server/pki/private/vpn.key /root/vpn/
sudo cp /etc/openvpn/server/ta.key /root/vpn/

# Generate the client configuration file
cat << EOF | sudo tee /root/vpn/vpn.ovpn
client
dev tun
proto udp
remote <server_ip_or_domain> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /root/vpn/ca.crt
cert /root/vpn/vpn.crt
key /root/vpn/vpn.key
tls-auth /root/vpn/ta.key 1
cipher AES-256-CBC
EOF

# Start the OpenVPN server
sudo systemctl enable openvpn-server@server
sudo systemctl start openvpn-server@server

echo "OpenVPN server has been installed and configured."
echo "The necessary files for the 'vpn' client have been copied to /root/vpn/"