My question: root@[host 1]:~ sudo sparkbox reset-password jellyfin --user admin [jf-password] Signed in to Jellyfin as admin with the saved password. [jf-password] Saved the password to /opt/sparkbox/state/jellyfin-admin-password.txt (mode 600). [jf-password] WARN: Seerr sign-in check returned HTTP 000000. Try signing in at http://[LAN address 1]:5055 with the new password — this check can also fail while Seerr is still starting. Jellyfin admin password reset. URL: http://[LAN address 1]:8096 Username: admin Password=[REDACTED] This is the same login Seerr (http://[LAN address 1]:5055) uses. Anyone else who watches on this box signs in w …(cut here — the full chat went to Tom) SparkBox AI replied: Seerr is still crash-looping, and it's still the same 401. Jellyfin's side is fine now. Seerr's stored Jellyfin login is the problem, and I can't confirm the reset updated it. - Seerr restarted at 04:27 and failed the same way. Its [library [library title 3] 4] asks Jellyfin for a token with the stored admin login, Jellyfin says 401, and Seerr exits before it starts listening. - The reset's own Seerr check returned HTTP 000. Seerr was down, so the check couldn't reach it. The sync may never have landed. - Doctor still lists Media Center setup as unfinished. Its suggested fix, sudo sparkbox up media, is the one that already failed. I w …(cut here — the full chat went to Tom) What I still need help with: (describe what didn't work or what's still broken) Seerr stuck in crash loop and cant seem to resolve with password reset
9 replies
Chris wrote:
Sorry this has been stuck in a crash loop. The reset did change the Jellyfin password, but the Seerr check it printed returned HTTP 000, which means Seerr was not answering at that moment. So that line does not show whether Seerr accepted the new login. I can't verify the SparkBox AI explanation in your post: that Seerr is holding an old Jellyfin login, or that it exits on a 401. Until we can see Seerr's own log, please don't run the reset again or sudo sparkbox up media. Neither is known to fix a crash loop. One read-only step: run sudo sparkbox version, then sudo docker logs --tail 40 sb-seerr. Paste only the version line and the last few log lines. First remove any password, API key or token, and replace your IP address with "my-box". Tell us whether the Jellyfin error in the log says 401 or 403, because those point to different causes.
GamerX06 wrote:
SparkBox v1.7.3 seerr@3.5.0 start NODEENV=production node dist/index.js 2026-10-23T04:37:00.207Z [info]: Commit Tag: e2f24cb46079746936516c723b09820360f95113 2026-10-23T04:37:05.903Z [info]: Starting Seerr version 3.5.0 2026-10-23T04:37:11.973Z [debug][Settings Migrator]: Checking migration '0001migratehostname.js'... 2026-10-23T04:37:11.976Z [debug][Settings Migrator]: Checking migration '0002migrateapitokens.js'... 2026-10-23T04:37:12.089Z [error][Jellyfin API]: Something went wrong while creating an API key from the Jellyfin server: Request failed with status code 401 {"error":401} 2026-10-23T04:37:12.090Z [error][Settings Migrator]: Error while running migration '0002migrateapitokens.js': Failed to create Jellyfin API token from admin account. Please check your network configuration or edit your settings.json by adding an 'apiKey' field inside of the 'jellyfin' section to fix this issue. Error: Failed to create Jellyfin API token from admin account. Please check your network configuration or edit your settings.json by adding an 'apiKey' field inside of the 'jellyfin' section to fix this issue. at migrateApiTokens (/app/dist/lib/settings/migrations/0002migrateapitokens.js:32:19) at process.processTicksAndRejections (node:internal/process/taskqueues:103:5) at async runMigrations (/app/dist/lib/settings/migrator.js:55:37) at async Settings.load (/app/dist/lib/settings/index.js:433:34) at async /app/dist/index.js:102:22 2026-10-23T04:37:12.090Z [error][Settings Migrator]: A common cause for this error is a permission issue with your configuration folder, a network issue or a corrupted database.
Chris wrote:
Thanks for the log, and sorry this has kept Seerr down. It shows the failure happens at startup: Seerr tries to create its Jellyfin token from the admin login, Jellyfin answers 401 (login refused), and Seerr stops before it serves pages. So the HTTP 000 from the reset's check was not the cause. I also need to correct something. The reset changes the Jellyfin admin password and SparkBox's own saved copy. It does not update the Jellyfin connection Seerr keeps for itself, so its line saying this is "the same login Seerr uses" was wrong. Sorry for the confusion that caused. The most likely reason Seerr still refuses to start is that stored connection, though I can't see Seerr's internals from here. One read-only check: open http://my-box:8096 in a browser and sign in as admin with the password the reset printed. Tell us whether Jellyfin accepts it, and paste only the first Seerr error line if it differs from the 401 above. Please don't run the reset or sudo sparkbox up media again until we confirm the next step. We've logged the reset gap so it can be fixed, and the notes for this case are corrected so the next reply doesn't repeat it.
GamerX06 wrote:
The stored username and password are accepted by jellyfin
Chris wrote:
Thanks, that narrows it down. Jellyfin accepts the password the reset printed, so the reset did change Jellyfin's login. The 401 Seerr hits at startup is therefore coming from the Jellyfin connection Seerr keeps for itself, not from the password you typed. One read-only check to see which part of that connection is empty. Run this on the box and reply with only the single word it prints (set or blank). It shows no key or password: sudo python3 -c "import json; j=json.load(open('/opt/sparkbox/modules/media/config/seerr/settings.json')); print('set' if (j.get('jellyfin') or {}).get('apiKey') else 'blank')" Please don't run the reset, sudo sparkbox up media or sudo sparkbox repair-seerr yet. repair-seerr wipes Seerr's whole config folder, which holds its users and request history, so that is a decision for the team and not a first try. We've added this result to the open report on the Seerr connection.
Chris wrote:
Thanks, that settles it. The Jellyfin API key stored in Seerr's settings is blank. When that key is blank, Seerr tries to create one at startup using the admin login. Jellyfin refuses that login with a 401, so Seerr stops before it starts listening. That is the crash loop in your log. We have a fix for this case, but it is not in a released SparkBox version yet, including 1.7.4, the current release. Updating will not fix it today, so please leave things as they are for now. Don't run the reset, sudo sparkbox up media or sudo sparkbox repair-seerr. repair-seerr wipes Seerr's whole config folder, including its users and request history. Jellyfin still works, so watching is not affected while Seerr is down. One more read-only check. It prints only a count, not the key: sudo grep -c '^apikey: ' /opt/sparkbox/state/jellyfin-admin-password.txt Reply with the number, 0 or 1. Whether a released fix can fill the blank key on your box depends on that saved key being there. We'll post here when a released version includes the fix.
GamerX06 wrote:
root@ubuntu:~ sudo grep -c '^apikey: ' /opt/sparkbox/state/jellyfin-admin-password.txt 1
Chris wrote:
Thanks, that answers the open question. Your saved Jellyfin login file has the entry the repair needs, so this box is a good candidate once a fix is released. The fix is not in 1.7.4 or in your 1.7.3 install yet, so updating will not bring Seerr back today. Please leave things as they are: don't run the reset, sudo sparkbox up media or sudo sparkbox repair-seerr, and keep /opt/sparkbox/state/jellyfin-admin-password.txt where it is. Watching through Jellyfin still works while Seerr is down. We'll post here when a released version includes the fix.