diff --git a/server/scripts/update_runner.sh b/server/scripts/update_runner.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5647272f3a4831ea661aa2b064d49db710de641b
--- /dev/null
+++ b/server/scripts/update_runner.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+_UPD=1
+
+# padding handles script being overwritten during updates
+# see https://git.ispconfig.org/ispconfig/ispconfig3/issues/4227
+
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+##################################################
+
+SOURCE=$1
+URL=""
+
+if [[ "$SOURCE" == "stable" ]] ; then
+	URL="https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz"
+elif [[ "$SOURCE" == "nightly" ]] ; then
+	URL="https://www.ispconfig.org/downloads/ISPConfig-3-nightly.tar.gz"
+elif [[ "$SOURCE" == "git-develop" ]] ; then
+	URL="https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=develop"
+else 
+	echo "Please choose an installation source (stable, nightly, git-develop)"
+	exit 1
+fi
+
+CURDIR=$PWD
+
+cd /tmp
+
+{
+if [ -n "${_UPD}" ]
+then
+    {
+        umask 0077 \
+        && tmpdir=`mktemp -dt "$(basename $0).XXXXXXXXXX"` \
+        && test -d "${tmpdir}" \
+        && cd "${tmpdir}"
+    } || {
+        echo 'mktemp failed'
+        exit 1
+    }
+
+    wget -O ISPConfig-3.tar.gz "${URL}"
+    if [ -f ISPConfig-3.tar.gz ]
+    then
+        tar xvzf ISPConfig-3.tar.gz --strip-components=1
+        cd install/
+        php -q \
+            -d disable_classes= \
+            -d disable_functions= \
+            -d open_basedir= \
+            update.php
+        cd /tmp
+        rm -rf "${tmpdir}"
+    else
+        echo "Unable to download the update."
+		cd "$CURDIR"
+        exit 1
+    fi
+
+fi
+
+cd "$CURDIR"
+exit 0
+}