{"id":212,"date":"2025-09-15T07:19:31","date_gmt":"2025-09-15T07:19:31","guid":{"rendered":"https:\/\/linuxbase.io\/?p=212"},"modified":"2025-09-15T07:19:31","modified_gmt":"2025-09-15T07:19:31","slug":"zitadel-als-oidc-provider-fur-tailscale","status":"publish","type":"post","link":"https:\/\/netguide.io\/linux\/de\/zitadel-als-oidc-provider-fur-tailscale\/","title":{"rendered":"Zitadel als OIDC Provider f\u00fcr Tailscale verwenden"},"content":{"rendered":"\n<p>Tailscale unterst\u00fctzt standardm\u00e4\u00dfig nur die Anmeldung \u00fcber bestehende SSO-Anbieter wie Google oder GitHub. Einen eigenen Tailscale-Account kann man nicht anlegen.<br>Wenn du aber lieber deine eigene L\u00f6sung nutzen willst, kannst du Zitadel als Identity Provider einrichten. Dazu wird <strong>OIDC (OpenID Connect)<\/strong> verwendet.<\/p>\n\n\n\n<p>Das Problem: Zitadel liefert von Haus aus keinen sogenannten <strong>Webfinger<\/strong> mit, den Tailscale aber f\u00fcr die Registrierung ben\u00f6tigt.<br>Zum Gl\u00fcck k\u00f6nnen wir diesen Webfinger leicht selbst erstellen und \u00fcber unseren <strong>Caddy Reverse Proxy<\/strong> bereitstellen. Das ist eine Erweiterung unser <a href=\"https:\/\/netguide.io\/linux\/de\/netbird-mit-zitadel-installieren-docker-compose\/\">Netbird mit Zitadel als Identity Provider installation<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"448\" height=\"580\" src=\"https:\/\/netguide.io\/linux\/wp-content\/uploads\/sites\/2\/2025\/09\/Tailscale-oidc-login.png\" alt=\"\" class=\"wp-image-214\" srcset=\"https:\/\/netguide.io\/linux\/wp-content\/uploads\/sites\/2\/2025\/09\/Tailscale-oidc-login.png 448w, https:\/\/netguide.io\/linux\/wp-content\/uploads\/sites\/2\/2025\/09\/Tailscale-oidc-login-232x300.png 232w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><\/figure>\n\n\n\n<p>F\u00fcr dieses Setup nutzen wir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Caddy<\/strong> als Reverse Proxy<\/li>\n\n\n\n<li><strong>Docker Compose<\/strong> f\u00fcr die Container-Verwaltung<\/li>\n\n\n\n<li><strong>Zitadel<\/strong> als Identity Provider<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist Webfinger?<\/h2>\n\n\n\n<p><strong>Webfinger<\/strong> ist ein Standard, mit dem Metadaten zu einer Identit\u00e4t im Internet abrufbar gemacht werden &#8211; maschinenlesbar in Form einer kleinen JSON-Datei.<br>Man kann sich das wie eine <strong>digitale Visitenkarte<\/strong> vorstellen, die einem Dienst (z. B. Tailscale) zeigt: &#8220;F\u00fcr diesen Benutzer ist der Login bei diesem Identity Provider zust\u00e4ndig.&#8221;<\/p>\n\n\n\n<p>Ein Beispiel f\u00fcr den ben\u00f6tigten Webfinger:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>{\n  \"subject\": \"acct:zitadel@nb.linuxbase.io\",\n  \"links\": &#091;\n    {\n      \"rel\": \"http:\/\/openid.net\/specs\/connect\/1.0\/issuer\",\n      \"href\": \"https:\/\/nb.linuxbase.io\"\n    }\n  &#093;\n}<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;subject&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;acct:zitadel@nb.linuxbase.io&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;links&quot;<\/span><span style=\"color: #E1E4E8\">: &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;rel&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;http:\/\/openid.net\/specs\/connect\/1.0\/issuer&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;href&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/nb.linuxbase.io&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  &#093;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Wichtig: Passe <code>zitadel@nb.linuxbase.io<\/code> und <code>https:\/\/nb.linuxbase.io<\/code> an deine eigene Domain und Subdomain an.<\/p>\n\n\n\n<div class=\"wp-block-uagb-info-box uagb-block-a82c431a uagb-infobox__content-wrap  uagb-infobox-icon-left-title uagb-infobox-left uagb-infobox-image-valign-top\"><div class=\"uagb-ifb-content\"><div class=\"uagb-ifb-left-title-image\"><div class=\"uagb-ifb-icon-wrap\"><\/div><div class=\"uagb-ifb-title-wrap\"><h3 class=\"uagb-ifb-title\">Kurz gesagt<\/h3><\/div><\/div><p class=\"uagb-ifb-desc\"><strong>Webfinger ist ein Standard, um Metadaten zu einer Identit\u00e4t im Web bereitzustellen und maschinenlesbar abzurufen.<\/strong><\/p><\/div><\/div>\n\n\n\n<p>Der Webfinger ist eine einfache JSON Datei, die quasi die Adresse angibt, bei der sich Authentifiziert werden muss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Caddy: Webfinger anzeigen<\/h2>\n\n\n\n<p>Um den Webfinger nun zu integrieren, m\u00fcssen wir das Caddyfile, also die Config Datei des Caddy Reverse Proxys bearbeiten und nat\u00fcrlich die Datei selbst anlegen. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 1: Webfinger-Datei anlegen<\/h2>\n\n\n\n<p>Lege in deinem Netbird-Ordner einen Unterordner <code>webfinger<\/code> an und erstelle dort die Datei <code>webfinger<\/code> (ohne <code>.json<\/code> Endung):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>cd netbird<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #79B8FF\">cd<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">netbird<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>mkdir webfinger<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">mkdir<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">webfinger<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>vi webfinger<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">vi<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">webfinger<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>F\u00fcge den JSON-Inhalt (siehe oben) ein, speichere die Datei mit <code>ESC<\/code> \u2192 <code>:wq<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 2: Caddyfile anpassen<\/h2>\n\n\n\n<p>Jetzt \u00f6ffnen wir die Konfigurationsdatei von Caddy:<\/p>\n\n\n\n<p>Dann \u00f6ffnen wir die Caddyfile Datei:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>cd ..\nvi Caddyfile<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #79B8FF\">cd<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">..<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">vi<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Caddyfile<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><br><\/p>\n\n\n\n<p>Diese Datei sollte ungef\u00e4hr so ausehen:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>{\n  debug\n        servers :80,:443 {\n    protocols h1 h2c h2 h3\n  }\n}\n\n(security_headers) {\n    header * {\n        # enable HSTS\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#strict-transport-security-hsts\n        # NOTE: Read carefully how this header works before using it.\n        # If the HSTS header is misconfigured or if there is a problem with\n        # the SSL\/TLS certificate being used, legitimate users might be unable\n        # to access the website. For example, if the HSTS header is set to a\n        # very long duration and the SSL\/TLS certificate expires or is revoked,\n        # legitimate users might be unable to access the website until\n        # the HSTS header duration has expired.\n        # The recommended value for the max-age is 2 year (63072000 seconds).\n        # But we are using 1 hour (3600 seconds) for testing purposes\n        # and ensure that the website is working properly before setting\n        # to two years.\n\n        Strict-Transport-Security \"max-age=3600; includeSubDomains; preload\"\n\n        # disable clients from sniffing the media type\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-content-type-options\n        X-Content-Type-Options \"nosniff\"\n\n        # clickjacking protection\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-frame-options\n        X-Frame-Options \"SAMEORIGIN\"\n\n        # xss protection\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-xss-protection\n        X-XSS-Protection \"1; mode=block\"\n\n        # Remove -Server header, which is an information leak\n        # Remove Caddy from Headers\n        -Server\n\n        # keep referrer data off of HTTP connections\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#referrer-policy\n        Referrer-Policy strict-origin-when-cross-origin\n    }\n}\n\n:80, nb.linxubase.io:443 {\n    import security_headers\n    # relay\n    reverse_proxy \/relay* relay:80\n    # Signal\n    reverse_proxy \/signalexchange.SignalExchange\/* h2c:\/\/signal:10000\n    # Management\n    reverse_proxy \/api\/* management:80\n    reverse_proxy \/management.ManagementService\/* h2c:\/\/management:80\n    # Zitadel\n    reverse_proxy \/zitadel.admin.v1.AdminService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/admin\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.auth.v1.AuthService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/auth\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.management.v1.ManagementService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/management\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.system.v1.SystemService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/system\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/assets\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/ui\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/oidc\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/saml\/v2\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/oauth\/v2\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/.well-known\/openid-configuration h2c:\/\/zitadel:8080\n    reverse_proxy \/openapi\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/debug\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/device\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/device h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.user.v2.UserService\/* h2c:\/\/zitadel:8080\n    # Dashboard\n    reverse_proxy \/* dashboard:80\n}\n<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #FDAEB7;font-style: italic\">debug<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">servers<\/span><span style=\"color: #E1E4E8\"> :<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">,:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">protocols<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h2c<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h2<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">(security_headers) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">enable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#strict-transport-security-hsts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">NOTE:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Read<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">carefully<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">how<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">this<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">works<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">before<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">it.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">If<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">misconfigured<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">if<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">there<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">a<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">problem<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">SSL\/TLS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">certificate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">being<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">used<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FDAEB7;font-style: italic\">legitimate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">users<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">might<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">be<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">unable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">access<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website.<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">For<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">example,<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">if<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">set<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">very<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">long<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">duration<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">and<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">SSL\/TLS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">certificate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">expires<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">revoked,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">legitimate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">users<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">might<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">be<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">unable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">access<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">until<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">duration<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">has<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">expired.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">The<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">recommended<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">value<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">max-age<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">2<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">year<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">(63072000<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">seconds).<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">But<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">we<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">are<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">hour<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">(3600<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">seconds)<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">testing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">purposes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">and<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">ensure<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">that<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">working<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">properly<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">before<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">setting<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">two<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">years.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">Strict-Transport-Security<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">&quot;max-age=3600; includeSubDomains; preload&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">disable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">clients<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">sniffing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">media<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-content-type-options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-Content-Type-Options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;nosniff&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">clickjacking<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-frame-options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-Frame-Options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;SAMEORIGIN&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">xss<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-xss-protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-XSS-Protection<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;1; mode=block&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Remove<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">-Server<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FDAEB7;font-style: italic\">which<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">an<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">information<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">leak<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Remove<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Caddy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">-Server<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">keep<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">referrer<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">data<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">off<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">of<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HTTP<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">connections<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#referrer-policy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">Referrer-Policy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">strict-origin-when-cross-origin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">, nb.linxubase.io:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">security_headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">relay<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">reverse_proxy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/relay*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">relay<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Signal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">reverse_proxy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/signalexchange.SignalExchange<\/span><span style=\"color: #6A737D\">\/* h2c:\/\/signal:10000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Management<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/api\/* management:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/management.ManagementService\/* h2c:\/\/management:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Zitadel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.admin.v1.AdminService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/admin\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.auth.v1.AuthService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/auth\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.management.v1.ManagementService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/management\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.system.v1.SystemService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/system\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/assets\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/ui\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/oidc\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/saml\/v2\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/oauth\/v2\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/.well-known\/openid-configuration h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/openapi\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/debug\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/device\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/device h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.user.v2.UserService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Dashboard<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/* dashboard:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>F\u00fcge unter folgendem Block:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>:80, nb.linxuxbase.io:443 {\n    import security_headers<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">:80,<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">nb.linxuxbase.io:443<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">security_headers<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>diesen Abschnitt hinzu:<br><br><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>    handle_path \/.well-known\/webfinger {\n        root * \/etc\/caddy\/webfinger\n        try_files \/webfinger\n        file_server\n}<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">    handle_path \/.well-known\/webfinger {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">root<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/etc\/caddy\/webfinger<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">try_files<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/webfinger<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">file_server<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Das ganze sieht dann so aus:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>{\n  debug\n        servers :80,:443 {\n    protocols h1 h2c h2 h3\n  }\n}\n\n(security_headers) {\n    header * {\n        # enable HSTS\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#strict-transport-security-hsts\n        # NOTE: Read carefully how this header works before using it.\n        # If the HSTS header is misconfigured or if there is a problem with\n        # the SSL\/TLS certificate being used, legitimate users might be unable\n        # to access the website. For example, if the HSTS header is set to a\n        # very long duration and the SSL\/TLS certificate expires or is revoked,\n        # legitimate users might be unable to access the website until\n        # the HSTS header duration has expired.\n        # The recommended value for the max-age is 2 year (63072000 seconds).\n        # But we are using 1 hour (3600 seconds) for testing purposes\n        # and ensure that the website is working properly before setting\n        # to two years.\n\n        Strict-Transport-Security \"max-age=3600; includeSubDomains; preload\"\n\n        # disable clients from sniffing the media type\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-content-type-options\n        X-Content-Type-Options \"nosniff\"\n\n        # clickjacking protection\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-frame-options\n        X-Frame-Options \"SAMEORIGIN\"\n\n        # xss protection\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-xss-protection\n        X-XSS-Protection \"1; mode=block\"\n\n        # Remove -Server header, which is an information leak\n        # Remove Caddy from Headers\n        -Server\n\n        # keep referrer data off of HTTP connections\n        # https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#referrer-policy\n        Referrer-Policy strict-origin-when-cross-origin\n    }\n}\n\n:80, nb.linxuxbase.io:443 {\n    import security_headers\n    handle_path \/.well-known\/webfinger {\n        root * \/etc\/caddy\/webfinger\n        try_files \/webfinger\n        file_server\n}\n    # relay\n    reverse_proxy \/relay* relay:80\n    # Signal\n    reverse_proxy \/signalexchange.SignalExchange\/* h2c:\/\/signal:10000\n    # Management\n    reverse_proxy \/api\/* management:80\n    reverse_proxy \/management.ManagementService\/* h2c:\/\/management:80\n    # Zitadel\n    reverse_proxy \/zitadel.admin.v1.AdminService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/admin\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.auth.v1.AuthService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/auth\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.management.v1.ManagementService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/management\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.system.v1.SystemService\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/system\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/assets\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/ui\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/oidc\/v1\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/saml\/v2\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/oauth\/v2\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/.well-known\/openid-configuration h2c:\/\/zitadel:8080\n    reverse_proxy \/openapi\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/debug\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/device\/* h2c:\/\/zitadel:8080\n    reverse_proxy \/device h2c:\/\/zitadel:8080\n    reverse_proxy \/zitadel.user.v2.UserService\/* h2c:\/\/zitadel:8080\n    # Dashboard\n    reverse_proxy \/* dashboard:80\n}\n<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #FDAEB7;font-style: italic\">debug<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">servers<\/span><span style=\"color: #E1E4E8\"> :<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">,:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">protocols<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h2c<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h2<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">h3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">(security_headers) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">enable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#strict-transport-security-hsts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">NOTE:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Read<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">carefully<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">how<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">this<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">works<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">before<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">it.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">If<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">misconfigured<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">if<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">there<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">a<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">problem<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">SSL\/TLS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">certificate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">being<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">used<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FDAEB7;font-style: italic\">legitimate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">users<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">might<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">be<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">unable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">access<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website.<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">For<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">example,<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">if<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">set<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">very<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">long<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">duration<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">and<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">SSL\/TLS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">certificate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">expires<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">revoked,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">legitimate<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">users<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">might<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">be<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">unable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">access<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">until<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HSTS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">duration<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">has<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">expired.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">The<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">recommended<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">value<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">max-age<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">2<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">year<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">(63072000<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">seconds).<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">But<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">we<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">are<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">hour<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">(3600<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">seconds)<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">testing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">purposes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">and<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">ensure<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">that<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">website<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">working<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">properly<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">before<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">setting<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">two<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">years.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">Strict-Transport-Security<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">&quot;max-age=3600; includeSubDomains; preload&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">disable<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">clients<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">sniffing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">media<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-content-type-options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-Content-Type-Options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;nosniff&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">clickjacking<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-frame-options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-Frame-Options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;SAMEORIGIN&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">xss<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#x-xss-protection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">X-XSS-Protection<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;1; mode=block&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Remove<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">-Server<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">header<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FDAEB7;font-style: italic\">which<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">an<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">information<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">leak<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Remove<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Caddy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">Headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">-Server<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">keep<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">referrer<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">data<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">off<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">of<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">HTTP<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">connections<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">#<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">https<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTTP_Headers_Cheat_Sheet.html#referrer-policy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">Referrer-Policy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">strict-origin-when-cross-origin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">, nb.linxuxbase.io:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">security_headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #FDAEB7;font-style: italic\">handle_path<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/.well-known\/webfinger<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">root<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/etc\/caddy\/webfinger<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">try_files<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #FDAEB7;font-style: italic\">\/webfinger<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #FDAEB7;font-style: italic\">file_server<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    # relay<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    reverse_proxy \/relay* relay:<\/span><span style=\"color: #79B8FF\">80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    # Signal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    reverse_proxy \/signalexchange.SignalExchange<\/span><span style=\"color: #6A737D\">\/* h2c:\/\/signal:10000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Management<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/api\/* management:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/management.ManagementService\/* h2c:\/\/management:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Zitadel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.admin.v1.AdminService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/admin\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.auth.v1.AuthService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/auth\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.management.v1.ManagementService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/management\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.system.v1.SystemService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/system\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/assets\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/ui\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/oidc\/v1\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/saml\/v2\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/oauth\/v2\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/.well-known\/openid-configuration h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/openapi\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/debug\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/device\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/device h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/zitadel.user.v2.UserService\/* h2c:\/\/zitadel:8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    # Dashboard<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">    reverse_proxy \/* dashboard:80<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Damit wird die Webfinger-Datei unter <code>https:\/\/deinedomain.de\/.well-known\/webfinger<\/code> bereitgestellt.<br>Das Argument <code>try_files \/webfinger<\/code> ist wichtig, damit nur die Datei ausgeliefert wird. Andere Pfade unter <code>.well-known\/<\/code> (z. B. f\u00fcr OIDC) werden weiterhin von Zitadel genutzt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 3: Caddy neu starten<br><\/h2>\n\n\n\n<p>Damit die \u00c4nderungen aktiv werden, musst du den Caddy-Container neu starten.<br>Liste zuerst die laufenden Container:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>docker ps<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">docker ps<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>root@app-a0001:~\/netbird# docker ps\nCONTAINER ID   IMAGE                             COMMAND                  CREATED      STATUS                PORTS                                                                                                                             NAMES\n1fa0ae6125d8   ghcr.io\/zitadel\/zitadel:v2.64.1   \"\/app\/zitadel start-\u2026\"   2 days ago   Up 2 days                                                                                                                                               netbird-zitadel-1\n1af48ac03c8b   netbirdio\/relay:latest            \"\/go\/bin\/netbird-rel\u2026\"   2 days ago   Up 2 days                                                                                                                                               netbird-relay-1\ne18d05216c4b   caddy                             \"caddy run --config \u2026\"   2 days ago   Up 2 days             0.0.0.0:80-&gt;80\/tcp, &#091;::&#093;:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp, &#091;::&#093;:443-&gt;443\/tcp, 0.0.0.0:443-&gt;443\/udp, &#091;::&#093;:443-&gt;443\/udp, 2019\/tcp   netbird-caddy-1\na03d44931c0f   netbirdio\/management:latest       \"\/go\/bin\/netbird-mgm\u2026\"   2 days ago   Up 2 days                                                                                                                                               netbird-management-1\nf3c0d42b0903   netbirdio\/dashboard:latest        \"\/usr\/bin\/supervisor\u2026\"   2 days ago   Up 2 days             80\/tcp, 443\/tcp                                                                                                                   netbird-dashboard-1\n00a087562f13   coturn\/coturn                     \"docker-entrypoint.s\u2026\"   2 days ago   Up 2 days                                                                                                                                               netbird-coturn-1\n4f4209763133   postgres:16-alpine                \"docker-entrypoint.s\u2026\"   2 days ago   Up 2 days (healthy)   5432\/tcp                                                                                                                          netbird-zdb-1\n584ec1ffced4   netbirdio\/signal:latest           \"\/go\/bin\/netbird-sig\u2026\"   2 days ago   Up 2 days                                                                                                                                               netbird-signal-1\n<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">root@app-a<\/span><span style=\"color: #79B8FF\">0001<\/span><span style=\"color: #E1E4E8\">:~\/netbird# docker ps<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">CONTAINER ID   IMAGE                             COMMAND                  CREATED      STATUS                PORTS                                                                                                                             NAMES<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">fa<\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">ae<\/span><span style=\"color: #79B8FF\">6125<\/span><span style=\"color: #E1E4E8\">d<\/span><span style=\"color: #79B8FF\">8<\/span><span style=\"color: #E1E4E8\">   ghcr.io\/zitadel\/zitadel:v<\/span><span style=\"color: #79B8FF\">2.64<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #9ECBFF\">&quot;\/app\/zitadel start-\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days                                                                                                                                               netbird-zitadel<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">af<\/span><span style=\"color: #79B8FF\">48<\/span><span style=\"color: #E1E4E8\">ac<\/span><span style=\"color: #79B8FF\">03<\/span><span style=\"color: #E1E4E8\">c<\/span><span style=\"color: #79B8FF\">8<\/span><span style=\"color: #E1E4E8\">b   netbirdio\/relay:latest            <\/span><span style=\"color: #9ECBFF\">&quot;\/go\/bin\/netbird-rel\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days                                                                                                                                               netbird-relay<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">e<\/span><span style=\"color: #79B8FF\">18<\/span><span style=\"color: #E1E4E8\">d<\/span><span style=\"color: #79B8FF\">05216<\/span><span style=\"color: #E1E4E8\">c<\/span><span style=\"color: #79B8FF\">4<\/span><span style=\"color: #E1E4E8\">b   caddy                             <\/span><span style=\"color: #9ECBFF\">&quot;caddy run --config \u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days             <\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">\/tcp, &#091;<\/span><span style=\"color: #FDAEB7;font-style: italic\">::<\/span><span style=\"color: #E1E4E8\">&#093;:<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">\/tcp, <\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">\/tcp, &#091;<\/span><span style=\"color: #FDAEB7;font-style: italic\">::<\/span><span style=\"color: #E1E4E8\">&#093;:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">\/tcp, <\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #79B8FF\">0.0<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">\/udp, &#091;<\/span><span style=\"color: #FDAEB7;font-style: italic\">::<\/span><span style=\"color: #E1E4E8\">&#093;:<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">-&gt;<\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">\/udp, <\/span><span style=\"color: #79B8FF\">2019<\/span><span style=\"color: #E1E4E8\">\/tcp   netbird-caddy<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">a<\/span><span style=\"color: #79B8FF\">03<\/span><span style=\"color: #E1E4E8\">d<\/span><span style=\"color: #79B8FF\">44931<\/span><span style=\"color: #E1E4E8\">c<\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">f   netbirdio\/management:latest       <\/span><span style=\"color: #9ECBFF\">&quot;\/go\/bin\/netbird-mgm\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days                                                                                                                                               netbird-management<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">f<\/span><span style=\"color: #79B8FF\">3<\/span><span style=\"color: #E1E4E8\">c<\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">d<\/span><span style=\"color: #79B8FF\">42<\/span><span style=\"color: #E1E4E8\">b<\/span><span style=\"color: #79B8FF\">0903<\/span><span style=\"color: #E1E4E8\">   netbirdio\/dashboard:latest        <\/span><span style=\"color: #9ECBFF\">&quot;\/usr\/bin\/supervisor\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days             <\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">\/tcp, <\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\">\/tcp                                                                                                                   netbird-dashboard<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">00<\/span><span style=\"color: #E1E4E8\">a<\/span><span style=\"color: #79B8FF\">087562<\/span><span style=\"color: #E1E4E8\">f<\/span><span style=\"color: #79B8FF\">13<\/span><span style=\"color: #E1E4E8\">   coturn\/coturn                     <\/span><span style=\"color: #9ECBFF\">&quot;docker-entrypoint.s\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days                                                                                                                                               netbird-coturn<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">4<\/span><span style=\"color: #E1E4E8\">f<\/span><span style=\"color: #79B8FF\">4209763133<\/span><span style=\"color: #E1E4E8\">   postgres:<\/span><span style=\"color: #79B8FF\">16<\/span><span style=\"color: #E1E4E8\">-alpine                <\/span><span style=\"color: #9ECBFF\">&quot;docker-entrypoint.s\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days (healthy)   <\/span><span style=\"color: #79B8FF\">5432<\/span><span style=\"color: #E1E4E8\">\/tcp                                                                                                                          netbird-zdb<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">584<\/span><span style=\"color: #E1E4E8\">ec<\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">ffced<\/span><span style=\"color: #79B8FF\">4<\/span><span style=\"color: #E1E4E8\">   netbirdio\/signal:latest           <\/span><span style=\"color: #9ECBFF\">&quot;\/go\/bin\/netbird-sig\u2026&quot;<\/span><span style=\"color: #E1E4E8\">   <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days ago   Up <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> days                                                                                                                                               netbird-signal<\/span><span style=\"color: #79B8FF\">-1<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Suche die Container-ID von Caddy (z. B. <code>e18d05216c4b<\/code>) und starte ihn neu:<br><br><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>docker compose restart e18d05216c4b<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">compose<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">restart<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">e18d05216c4b<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Hinweis: Der Befehl muss im Verzeichnis mit deiner <code>docker-compose.yml<\/code> ausgef\u00fchrt werden.<\/p>\n\n\n\n<p>Nach wenigen Sekunden sollte die Datei erreichbar sein:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>https:\/\/deinedomain.de\/.well-known\/webfinger<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">https:\/\/deinedomain.de\/.well-known\/webfinger<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 4: Tailscale mit Zitadel verbinden<\/h2>\n\n\n\n<p>Nun k\u00f6nnen wir Tailscale mit Zitadel verwenden.<br>Gehe dazu auf die Tailscale-Seite \u2192 &#8220;Get Started&#8221; \u2192 &#8220;Sign up with OIDC&#8221;.<\/p>\n\n\n\n<p>Trage hier deinen Benutzer in der Form ein:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2\"><span style=\"padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><\/span><span role=\"button\" style=\"color:#e1e4e8\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" aria-hidden=\"true\" readonly>username@subdomain.domain.de<\/textarea><\/pre><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\"><code><span class=\"line\"><span style=\"color: #B392F0\">username@subdomain.domain.de<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>In meinem Fall ist es der Admin User:<\/p>\n\n\n\n<p><code>admin@nb.linuxbase.io <\/code><\/p>\n\n\n\n<p>Damit authentifiziert sich Tailscale \u00fcber deinen Zitadel-Server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Webfinger-Datei erstellt<\/li>\n\n\n\n<li>Caddy konfiguriert<\/li>\n\n\n\n<li>Caddy-Container neu gestartet<\/li>\n\n\n\n<li>Tailscale mit Zitadel als OIDC Provider verbunden<\/li>\n<\/ol>\n\n\n\n<p>Jetzt kannst du Tailscale mit deiner eigenen Zitadel-Installation nutzen, ganz ohne Google- oder GitHub-Account.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tailscale unterst\u00fctzt standardm\u00e4\u00dfig nur die Anmeldung \u00fcber bestehende SSO-Anbieter wie Google oder GitHub. Einen eigenen Tailscale-Account kann man nicht anlegen.Wenn [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[9],"tags":[105,97,107,109],"class_list":["post-212","post","type-post","status-publish","format-standard","hentry","category-linux","tag-id","tag-netbird","tag-oicd","tag-tailscale"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"tobias.pries","author_link":"https:\/\/netguide.io\/linux\/author\/tobias-pries\/"},"uagb_comment_info":0,"uagb_excerpt":"Tailscale unterst\u00fctzt standardm\u00e4\u00dfig nur die Anmeldung \u00fcber bestehende SSO-Anbieter wie Google oder GitHub. Einen eigenen Tailscale-Account kann man nicht anlegen.Wenn [&hellip;]","_links":{"self":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/comments?post=212"}],"version-history":[{"count":0,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/212\/revisions"}],"wp:attachment":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/media?parent=212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/categories?post=212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/tags?post=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}