<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=Vaultwarden%3A_Installation_mit_Docker_Compose</id>
	<title>Vaultwarden: Installation mit Docker Compose - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=Vaultwarden%3A_Installation_mit_Docker_Compose"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=Vaultwarden:_Installation_mit_Docker_Compose&amp;action=history"/>
	<updated>2026-10-19T03:13:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=Vaultwarden:_Installation_mit_Docker_Compose&amp;diff=4943&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Neuer Artikel: compose.yaml, Argon2-Admin-Token, Einladungen, SMTP, Push, Updates</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=Vaultwarden:_Installation_mit_Docker_Compose&amp;diff=4943&amp;oldid=prev"/>
		<updated>2026-10-17T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Neuer Artikel: compose.yaml, Argon2-Admin-Token, Einladungen, SMTP, Push, Updates&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Steckbrief&lt;br /&gt;
| gilt_fuer   = Vaultwarden 1.37.x als Docker-Container (Image vaultwarden/server bzw. ghcr.io/dani-garcia/vaultwarden) auf Linux, z. B. Debian 13 oder Ubuntu 24.04 mit Docker Engine und Compose-Plugin&lt;br /&gt;
| bereich     = IT-Security&lt;br /&gt;
| dauer       = ca. 45–60 Minuten&lt;br /&gt;
| rechte      = Root bzw. Mitglied der Gruppe docker&lt;br /&gt;
| stand       = Oktober 2026&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vaultwarden mit Docker Compose installieren&amp;#039;&amp;#039;&amp;#039; ist der übliche Weg, einen eigenen Bitwarden-kompatiblen Passwortserver aufzusetzen: ein Container, ein Datenordner, eine Konfigurationsdatei. Diese Anleitung richtet Vaultwarden so ein, dass es nur lokal lauscht und ein Reverse Proxy die HTTPS-Verbindungen übernimmt. Sie zeigt, wie das Admin-Panel mit einem gehashten Token geschützt wird, wie Benutzer ohne offene Registrierung eingeladen werden und wie E-Mail-Versand, Push-Benachrichtigungen und Updates funktionieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Vaultwarden-Installation.png|thumb|center|750px|Installation von Vaultwarden mit Docker Compose: Verzeichnis /opt/vaultwarden mit compose.yaml, .env und Datenordner data; Container lauscht nur auf 127.0.0.1:8000, der Reverse Proxy übernimmt HTTPS; Admin-Token als Argon2-Hash mit vaultwarden hash erzeugen; SIGNUPS_ALLOWED=false, Benutzer über das Admin-Panel einladen; SMTP für Einladungen und 2FA-Mails; Push für mobile Apps über bitwarden.com/host (EU-Region); Update mit docker compose pull und up -d.]]&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
* Linux-Server oder VM mit &amp;#039;&amp;#039;&amp;#039;Docker Engine&amp;#039;&amp;#039;&amp;#039; und dem Compose-Plugin, siehe [[Docker]]. Für bis zu einigen Hundert Benutzern reichen 1–2 vCPU und 1–2 GB RAM.&lt;br /&gt;
* Ein &amp;#039;&amp;#039;&amp;#039;DNS-Name&amp;#039;&amp;#039;&amp;#039; wie &amp;lt;code&amp;gt;vault.firma.de&amp;lt;/code&amp;gt; und ein [[Reverse Proxy]] mit gültigem Zertifikat, siehe [[Vaultwarden: HTTPS mit Reverse Proxy (Caddy, nginx, OPNsense)]]. Ohne HTTPS funktionieren Web-Tresor und Apps nicht, weil Browser die Web-Crypto-Funktionen nur in sicheren Verbindungen bereitstellen.&lt;br /&gt;
* Ein &amp;#039;&amp;#039;&amp;#039;SMTP-Konto&amp;#039;&amp;#039;&amp;#039; für den Versand von Einladungen, Bestätigungen und Zwei-Faktor-Codes, siehe [[SMTP]].&lt;br /&gt;
* Ausgehender Internetzugang des Servers für Website-Icons und optional Push.&lt;br /&gt;
&lt;br /&gt;
== Datenbank wählen ==&lt;br /&gt;
Das Image enthält Treiber für SQLite, MySQL/MariaDB und [[PostgreSQL]]. Das Projekt empfiehlt &amp;#039;&amp;#039;&amp;#039;SQLite&amp;#039;&amp;#039;&amp;#039; für die meisten Installationen: Es ist am besten getestet, braucht keinen eigenen Datenbankserver und liegt als Datei im Datenordner. PostgreSQL oder MariaDB lohnen sich, wenn ohnehin ein betreuter Datenbankcluster existiert oder Vaultwarden hochverfügbar betrieben werden soll. Die Datenbank wird über &amp;lt;code&amp;gt;DATABASE_URL&amp;lt;/code&amp;gt; gewählt.&lt;br /&gt;
&lt;br /&gt;
== Schritt 1: Verzeichnis und Admin-Token ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /opt/vaultwarden/data &amp;amp;&amp;amp; cd /opt/vaultwarden&lt;br /&gt;
# Argon2-Hash für das Admin-Token erzeugen (fragt zweimal nach dem Passwort)&lt;br /&gt;
docker run --rm -it vaultwarden/server:latest /vaultwarden hash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Das Passwort für das Admin-Panel lang und zufällig wählen, z. B. mit &amp;lt;code&amp;gt;openssl rand -base64 32&amp;lt;/code&amp;gt;, und im Passworttresor der IT ablegen.&lt;br /&gt;
* Die Ausgabe ist ein &amp;#039;&amp;#039;&amp;#039;PHC-String&amp;#039;&amp;#039;&amp;#039; der Form &amp;lt;code&amp;gt;$argon2id$v=19$m=65540,t=3,p=4$…&amp;lt;/code&amp;gt;. Vaultwarden speichert damit nur den Hash, nicht das Passwort. Mit &amp;lt;code&amp;gt;--preset owasp&amp;lt;/code&amp;gt; nutzt der Befehl die schwächeren OWASP-Mindestwerte; die Standardwerte von Bitwarden sind vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
== Schritt 2: Vaultwarden mit Docker Compose konfigurieren ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.env&amp;#039;&amp;#039;&amp;#039; (Rechte &amp;lt;code&amp;gt;chmod 600&amp;lt;/code&amp;gt;, gehört nicht in ein Git-Repository):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
VW_DOMAIN=https://vault.firma.de&lt;br /&gt;
# Einfache Anführungszeichen verhindern, dass Compose die $-Zeichen auswertet&lt;br /&gt;
VW_ADMIN_TOKEN=&amp;#039;$argon2id$v=19$m=65540,t=3,p=4$…&amp;#039;&lt;br /&gt;
VW_SMTP_PASSWORD=&amp;#039;…&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;compose.yaml&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
services:&lt;br /&gt;
  vaultwarden:&lt;br /&gt;
    image: vaultwarden/server:1.37.4&lt;br /&gt;
    container_name: vaultwarden&lt;br /&gt;
    restart: unless-stopped&lt;br /&gt;
    environment:&lt;br /&gt;
      DOMAIN: ${VW_DOMAIN}&lt;br /&gt;
      ADMIN_TOKEN: ${VW_ADMIN_TOKEN}&lt;br /&gt;
      SIGNUPS_ALLOWED: &amp;quot;false&amp;quot;&lt;br /&gt;
      INVITATIONS_ALLOWED: &amp;quot;true&amp;quot;&lt;br /&gt;
      SHOW_PASSWORD_HINT: &amp;quot;false&amp;quot;&lt;br /&gt;
      PASSWORD_HINTS_ALLOWED: &amp;quot;false&amp;quot;&lt;br /&gt;
      ORG_EVENTS_ENABLED: &amp;quot;true&amp;quot;&lt;br /&gt;
      EVENTS_DAYS_RETAIN: &amp;quot;365&amp;quot;&lt;br /&gt;
      SMTP_HOST: smtp.firma.de&lt;br /&gt;
      SMTP_FROM: vaultwarden@firma.de&lt;br /&gt;
      SMTP_FROM_NAME: Passwortmanager&lt;br /&gt;
      SMTP_SECURITY: starttls&lt;br /&gt;
      SMTP_PORT: &amp;quot;587&amp;quot;&lt;br /&gt;
      SMTP_USERNAME: vaultwarden@firma.de&lt;br /&gt;
      SMTP_PASSWORD: ${VW_SMTP_PASSWORD}&lt;br /&gt;
      LOG_FILE: /data/vaultwarden.log&lt;br /&gt;
      TZ: Europe/Berlin&lt;br /&gt;
    volumes:&lt;br /&gt;
      - ./data:/data&lt;br /&gt;
    ports:&lt;br /&gt;
      - 127.0.0.1:8000:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DOMAIN&amp;#039;&amp;#039;&amp;#039; muss die vollständige HTTPS-Adresse enthalten. Vaultwarden erzeugt daraus Links in E-Mails, die Anhang-URLs und die SSO-Rücksprungadresse.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Port nur an 127.0.0.1 binden&amp;#039;&amp;#039;&amp;#039;, wenn der Reverse Proxy auf demselben Host läuft. Läuft er auf einem anderen System, die Freigabe per Host-Firewall auf dessen Adresse beschränken.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Version festschreiben&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;1.37.4&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt;), damit Updates bewusst und nach Lesen der Release Notes erfolgen. Das Tag &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt; ist für den Produktivbetrieb nicht gedacht.&lt;br /&gt;
* Wer das &amp;lt;code&amp;gt;ADMIN_TOKEN&amp;lt;/code&amp;gt; direkt in die compose.yaml schreibt statt in die .env, muss jedes &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; als &amp;lt;code&amp;gt;$$&amp;lt;/code&amp;gt; schreiben.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ereignisprotokolle&amp;#039;&amp;#039;&amp;#039; sind standardmäßig aus und werden ohne &amp;lt;code&amp;gt;EVENTS_DAYS_RETAIN&amp;lt;/code&amp;gt; unbegrenzt aufbewahrt. Die Frist vorher mit Datenschutz und Betriebsrat abstimmen, siehe [[Vaultwarden: Datenschutz und Betrieb im Unternehmen]].&lt;br /&gt;
&lt;br /&gt;
Starten und Log prüfen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker compose up -d &amp;amp;&amp;amp; docker compose logs -f&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schritt 3: Admin-Panel und erstes Konto ==&lt;br /&gt;
# Den Reverse Proxy einrichten und &amp;lt;code&amp;gt;https://vault.firma.de/admin&amp;lt;/code&amp;gt; aufrufen, mit dem Passwort aus Schritt 1 anmelden.&lt;br /&gt;
# Unter &amp;#039;&amp;#039;Diagnostics&amp;#039;&amp;#039; prüfen: Version, Domäne, Uhrzeit, DNS- und Internetzugang, HTTPS-Erkennung. Abweichungen dort zuerst beheben.&lt;br /&gt;
# Unter &amp;#039;&amp;#039;General Settings › SMTP Email Settings&amp;#039;&amp;#039; mit &amp;#039;&amp;#039;Send test email&amp;#039;&amp;#039; den Versand testen.&lt;br /&gt;
# Unter &amp;#039;&amp;#039;Users&amp;#039;&amp;#039; die eigene Adresse mit &amp;#039;&amp;#039;Invite User&amp;#039;&amp;#039; einladen und das Konto über den Link in der E-Mail anlegen. Ohne E-Mail-Versand ruft der Eingeladene &amp;lt;code&amp;gt;https://vault.firma.de/#/signup&amp;lt;/code&amp;gt; auf und registriert sich mit der eingeladenen Adresse.&lt;br /&gt;
# Ein &amp;#039;&amp;#039;&amp;#039;starkes Master-Passwort&amp;#039;&amp;#039;&amp;#039; wählen und den &amp;#039;&amp;#039;&amp;#039;Wiederherstellungscode&amp;#039;&amp;#039;&amp;#039; für die Zwei-Faktor-Anmeldung offline ablegen. Das Master-Passwort kann niemand zurücksetzen – auch der Administrator nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Werden Einstellungen im Admin-Panel gespeichert, schreibt Vaultwarden sie in &amp;lt;code&amp;gt;data/config.json&amp;lt;/code&amp;gt;. Diese Werte haben &amp;#039;&amp;#039;&amp;#039;Vorrang vor den Umgebungsvariablen&amp;#039;&amp;#039;&amp;#039;. Spätere Änderungen in der compose.yaml wirken dann nicht mehr für diese Einstellungen. Am besten eine Quelle festlegen – entweder Admin-Panel oder Umgebungsvariablen.&lt;br /&gt;
&lt;br /&gt;
== Schritt 4: Push-Benachrichtigungen für mobile Apps ==&lt;br /&gt;
Browser-Erweiterung und Desktop-App synchronisieren sich per WebSocket automatisch. Die Android- und iOS-App brauchen dafür das Push-Relay von Bitwarden:&lt;br /&gt;
# Auf &amp;lt;code&amp;gt;https://bitwarden.com/host/&amp;lt;/code&amp;gt; mit einer Firmenadresse eine &amp;#039;&amp;#039;&amp;#039;Installation ID&amp;#039;&amp;#039;&amp;#039; und einen &amp;#039;&amp;#039;&amp;#039;Key&amp;#039;&amp;#039;&amp;#039; anfordern; als Datenregion &amp;#039;&amp;#039;&amp;#039;EU&amp;#039;&amp;#039;&amp;#039; wählen.&lt;br /&gt;
# In der compose.yaml ergänzen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
      PUSH_ENABLED: &amp;quot;true&amp;quot;&lt;br /&gt;
      PUSH_INSTALLATION_ID: ${VW_PUSH_ID}&lt;br /&gt;
      PUSH_INSTALLATION_KEY: ${VW_PUSH_KEY}&lt;br /&gt;
      PUSH_RELAY_URI: https://api.bitwarden.eu&lt;br /&gt;
      PUSH_IDENTITY_URI: https://identity.bitwarden.eu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Container neu erstellen (&amp;lt;code&amp;gt;docker compose up -d&amp;lt;/code&amp;gt;) und in den Apps einmal ab- und wieder anmelden.&lt;br /&gt;
* Push funktioniert nur mit Apps aus App Store und Google Play, nicht mit der F-Droid-Version.&lt;br /&gt;
* Über das Relay laufen Gerätekennungen, aber keine Tresorinhalte. Datenschutzrechtlich bewerten, siehe [[Vaultwarden: Datenschutz und Betrieb im Unternehmen]]. Ohne Push synchronisieren die Apps beim Öffnen und manuell.&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/vaultwarden&lt;br /&gt;
# Vorher sichern, siehe Backup-Artikel&lt;br /&gt;
docker exec vaultwarden /vaultwarden backup&lt;br /&gt;
# Tag in compose.yaml auf die neue Version setzen, dann:&lt;br /&gt;
docker compose pull &amp;amp;&amp;amp; docker compose up -d &amp;amp;&amp;amp; docker compose logs --tail 50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Release Notes auf GitHub lesen: Sie enthalten Sicherheitsfixes und Hinweise zu geänderten Einstellungen. Bei 1.37.4 betraf das z. B. die Auswertung von &amp;lt;code&amp;gt;X-Forwarded-For&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Die Bitwarden-Apps aktualisieren sich selbst. Neue App-Versionen brauchen oft eine aktuelle Vaultwarden-Version – Vaultwarden deshalb nicht monatelang auf altem Stand lassen.&lt;br /&gt;
* Automatische Updates mit Watchtower sind möglich, für einen Passwortserver aber nur mit Backup davor und Überwachung danach sinnvoll.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ohne Docker:&amp;#039;&amp;#039;&amp;#039; Vaultwarden gibt es auch als Paket einiger Distributionen oder als selbst gebautes Programm mit systemd-Dienst. Die Docker-Variante ist am besten dokumentiert.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlersuche:&amp;#039;&amp;#039;&amp;#039; Bei Anmeldeproblemen in den Apps liegt die Ursache meist am Zertifikat (fehlende Zwischenzertifikate) oder an einer falschen &amp;lt;code&amp;gt;DOMAIN&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Bei Aufbau und Betrieb von Linux-Servern und Containern unterstützt Sie das [https://www.max-it.de/it-services/linux-consulting/ Linux-Consulting von m.a.x. it].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Vaultwarden]] – Überblick und alle Artikel der Reihe&lt;br /&gt;
* [[Vaultwarden: HTTPS mit Reverse Proxy (Caddy, nginx, OPNsense)]]&lt;br /&gt;
* [[Vaultwarden: Absichern und härten]]&lt;br /&gt;
* [[Vaultwarden: Backup und Wiederherstellung]]&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [https://github.com/dani-garcia/vaultwarden/wiki/Using-Docker-Compose Vaultwarden-Wiki: Using Docker Compose]&lt;br /&gt;
* [https://www.max-it.de/it-services/linux-consulting/ Linux-Consulting von m.a.x. it]&lt;br /&gt;
&lt;br /&gt;
{{Uebermax}}&lt;br /&gt;
[[Kategorie:IT-Security]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;TechCorner-Redaktion</name></author>
	</entry>
</feed>