Vaultwarden unter Ubuntu 20.04 mit Docker und Caddy installieren

Vaultwarden ist eine gemeinschaftlich entwickelte Alternative zum offiziellen Bitwarden-Server und wurde in Rust programmiert. Im Gegensatz zur offiziellen Version benötigt Vaultwarden deutlich weniger Systemressourcen, ist jedoch vollständig kompatibel mit den offiziellen Bitwarden-Clients. Diese Anleitung beschreibt die Installation von Vaultwarden mithilfe von Docker und docker-compose unter Ubuntu 20.04 und zeigt, wie die Verbindung mithilfe von Caddy abgesichert wird.

Voraussetzungen für das System

Vor der Installation sollte Folgendes erfüllt sein:

  • Ein Ubuntu 20.04 System sollte bereits laufen.
  • Das System sollte auf dem aktuellen Stand sein.
  • Ein Benutzerkonto mit sudo-Rechten (nicht root) sollte vorhanden sein.
  • Du solltest als dieser Benutzer auf den Server zugreifen.
  • Port 443 sollte für eingehenden Datenverkehr freigegeben sein.
  • Ein DNS A-Eintrag sollte eingerichtet sein, der eine (Sub-)Domain mit der IP deines Servers verbindet – Caddy benötigt eine auflösbare Domain, um ein TLS/SSL-Zertifikat zu generieren.

Docker Engine installieren

Starte mit der Entfernung eventuell vorhandener älterer Docker-Versionen und Komponenten:

$ sudo apt remove docker docker.io containerd runc 

Anschließend sollte snapd auf den neuesten Stand gebracht werden:

$ sudo snap install core; sudo snap refresh core 

Nun erfolgt die Installation von Docker über Snap:

$ sudo snap install docker 

Vaultwarden einrichten

Docker-Container vorbereiten

Erstelle zunächst ein eigenes Verzeichnis für Vaultwarden und wechsle anschließend in dieses Verzeichnis:

$ mkdir ~/vaultwarden
$ cd ~/vaultwarden

Erstelle nun die Datei docker-compose.yml und öffne sie im Editor:

Füge in die Datei folgende Konfiguration ein:

version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - WEBSOCKET_ENABLED=true
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      - DOMAIN=
      - EMAIL=
      - LOG_FILE=/data/access.log

Trage deine eigene Domain oder Subdomain ein, indem du die DOMAIN-Variable im Abschnitt environment des Caddy-Containers entsprechend aktualisierst:

environment:
  - DOMAIN=https://example.com

Gib zusätzlich eine gültige E-Mail-Adresse in der EMAIL-Variable an, damit Let’s Encrypt ein TLS-Zertifikat ausstellen kann:

environment:
  - DOMAIN=https://example.com
  - EMAIL=user@example.com

Um die Änderungen im Nano-Editor zu speichern und den Editor zu schließen, drücke Strg + X, bestätige mit Y und beende den Vorgang mit Enter.

Die Caddyfile einrichten

Erstelle zunächst die Konfigurationsdatei für Caddy und öffne sie zur Bearbeitung:

Füge anschließend die folgende Konfiguration in die Datei ein:

{$DOMAIN}:443 {
  log {
    level INFO
    output file {$LOG_FILE} {
      roll_size 10MB
      roll_keep 10
    }
  }

  # TLS-Zertifikat über ACME HTTP-01 Challenge beziehen
  tls {$EMAIL}

  encode gzip

  # Zusätzliche HTTP-Header zur Absicherung
  header {
    Strict-Transport-Security "max-age=31536000;"
    X-XSS-Protection "1; mode=block"
    X-Frame-Options "DENY"
    X-Robots-Tag "none"
    -Server
  }

  # Weiterleitung der Benachrichtigungen per WebSocket
  reverse_proxy /notifications/hub vaultwarden:3012

  reverse_proxy vaultwarden:80 {
    header_up X-Real-IP {remote_host}
  }
}

Speichere die Datei und beende den Editor, indem du Strg + X drückst, danach mit Y bestätigst und mit Enter abschließt.

Diese Konfiguration weist Caddy an, eingehenden HTTPS-Datenverkehr auf Port 443 an Vaultwarden weiterzuleiten. Zusätzlich sind Sicherheits-Header gesetzt – darunter HSTS für strikte Transport-Sicherheit, Schutz vor Cross-Site-Scripting, Blockierung der Darstellung in Frames zum Schutz vor Clickjacking, die Verhinderung von Indexierung durch Suchmaschinen sowie das Entfernen der Caddy-Serverkennung.

Vaultwarden starten

Zum Starten von Vaultwarden verwende den Befehl docker-compose im Hintergrundmodus. Der Startvorgang kann einige Augenblicke in Anspruch nehmen:

$ sudo docker-compose up -d

Prüfe, ob die Container korrekt laufen, indem du den Status mit docker ps abfragst:

Im Ergebnis sollte ein Status wie „Up“ angezeigt werden, der bestätigt, dass der Container seit Sekunden oder Minuten aktiv ist.

Sicherheitsoptionen verbessern

Vaultwarden erlaubt zusätzliche Konfigurationsmöglichkeiten, um die Sicherheit der Installation zu erhöhen.

Benutzerregistrierung deaktivieren

Standardmäßig ist es allen Nutzern möglich, sich bei deiner Vaultwarden-Instanz selbstständig zu registrieren. Das ist in der Einrichtungsphase hilfreich, kann später jedoch ein Risiko darstellen.

Sobald dein eigenes Benutzerkonto eingerichtet ist, kannst du die Neuregistrierung durch folgende Änderung in der Datei docker-compose.yml deaktivieren:

services:
  vaultwarden:
    ... other configuration ...
    environment:
      - SIGNUPS_ALLOWED=false
      ... other configuration ...

Einladungsfunktion abschalten

Vaultwarden ermöglicht es bestehenden Nutzern, andere Personen per Einladung hinzuzufügen. Für Einzelnutzer oder kleine, vertrauenswürdige Gruppen ist diese Funktion meist überflüssig.

Um sie zu deaktivieren, setze die Variable INVITATIONS_ALLOWED auf false:

services:
  vaultwarden:
    ... other configuration ...
    environment:
      - INVITATIONS_ALLOWED=false
      ... other configuration ...

Passworthinweise ausblenden

Im offiziellen Bitwarden-Server werden Passworthinweise in der Regel per E-Mail zugestellt. Vaultwarden hingegen zeigt diese Hinweise direkt im Browser an – das spart eine E-Mail-Konfiguration.

Wenn du dieses Verhalten deaktivieren möchtest, füge die Variable SHOW_PASSWORD_HINT in die docker-compose.yml ein und setze sie auf false:

services:
  vaultwarden:
    ... other configuration ...
    environment:
      - SHOW_PASSWORD_HINT=false
      ... other configuration ...

Abschließende Hinweise

Wenn du alle oben beschriebenen Schritte durchgeführt hast, steht dir nun eine funktionstüchtige und abgesicherte Vaultwarden-Installation unter Ubuntu 20.04 zur Verfügung – betrieben mit Docker und Caddy. Sämtliche sicherheitsrelevanten Einstellungen kannst du direkt in der Datei docker-compose.yml anpassen, wodurch du maximale Kontrolle über Registrierungsmöglichkeiten, Einladungsrechte und die Anzeige von Passworthinweisen erhältst.

Achte darauf, deine Docker-Container regelmäßig zu aktualisieren und die Zugriffprotokolle kontinuierlich zu überwachen, um ungewöhnliches Verhalten frühzeitig zu erkennen. Die Protokollierung von Caddy erfolgt automatisch in der Datei, die über die Variable LOG_FILE festgelegt wurde. Das erleichtert dir die Nachverfolgung von Zugriffen und die kontinuierliche Überwachung der Anwendung.

Falls du planst, deine Installation zu erweitern oder mit anderen Systemen zu integrieren, findest du in der offiziellen Dokumentation von Vaultwarden und Docker hilfreiche Informationen zu erweiterten Konfigurationsmöglichkeiten – darunter Einstellungen per Umgebungsvariablen, Backup-Konzepte oder Szenarien für mehrere Benutzer.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: