diff --git a/init.sh b/init.sh index 430f525..8851bba 100755 --- a/init.sh +++ b/init.sh @@ -1574,7 +1574,13 @@ completeInitMessage() isNotice "Starting LibrePortal installation as $sudo_user_name user..." # Switch to libreportal user and run the install command - if sudo -u "$sudo_user_name" LIBREPORTAL_SKIP_LOGO=1 bash -c "libreportal run install"; then + # LIBREPORTAL_INITIAL_INSTALL=1 tells the runtime entry (check_files.sh) to + # skip the routine update check on this very first run — we just installed + # the latest code from this very tree, and the update path would otherwise + # try to git-pull (no .git in the deployed install dir) or lpFetchRelease + # (no release manifest reachable yet), failing in ways that leave the + # WebUI / task-processor uninstalled. + if sudo -u "$sudo_user_name" LIBREPORTAL_SKIP_LOGO=1 LIBREPORTAL_INITIAL_INSTALL=1 bash -c "libreportal run install"; then # Install done — tighten the manager's broad install-phase sudo down to # the scoped runtime allowlist. initScopedSudoers diff --git a/scripts/source/loading/check_files.sh b/scripts/source/loading/check_files.sh index ae983af..bb1b127 100755 --- a/scripts/source/loading/check_files.sh +++ b/scripts/source/loading/check_files.sh @@ -20,7 +20,18 @@ sourceCheckFiles() if [[ $flag == "run" ]]; then isSuccessful "All files found and loaded for startup." detectOS; - checkUpdates; + # Fresh install (set by init.sh's completeInitMessage handoff): skip + # the routine update check and go straight to startLoad. We just + # installed the latest code — the update path's git-pull / release + # re-fetch would fail on a tree without .git or a reachable manifest + # and leave the WebUI / task-processor uninstalled. All of + # checkUpdates' own success branches converge on startLoad anyway; + # we just bypass the recovery gauntlet that doesn't apply here. + if [[ "$LIBREPORTAL_INITIAL_INSTALL" == "1" ]]; then + startLoad + else + checkUpdates + fi # This is where the CLI command starts elif [[ $flag == "cli" ]]; then detectOS;