diff --git a/ci/entrypoint.sh b/ci/entrypoint.sh
index a730b86a56dd1f63a5a76298e9c50ac3a6653758..29b92c95f883348c5867efe301b41be30810198c 100644
--- a/ci/entrypoint.sh
+++ b/ci/entrypoint.sh
@@ -3,6 +3,9 @@
 # SPDX-FileCopyrightText: OpenTalk GmbH <mail@opentalk.eu>
 #
 # SPDX-License-Identifier: EUPL-1.2
+
+HTML_ROOT=/usr/share/nginx/html
+
 ACTIVE_FEATURES="{
     userSearch: ${FEATURE_USER_SEARCH:-true},
     muteUsers: ${FEATURE_MUTE_USER:-true},
@@ -61,7 +64,7 @@ if [[ x"${KEYCLOAK_AUTHORITY}" != "x" ]]; then
     OIDC_ISSUER=$KEYCLOAK_AUTHORITY
 fi
 
-cat >/usr/share/nginx/html/config.js << EOF
+cat >$HTML_ROOT/config.js << EOF
 window.config = {
   logLevel: "${LOG_LEVEL:-info}",
   controller: "${CONTROLLER_HOST}",
@@ -119,3 +122,17 @@ window.config = {
   }
 }
 EOF
+
+CONTROLLER_SCHEMA="https"
+if [ "$INSECURE" = "true" ]; then
+  CONTROLLER_SCHEMA="http"
+fi
+
+mkdir -p $HTML_ROOT/.well-known/opentalk
+cat >$HTML_ROOT/.well-known/opentalk/client << EOF
+{
+  "opentalk_controller": {
+    "base_url": "$CONTROLLER_SCHEMA://$CONTROLLER_HOST"
+  }
+}
+EOF
diff --git a/ci/nginx-default.conf.template b/ci/nginx-default.conf.template
index 6340ef4e4aaa7818d78c3bce429410319e865bf2..2cda7269f3e964be14023b42cae7ca403a669110 100644
--- a/ci/nginx-default.conf.template
+++ b/ci/nginx-default.conf.template
@@ -41,6 +41,10 @@ http {
         location /static {
           add_header Cache-Control 'public, no-transform, immutable';
         }
+
+        location /.well-known/opentalk/client {
+          default_type application/json;
+        }
       }
     }
 }