First of all, you will need to install Docker in case you don’t have already installed that
Here the quick way:
Second, you will need to create ovpn-install.sh
file and copy&paste code bellow
#!/bin/bash
myip=
while IFS=$': \\t' read -a line ;do
[ -z "${line%inet}" ] && ip=${line[${#line[1]}>4?1:2]} &&
[ "${ip#127.0.0.1}" ] && myip=$ip
done< <(LANG=C /sbin/ifconfig)
apt update
apt install -y expect
mkdir -p openvpn/ovpns
cat > ./openvpn/addvpnuser.sh << EOF
#!/usr/bin/expect -f
# Run example expect ./addvpnuser.sh username
set CLIENTNAME [lindex \\$argv 0];
set timeout -1
spawn echo "\\$CLIENTNAME"
# with a passphrase (recommended)
# docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
# without a passphrase (not recommended)
spawn docker-compose run --rm openvpn easyrsa build-client-full \\$CLIENTNAME nopass
sleep 5
expect "Enter pass phrase for /etc/openvpn/pki/private/ca.key:"
sleep 3
send -- "Ir3hp3sFM30yFFob\\r";
expect eof
EOF
cat > ./openvpn/revokeuser.sh << EOF
#!/usr/bin/expect -f
# Run example expect ./revokeuser.sh username
set CLIENTNAME [lindex \\$argv 0];
set timeout -1
spawn echo "\\$CLIENTNAME"
spawn docker-compose run --rm openvpn ovpn_revokeclient \\$CLIENTNAME nopass
sleep 5
expect "Continue with revocation:"
sleep 3
send -- "yes\\r";
sleep 5
expect "Enter pass phrase for /etc/openvpn/pki/private/ca.key:"
sleep 3
send -- "Ir3hp3sFM30yFFob\\r";
sleep 5
expect "Enter pass phrase for /etc/openvpn/pki/private/ca.key:"
sleep 3
send -- "Ir3hp3sFM30yFFob\\r";
expect eof
EOF
cat > ./openvpn/docker-compose.yml << EOF
version: '2'
services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
ports:
- "1194:1194/udp"
restart: always
volumes:
- ./openvpn-data/conf:/etc/openvpn
EOF
cd ./openvpn
docker-compose run --rm openvpn ovpn_genconfig -u udp://$myip
cat > ./generate-certs.sh << EOF
#!/usr/bin/expect -f
set timeout -1
spawn docker-compose run --rm openvpn ovpn_initpki
expect "Enter New CA Key Passphrase:"
send -- "Ir3hp3sFM30yFFob\\r";
sleep 3
expect "Re-Enter New CA Key Passphrase: "
send -- "Ir3hp3sFM30yFFob\\r";
sleep 3
expect "your user, host, or server name"
sleep 1
send -- "\\r";
sleep 10
expect "Enter pass phrase for /etc/openvpn/pki/private/ca.key:"
send -- "Ir3hp3sFM30yFFob\\r";
sleep 3
expect "Enter pass phrase for /etc/openvpn/pki/private/ca.key:"
send -- "Ir3hp3sFM30yFFob\\r";
sleep 5
expect "CRL file: /etc/openvpn/pki/crl.pem"
expect eof
EOF
expect ./generate-certs.sh
sudo chown -R $(whoami): ./openvpn-data
docker-compose up -d openvpn
Then, run ovpn-install.sh
file by running command:bash ovpn-install.sh
After the successful execution of this code, you could add your user by running command bash ./openvpn/addvpnuser.sh {username}
Enjoy!