Hey Tom I might have got some more π why does my updates fail?ailed Asking server to start self-update... Self-update started β checking for new release... Checking for updates... New version available: 1.6.324 (current: 1.6.320) Container mode detected β host install at /opt/sparkbox Looking up dashboard image... Spawning privileged update helper (image=sparkbox-sparkbox-dashboard)... mkdir: cannot create directory β/opt/sparkboxβ: File exists tee: /opt/sparkbox/state/self-update-helper.log: No such file or directory [helper 2026-07-02T10:34:14+00:00] starting [helper] from version: unknown [helper] Downloading install.sh... [helper] Downloading install.sh.sig... [helper] install.sh signature verified [helper] Running install.sh in upgrade mode against /opt/sparkbox... [0;36m / | | | | ) \ \| ' \ / | '| |/ / \ / \ \/ / ) | |) | (| | | | <| |) | () < |/| ./ \,|| ||\\/ \//\\ || [0m [1mThe easiest, most user-friendly self-hosting stack anywhere.[0m Created by Tom Spark | youtube.com/@TomSparkReviews [1;33m[SparkBox][0m Unsupported NAS detected. SparkBox officially supports UGREEN NASync. [1;33m[SparkBox][0m Continuing anyway β it may work, but support is limited. [0;36m[SparkBox][0m NAS detected: generic [0;36m[SparkBox][0m Running in NAS mode (generic) [1;33m[SparkBox][0m NAS users: keep internet access ON during install. [1;33m[SparkBox][0m SparkBox needs the internet to: [1;33m[SparkBox][0m 1. Pull Docker images during install [1;33m[SparkBox][0m 2. Activate your free personal-use license key (auto-updates) [1;33m[SparkBox][0m Re-block outbound internet only AFTER you've logged in, registered [1;33m[SparkBox][0m your license, and finished the setup wizard. [1;33m[SparkBox][0m Full details: https://tomsparkbox.com/docs.html [0;36m[SparkBox][0m Network profile: nas (NAS detected: generic) [0;36m[SparkBox][0m Data directory (media/photos/books/manga): /opt/sparkbox/data [0;32m[SparkBox][0m System clock is in sync (0s off Cloudflare's reference) [0;36m[SparkBox][0m Detected: Alpine Linux v3.23 (NAS mode - this is fine) [0;36m[SparkBox][0m NAS mode: skipping system package installation. [1;33m[SparkBox][0m Tool 'jq' not found. Some features may not work. [0;36m[SparkBox][0m whiptail not found -- setup wizard will use plain text prompts. [0;32m[SparkBox][0m Docker already installed: Docker version 29.5.2, build 79eb04c7d8e1d73247cb7fe011eecc645063e0f0 [0;32m[SparkBox][0m Docker Compose: 2.40.3 ============================================================ PREFLIGHT β here's what I found on this machine ============================================================ System: Alpine Linux v3.23 Hardware: NAS (generic) Memory: 31868 MB Free disk: 96 GB at /opt Install to: /opt/sparkbox Timezone: UTC Clock: in sync (0s off reference) Mode: fresh install ============================================================ [0;36m[SparkBox][0m Downloading SparkBox... [0;36m[SparkBox][0m Verifying release integrity... [0;32m[SparkBox][0m SHA256 digest verified [0;32m[SparkBox][0m ed25519 signature verified mkdir: cannot create directory β/opt/sparkboxβ: File exists [helper] install.sh exit code: 1 [helper] install.sh failed β attempting to recover the stack with sparkbox up anyway [helper] Bringing the stack back up via sparkbox up... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 1/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 2/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 3/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 4/4 failed; waiting 10s before retry... [helper] WARNING: sparkbox up still failing after 4 attempts β health probe + rollback will handle it [helper] Picking up any containers left in Created state... [helper] to version: unknown [helper 2026-07-02T10:35:09+00:00] post-update health probe (up to 180s)... [helper] dashboard healthy (shallow β deep endpoint not present) after 3s [helper 2026-07-02T10:35:09+00:00] done β refresh the browser to load the new dashboard [helper] install.sh failed (rc=1) and version did not change β signaling failure to dashboard. ERROR: SparkBox could not install the update. install.sh failed and your previous version is still active. Try again; if it repeats, open Settings β Updates and use the stepped update option. [ERROR] SparkBox could not install the update. Your current install was left in place. Try again; if it repeats, open Settings β Updates and try the stepped update option. Found it, and it's a real bug, not you. Look at this line: [SparkBox] PREFLIGHT β ... Mode: fresh install ... mkdir: cannot create directory '/opt/sparkbox': File exists The update helper is running install.sh in fresh install mode instead of upgrade mode, even though it says "Running install.sh in upgrade mode against /opt/sparkbox..." right above it. Fresh install tries to mkdir /opt/sparkbox from scratch β which obviously already exists since that's your live install β and it dies right there with exit code 1. Then it cascades: since install.sh bailed before writing anything, sparkbox up can't even find the sparkbox binary at /opt/sparkbox/sparkbox (bash: /opt/sparkbox/sparkbox: No such file or directory) β that's just fallout from the first failure, not a separate problem. The good news buried in that log: your stack never actually went down. The dashboard came back healthy on its own, and "version did not change" β so you're safely still on 1.6.320. This is a failed attempt, not a broken box. Given the log literally shows the preflight self-reporting "fresh install" against an existing directory β that's install.sh mis-detecting upgrade-vs-fresh mode on your setup. That's squarely Tom's code, not a config issue on your end, and matches the escalation criteria (install.sh bug, not a module problem). Two things: 1. Try Settings β Updates β stepped update option like the error suggests β it may use a different code path that detects the existing install correctly. 2. Since you already have a demox thread open from the QSV thing, I'd add this to the same post (or a new one) β this is worth Tom seeing directly, the log is a clean repro of an upgrade-mode detection bug. Hit Share to demox below. You're not stuck, you're just stuck waiting on this one rather than in danger.
11 replies
tomspark wrote:
That's a genuine update bug, not your setup β the helper said it was running in upgrade mode, but install.sh reported "fresh install" internally, so it tried to create /opt/sparkbox from scratch (which obviously already exists) and bailed right there. Your stack never came down and you're safely on 1.6.320. Quickest fix to try over SSH: sudo sparkbox update. That takes a direct path that sidesteps the container-mode detection issue. If it completes, you'll be on the latest version. Logging this for a fix β the mode detection in the update helper is wrong on generic NAS container setups.
Amilo21 wrote:
I think you meant sudo sparkbox upgrade (me starting to learn), but neither sudo sparkbox update or sudo sparkbox upgrade commands was found
tomspark wrote:
That makes sense β the sparkbox command won't be there right now because the failed update is what was supposed to reinstall it, and it bailed before it could. Since your dashboard came back up though, try this instead: open it in the browser, go to Settings β Updates, and look for the 'stepped update' option. That goes through the web interface and doesn't need the command line at all. Let me know if that works or shows a different error.
Amilo21 wrote:
Hey Tom Can't find it. Under settings there is nothing about updates. And under updates (still the old dashboard) I can't find a stepped update.
tomspark wrote:
That makes sense β the stepped update option is only in the newer dashboard, not the one you're on right now. I pointed you there ahead of where you could actually reach it, sorry about that. Your box is working though β everything that was running before the update attempt is still running, you're just stuck on 1.6.320 for now. Worth trying the regular Update button one more time from the Updates page. Sometimes the first attempt hits a detection hiccup that doesn't happen again. If it gives the same error, that's on us β the root fix has to come from our side and I've got it logged. Let me know what you see either way.
Amilo21 wrote:
Year already tried hitting the update button a couple times, with no luck. Tried again now, still no luck. Just tried switching to the new dashboard. when i click update there, it doesn't even start just says "couldn't start the update" and couldn't find anything stepped update under settings either.
tomspark wrote:
That "couldn't start the update" on the new dashboard is the same bug just showing earlier β the update helper can't get started at all now, after the state the failed attempt left things in. No more workarounds to try on your side, and I'm not going to keep sending you in circles. Your box is still running fine on 1.6.320 β nothing broken, just stuck waiting on the update. The fix has to come from our code and I've got it logged. I'll reply here once it ships so you know when to try again.
Amilo21 wrote:
Thanks. I'll just keep playing with Immich in the meantime (thumbs up emoji is missing)
tomspark wrote:
That log you pasted was exactly the right thing to grab β it just cut off right before the part that matters most. Could you try the update one more time and copy me the WHOLE thing this time, all the way to the end (especially whatever comes after "from version: unknown")? That tail end is what tells me why it is stopping, and with it I can ship a proper fix instead of guessing in the dark. And if you would rather just get unstuck right now, I have got a single command that reinstalls cleanly and keeps all your Immich photos and settings β just say the word. Really appreciate your patience on this one!
Amilo21 wrote:
this part? Asking server to start self-update... Self-update started β checking for new release... Checking for updates... New version available: 1.6.324 (current: 1.6.320) Container mode detected β host install at /opt/sparkbox Looking up dashboard image... Spawning privileged update helper (image=sparkbox-sparkbox-dashboard)... mkdir: cannot create directory β/opt/sparkboxβ: File exists tee: /opt/sparkbox/state/self-update-helper.log: No such file or directory [helper 2026-07-02T15:46:37+00:00] starting [helper] from version: unknown [helper] Downloading install.sh... [helper] Downloading install.sh.sig... [helper] install.sh signature verified [helper] Running install.sh in upgrade mode against /opt/sparkbox... [0;36m / | | | | ) \ \| ' \ / | '| |/ / \ / \ \/ / ) | |) | (| | | | <| |) | () < |/| ./ \,|| ||\\/ \//\\ || [0m [1mThe easiest, most user-friendly self-hosting stack anywhere.[0m Created by Tom Spark | youtube.com/@TomSparkReviews [1;33m[SparkBox][0m Unsupported NAS detected. SparkBox officially supports UGREEN NASync. [1;33m[SparkBox][0m Continuing anyway β it may work, but support is limited. [0;36m[SparkBox][0m NAS detected: generic [0;36m[SparkBox][0m Running in NAS mode (generic) [1;33m[SparkBox][0m NAS users: keep internet access ON during install. [1;33m[SparkBox][0m SparkBox needs the internet to: [1;33m[SparkBox][0m 1. Pull Docker images during install [1;33m[SparkBox][0m 2. Activate your free personal-use license key (auto-updates) [1;33m[SparkBox][0m Re-block outbound internet only AFTER you've logged in, registered [1;33m[SparkBox][0m your license, and finished the setup wizard. [1;33m[SparkBox][0m Full details: https://tomsparkbox.com/docs.html [0;36m[SparkBox][0m Network profile: nas (NAS detected: generic) [0;36m[SparkBox][0m Data directory (media/photos/books/manga): /opt/sparkbox/data [0;32m[SparkBox][0m System clock is in sync (0s off Cloudflare's reference) [0;36m[SparkBox][0m Detected: Alpine Linux v3.23 (NAS mode - this is fine) [0;36m[SparkBox][0m NAS mode: skipping system package installation. [1;33m[SparkBox][0m Tool 'jq' not found. Some features may not work. [0;36m[SparkBox][0m whiptail not found -- setup wizard will use plain text prompts. [0;32m[SparkBox][0m Docker already installed: Docker version 29.5.2, build 79eb04c7d8e1d73247cb7fe011eecc645063e0f0 [0;32m[SparkBox][0m Docker Compose: 2.40.3 ============================================================ PREFLIGHT β here's what I found on this machine ============================================================ System: Alpine Linux v3.23 Hardware: NAS (generic) Memory: 31868 MB Free disk: 96 GB at /opt Install to: /opt/sparkbox Timezone: UTC Clock: in sync (0s off reference) Mode: fresh install ============================================================ [0;36m[SparkBox][0m Downloading SparkBox... [0;36m[SparkBox][0m Verifying release integrity... [0;32m[SparkBox][0m SHA256 digest verified [0;32m[SparkBox][0m ed25519 signature verified mkdir: cannot create directory β/opt/sparkboxβ: File exists [helper] install.sh exit code: 1 [helper] install.sh failed β attempting to recover the stack with sparkbox up anyway [helper] Bringing the stack back up via sparkbox up... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 1/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 2/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 3/4 failed; waiting 10s before retry... bash: /opt/sparkbox/sparkbox: No such file or directory [helper] sparkbox up attempt 4/4 failed; waiting 10s before retry... [helper] WARNING: sparkbox up still failing after 4 attempts β health probe + rollback will handle it [helper] Picking up any containers left in Created state... [helper] to version: unknown [helper 2026-07-02T15:47:33+00:00] post-update health probe (up to 180s)... [helper] dashboard healthy (shallow β deep endpoint not present) after 3s [helper 2026-07-02T15:47:33+00:00] done β refresh the browser to load the new dashboard [helper] install.sh failed (rc=1) and version did not change β signaling failure to dashboard. ERROR: SparkBox could not install the update. install.sh failed and your previous version is still active. Try again; if it repeats, open Settings β Updates and use the stepped update option. [ERROR] SparkBox could not install the update. Your current install was left in place. Try again; if it repeats, open Settings β Updates and try the stepped update option.
tomspark wrote:
That log confirms it cleanly β same failure, second run, same mode mismatch. The install.sh reports "fresh install" internally on your setup every time, which means it can never get past that mkdir. Nothing wrong on your end. Your box is still running fine on 1.6.320, everything intact. I've got all I need from these logs to pin the fix. I'll reply here when the update ships so you know it's safe to try again β no further action needed from you.