diff --git a/src/freedombone-app-bludit b/src/freedombone-app-bludit
index d06bbb8d3485c487f4db8d7cb62f3976c070f0ae..472d7d013a07356010c9f006d49418ff5b7c06cb 100755
--- a/src/freedombone-app-bludit
+++ b/src/freedombone-app-bludit
@@ -112,9 +112,14 @@ function bludit_install_from_download {
         rm "$bludit_path".zip
     fi
     # shellcheck disable=SC2001
-    url=${BLUDIT_DOWNLOAD}/bludit-$(echo "$BLUDIT_VERSION" | sed 's|\.|-|g').zip
+    bludit_download_zip=bludit-$(echo "$BLUDIT_VERSION" | sed 's|\.|-|g').zip
+    url=${BLUDIT_DOWNLOAD}/${bludit_download_zip}
     cd "/var/www/${BLUDIT_DOMAIN_NAME}" || exit 36487354
-    wget "$url"
+    if [ -f "/repos/${bludit_download_zip}" ]; then
+        cp "/repos/${bludit_download_zip}" .
+    else
+        wget "$url"
+    fi
     # shellcheck disable=SC2001,SC2046
     unzip "${bludit_path}".zip
     if [ ! -d "$bludit_path" ]; then
@@ -245,12 +250,34 @@ function remove_bludit {
 }
 
 function install_bludit_theme {
-    if [ ! -d "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}" ]; then
-        cd "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes" || return
-        git_clone $BLUDIT_THEME_REPO "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}"
-        cd "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}" || return
+    bludit_theme_dir="/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}"
+    if [ ! -d "${bludit_theme_dir}" ]; then
+        if [ -d /repos/bludittheme ]; then
+            mkdir -p "${bludit_theme_dir}"
+            cp -r -p /repos/bludittheme/. "${bludit_theme_dir}"
+            cd "${bludit_theme_dir}" || return
+            git pull
+        else
+            function_check git_clone
+            git_clone $BLUDIT_THEME_REPO "${bludit_theme_dir}"
+        fi
+
+        cd "${bludit_theme_dir}" || return
         git checkout $BLUDIT_THEME_COMMIT
+
+        if [ -d "${bludit_theme_dir}" ]; then
+            if [ -f "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-content/databases/site.php" ]; then
+                sed -i "s|\"theme\":.*|\"theme\": \"${BLUDIT_THEME_NAME}\",|g" "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-content/databases/site.php"
+            fi
+        fi
+
+        set_completion_param "bludit theme commit" "$BLUDIT_THEME_COMMIT"
     else
+        CURR_BLUDIT_THEME_COMMIT=$(get_completion_param "bludit theme commit")
+        if [[ "$CURR_BLUDIT_THEME_COMMIT" == "$BLUDIT_THEME_COMMIT" ]]; then
+            return
+        fi
+
         set_repo_commit "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}" "bludit theme commit" "$BLUDIT_THEME_COMMIT" $BLUDIT_THEME_REPO
     fi
 }
@@ -413,12 +440,6 @@ function install_bludit {
 
     install_bludit_theme
 
-    if [ -d "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-themes/${BLUDIT_THEME_NAME}" ]; then
-        if [ -f "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-content/databases/site.php" ]; then
-            sed -i "s|\"theme\":.*|\"theme\": \"${BLUDIT_THEME_NAME}\",|g" "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs/bl-content/databases/site.php"
-        fi
-    fi
-
     APP_INSTALLED=1
 }
 
diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise
index d32946165f02f66131b81af132ad2f092bbe60a8..02ea56f5f85d4e73dd1439152a5a721ba7efc114 100755
--- a/src/freedombone-image-customise
+++ b/src/freedombone-image-customise
@@ -1974,6 +1974,12 @@ image_preinstall_repos() {
         return
     fi
 
+    # shellcheck disable=SC2001
+    bludit_download_zip=bludit-$(echo "$BLUDIT_VERSION" | sed 's|\.|-|g').zip
+    url=${BLUDIT_DOWNLOAD}/${bludit_download_zip}
+    wget "$url" -O "$rootdir/repos/${bludit_download_zip}"
+
+    git clone "$BLUDIT_THEME_REPO" "$rootdir/repos/bludittheme"
     git clone "$CRYPTPAD_REPO" "$rootdir/repos/cryptpad"
     git clone "$ETESYNC_REPO" "$rootdir/repos/etesync"
     git clone "$DOKUWIKI_REPO" "$rootdir/repos/dokuwiki"