diff --git a/app/app.py b/app/app.py
index 604849e09dcb66adf48675d9192e00f9ea6828e1..b43ae3ac69e2d41ac5bf45446abf5d36aa5d7996 100644
--- a/app/app.py
+++ b/app/app.py
@@ -4,13 +4,25 @@ sys.path.append("/home/jovyan/")
 import argparse
 import logging
 
+from urllib.parse import urlparse, urljoin
+
 from dash import Dash
 
+from jupyter_server.serverapp import list_running_servers
+
 from layout import layout
 from callbacks import register_callbacks
 
 logging.basicConfig(level=logging.INFO)
 
+# weird trick to find base_url for the jupyterlab
+def find_jupyterlab_base_url():
+    servers = list_running_servers()
+    for server in servers:
+        if server["port"] == 8888:
+            return server['url']
+    return None
+
 
 # get the correct port from proxy
 parser = argparse.ArgumentParser()
@@ -23,10 +35,19 @@ if not port:
 else: 
     logging.debug(f"Dash app running on port {port}.")
 
+
+base_url = find_jupyterlab_base_url()
+if base_url is None:
+    raise ValueError("Base URL of Jupyterlab could not be detected.")
+logging.debug(f"Base URL: {base_url}")
+
+proxy_base_path = urlparse(urljoin(base_url + "/", f"proxy/{port}/")).path
+logging.debug(f"Proxy base path: {proxy_base_path}")
+
 # define Dash app
 app = Dash(
     name=__name__, 
-    requests_pathname_prefix="/Dash/"
+    requests_pathname_prefix=proxy_base_path
 )
 
 # define layout
@@ -39,6 +60,6 @@ register_callbacks(app=app)
 app.run(
     jupyter_mode="jupyterlab", 
     port=port, 
-    host="localhost",
+    host="0.0.0.0",
     debug=True
 )