diff --git a/src/freedombone-installer b/src/freedombone-installer
index 017bd8f6ea9d0a9e68158157577fd6682422a0f6..4d86795f5ca62d425860ce8c9add7edc2b395e10 100755
--- a/src/freedombone-installer
+++ b/src/freedombone-installer
@@ -59,6 +59,26 @@ function wait_for_enough_entropy {
     done
 }
 
+function web_admin_create_user {
+    username="$1"
+    password="$2"
+
+    if [ ! "$username" ]; then
+        return
+    fi
+
+    if [ ! -d /home/$username ]; then
+        chmod 600 /etc/shadow
+        chmod 600 /etc/gshadow
+        useradd -m -p "$password" -s /bin/bash "$username"
+        groupadd "$user"
+        chmod 0000 /etc/shadow
+        chmod 0000 /etc/gshadow
+    else
+        echo "${username}:${password}"|chpasswd
+    fi
+}
+
 function web_admin_setup_login {
     # if an nginx password file has not been created for web admin
     if [ -f /etc/nginx/.webadminpasswd ]; then
@@ -75,16 +95,7 @@ function web_admin_setup_login {
 
     webadmin_password="$(openssl rand -base64 32 | tr -dc A-Za-z0-9 | head -c 10 ; echo -n '')"
 
-    if [ ! -d /home/${webadmin_user} ]; then
-        chmod 600 /etc/shadow
-        chmod 600 /etc/gshadow
-        useradd -m -p "$webadmin_password" -s /bin/bash "$webadmin_user"
-        groupadd "$webadmin_user"
-        chmod 0000 /etc/shadow
-        chmod 0000 /etc/gshadow
-    else
-        echo "${webadmin_user}:${webadmin_password}"|chpasswd
-    fi
+    web_admin_create_user "$webadmin_user" "$webadmin_password"
 
     # create a password for users
     if [ ! -f /etc/nginx/.webadminpasswd ]; then
@@ -270,6 +281,12 @@ function before_setup_runs {
     MY_USERNAME=$(cat "$setup_file")
     if [ ! "$MY_USERNAME" ]; then
         MY_USERNAME="$webadmin_user"
+    else
+        if [[ "$MY_USERNAME" != "$webadmin_user" ]]; then
+            web_admin_create_user "$webadmin_user" "$webadmin_password"
+            webadmin_user="$MY_USERNAME"
+
+        fi
     fi
     DEFAULT_DOMAIN_NAME=${local_hostname}