From f023de298df6f263bfd7649e65e64222cbfdf182 Mon Sep 17 00:00:00 2001 From: Cliff Cotino Date: Mon, 25 Feb 2019 20:02:50 +0100 Subject: [PATCH] Headless installation (#390) Fixes #261 --- README.md | 21 +++++++++++++++++++++ openvpn-install.sh | 10 ++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ed5485e..9bfb640 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,27 @@ In your home directory, you will have `.ovpn` files. These are the client config If you have any question, head to the [FAQ](#faq) first. +### Headless install + +It's also possible to run the script headless, e.g. without waiting for user input, in an automated manner. + +Example usage: +```bash +export APPROVE_INSTALL=y +export APPROVE_IP=y +export IPV6_SUPPORT=n +export PORT_CHOICE=1 +export PROTOCOL_CHOICE=1 +export DNS=1 +export COMPRESSION_ENABLED=n +export CUSTOMIZE_ENC=n +export CLIENT=clientname +export PASS=1 +./openvpn-install.sh +``` + +If the server is behind NAT, you can specify its endpoint with the `PUBLICIP` variable. It the endpoint is the public IP address which it is behind, you can use `export PUBLICIP=$(curl ifconfig.co)`. + ## Features - Installs and configures a ready-to-use OpenVPN server diff --git a/openvpn-install.sh b/openvpn-install.sh index 09fbaad..74b6e9c 100644 --- a/openvpn-install.sh +++ b/openvpn-install.sh @@ -197,7 +197,10 @@ function installQuestions () { # Detect public IPv4 address and pre-fill for the user IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1) - read -rp "IP address: " -e -i "$IP" IP + APPROVE_IP=${APPROVE_IP:-n} + if [[ $APPROVE_IP =~ n ]]; then + read -rp "IP address: " -e -i "$IP" IP + fi # If $IP is a private IP address, the server must be behind NAT if echo "$IP" | grep -qE '^(10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.|192\.168)'; then echo "" @@ -546,7 +549,10 @@ function installQuestions () { echo "" echo "Okay, that was all I needed. We are ready to setup your OpenVPN server now." echo "You will be able to generate a client at the end of the installation." - read -n1 -r -p "Press any key to continue..." + APPROVE_INSTALL=${APPROVE_INSTALL:-n} + if [[ $APPROVE_INSTALL =~ n ]]; then + read -n1 -r -p "Press any key to continue..." + fi } function installOpenVPN () {