From 26384135257fec5f3bb6dffdb43fe826b7bc5f59 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sun, 30 Nov 2025 11:29:49 +0100 Subject: [PATCH] Fix setup page redirect behind reverse proxy or ingress --- music_assistant/controllers/webserver/controller.py | 8 ++++---- music_assistant/helpers/resources/setup.html | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/music_assistant/controllers/webserver/controller.py b/music_assistant/controllers/webserver/controller.py index bd1fef66..302ddfa9 100644 --- a/music_assistant/controllers/webserver/controller.py +++ b/music_assistant/controllers/webserver/controller.py @@ -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 diff --git a/music_assistant/helpers/resources/setup.html b/music_assistant/helpers/resources/setup.html index 936808e7..034c7a51 100644 --- a/music_assistant/helpers/resources/setup.html +++ b/music_assistant/helpers/resources/setup.html @@ -599,9 +599,8 @@ 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`; } } -- 2.34.1