Fix setup page redirect behind reverse proxy or ingress
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 30 Nov 2025 10:29:49 +0000 (11:29 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 30 Nov 2025 10:29:49 +0000 (11:29 +0100)
music_assistant/controllers/webserver/controller.py
music_assistant/helpers/resources/setup.html

index bd1fef666fffe37b7e6e58307bfafc5bbb380040..302ddfa9392f1384bbc02f43d602a58ef79b084f 100644 (file)
@@ -614,13 +614,13 @@ class WebserverController(CoreController):
         # If not yet onboarded, redirect to setup
         if not self.mass.config.onboard_done or not await self.auth.has_users():
             # Preserve return_url parameter if present (will be passed back after setup)
-            # The setup page will add onboard=true when redirecting back
             return_url = request.query.get("return_url")
             if return_url:
-                setup_url = f"/setup?return_url={urllib.parse.quote(return_url, safe='')}"
+                quoted_return = urllib.parse.quote(return_url, safe="")
+                setup_url = f"setup?return_url={quoted_return}"
             else:
-                # Default: redirect back to root (index) after setup with onboard=true
-                setup_url = f"/setup?return_url={urllib.parse.quote('/', safe='')}"
+                # Default: redirect back to current directory (relative path)
+                setup_url = "setup?return_url=."
             return web.Response(status=302, headers={"Location": setup_url})
 
         # Serve the Vue frontend index.html
index 936808e734dd3343159daebe51a011756eba1458..034c7a51d19debedddb04642e1c251e3e0e4ee22 100644 (file)
 
                 window.location.href = finalUrl;
             } else {
-                // No return URL - redirect to root with onboard flag
-                // Frontend will handle navigation to onboarding flow
-                window.location.href = '/?code=' + encodeURIComponent(authToken) + '&onboard=true';
+                // No return URL - use relative path to current directory
+                window.location.href = `./?code=${encodeURIComponent(authToken)}&onboard=true`;
             }
         }