diff --git a/js/customElements/inline-code.js b/js/customElements/inline-code.js
new file mode 100644
index 0000000000000000000000000000000000000000..1beb51fb95ee99e96db10995be63e41eebcc4c3c
--- /dev/null
+++ b/js/customElements/inline-code.js
@@ -0,0 +1,8 @@
+class InlineCode extends HTMLElement {
+    constructor() {
+        super();
+        this.innerHTML = "<code class=\"language-text\">" + this.innerHTML + "</code>";
+    }
+}
+
+customElements.define("jl-code", InlineCode);
diff --git a/js/script.js b/js/script.js
index cd0b46684e64d4bb7ceb0325a87c36c295c42ac4..0eb3ebfbebf469daef8ff4f38ea1913f853dd749 100644
--- a/js/script.js
+++ b/js/script.js
@@ -19,4 +19,5 @@ require("./customElements/footer");
 require("./customElements/ebkBanner");
 require("./customElements/sellingTable");
 require("./customElements/skills");
-require("./customElements/pwgen");
\ No newline at end of file
+require("./customElements/pwgen");
+require("./customElements/inline-code");
\ No newline at end of file
diff --git a/public/API/mainMenu.json b/public/API/mainMenu.json
index 5cc9635f6faace143d767d38b6def718ff09e3bd..91f937450f9b63e027f1b4d9108010095f93d1d1 100644
--- a/public/API/mainMenu.json
+++ b/public/API/mainMenu.json
@@ -102,6 +102,11 @@
                 "name": "Traefik 2 Reverse Proxy",
                 "url": "/anleitungen/traefik.html",
                 "type": "link"
+            },
+            {
+                "name": "Vaultwarden Passwort Manager",
+                "url": "/anleitungen/vaultwarden.html",
+                "type": "link"
             }
         ]
     },
diff --git a/public/anleitungen/vaultwarden.html b/public/anleitungen/vaultwarden.html
new file mode 100644
index 0000000000000000000000000000000000000000..a55261d17558534b0f9be7502247d27d111d7539
--- /dev/null
+++ b/public/anleitungen/vaultwarden.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="de">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link href="/css/style.css" rel="stylesheet">
+    <title></title>
+</head>
+
+<body>
+    <jl-header data-title="Vaultwarden Passwortmanager"></jl-header>
+    <div id="content">
+        <p>
+            Vaultwarden ist ein Passwort Manager, welcher das Frontend und die Anwendungen von Bitwarden unterstützt,
+            aber durch die Implementation in Rust schneller und Resourcensparender als der originale Server ist.
+            Zusätzlich bietet Vaultwarden alle Premium Features kostenlos. Für die Installation setze ich Vorraus, dass
+            auf dem System bereits ein Reverse Proxy wie <a href="traefik.html">Traefik 2</a> existiert und Docker mit
+            Docker Compose installiert ist.
+        </p>
+        <p>
+            Als erstes muss ein neuer Ordner auf dem Host erstellt werden. In diesem muss als erstes eine <jl-code>
+                docker-compose.yml</jl-code> Datei mit dem Inhalt unten erstellt werden.
+        <pre>
+<code class="language-yaml">version: "3.2"
+services:
+    bitwarden:
+    image: vaultwarden/server:latest
+    restart: always
+    ports:
+        - 8080:80
+        - 3012:3012
+    environment:
+        - ADMIN_TOKEN=
+        - DOMAIN=https://bitwarden.jonasled-test.xyz
+        - WEBSOCKET_ENABLED=true
+    volumes:
+        - ./data:/data</code>
+</pre>
+        In der Datei muss noch der <jl-code>ADMIN_TOKEN</jl-code> auf ein sicheres Passwort aus einem <a
+            href="/passwordgen.html">Passwortgenerator</a> ersetzt werden. Dieses Password wird benötigt um die Admin
+        Oberfläsche zu erreichen. Da über die Oberfläche auch zum Beispiel Nutzerkonten gelöscht werden können sollte es
+        wirklich sehr sicher sein. Zusätzlich muss auch der URL angegeben werden, über den der Passwortmanager später
+        von außen erreichbar ist.
+        </p>
+        <p>
+            Als nächstes muss der Reverse Proxy eingerichtet werden. Dazu muss Port 8080 als root Pfad (also /) und auf
+            <jl-code>/notifications/hub</jl-code> port 3012 freigegeben werden. Traefik Nutzer können die Docker Compose
+            welche <a href="https://gitlab.jonasled.de/-/snippets/8">hier</a> zu finden ist anstelle der obigen
+            verwenden und dort die Hosts anpassen.
+        </p>
+        <p>
+            Nachdem nun die Konfiguration abgeschlossen ist kann der Container mit dem Befehl <jl-code>docker-compose up
+            </jl-code> das erste mal gestartet werden. Wenn der Container läuft und alles funktioniert kann der
+            Container wieder mit strg und c gestoppt werden und danach mit <jl-code>docker-compose up -d</jl-code> im
+            Hintergrund gestartet werden.
+        </p>
+        <p>
+            Als erstes sollte das Admin Interface aufgerufen werden und ein SMTP Server für den E-Mail versand
+            eingestellt werden. Um das Interface zu erreichen muss an den URL <jl-code>/admin</jl-code> angehängt und
+            dass Passwort aus der <jl-code>docker-compose.yml</jl-code> angegeben werden.
+        </p>
+        <p>
+            Nun sollte die Konfiguration vom Bitwarden / Vaultwarden abgeschlossen sein. Wenn man jetzt die URL aufruft
+            kann man einen neuen Account anlegen. Im Client muss man zuerst in die Einstellungen gehen und dann dort den
+            URL zum Server angeben. Ganz wichtig ist hierbei das vorgestellte HTTPS. Anschließend funktioniert der Login
+            auf der Startseite mit dem gleichen Benutzer, wie auch im Webclient.
+        </p>
+        <img src="/API/getFile.php?filename=img/bitwarden_browser_1.jpg">
+        <img src="/API/getFile.php?filename=img/bitwarden_browser_2.jpg">
+    </div>
+    <jl-footer></jl-footer>
+    <script src="/js/script.js"></script>
+</body>
+
+</html>
\ No newline at end of file