Kapitel 5/Free Rohtext.md hinzugefügt
This commit is contained in:
553
Kapitel 5/Free Rohtext.md
Normal file
553
Kapitel 5/Free Rohtext.md
Normal file
@@ -0,0 +1,553 @@
|
|||||||
|
# Kapitel 5 – Vaultwarden (Passwörter, 2FA)
|
||||||
|
|
||||||
|
## Einleitung
|
||||||
|
|
||||||
|
Zugangsdaten gehören zu den sensibelsten Informationen im digitalen Alltag.
|
||||||
|
Ob Streaming-Tools, Creator-Plattformen, E-Mail-Konten, Domains oder Selfhosting-Dienste – jeder Dienst hat sein eigenes Passwort, manche erfordern zusätzlich Zwei-Faktor-Codes (2FA).
|
||||||
|
|
||||||
|
### Das Problem mit Passwörtern im Alltag
|
||||||
|
|
||||||
|
Oft landen Passwörter:
|
||||||
|
- in Browsern, die ohne Hauptkennwort speichern,
|
||||||
|
- in Textdateien auf dem Desktop,
|
||||||
|
- oder werden für mehrere Konten wiederverwendet.
|
||||||
|
|
||||||
|
Zwei-Faktor-Codes liegen dann verstreut in Authenticator-Apps auf dem Handy – ohne Backup und nicht synchronisierbar.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Wer 2FA-Codes verliert, verliert oft dauerhaft den Zugriff.
|
||||||
|
> Viele Dienste bieten keinen Wiederherstellungsprozess ohne die Codes.
|
||||||
|
|
||||||
|
### Vaultwarden als Lösung
|
||||||
|
|
||||||
|
Vaultwarden ist ein selbst gehosteter Passwort-Manager.
|
||||||
|
Er speichert Passwörter und 2FA-Codes verschlüsselt auf dem eigenen Server – vollständig kompatibel mit den offiziellen Bitwarden-Apps für Browser, Desktop und Mobilgeräte.
|
||||||
|
|
||||||
|
Der Zugriff erfolgt über eine zentrale Weboberfläche, erreichbar unter einer eigenen Domain wie `https://pass.DEINE-DOMAIN.tld`, mit gültigem SSL-Zertifikat und WebSocket-Sync.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Vaultwarden ist die leichtgewichtige, Docker-basierte Variante von Bitwarden – ohne Cloud, ohne Abo, ohne Datenweitergabe.
|
||||||
|
|
||||||
|
### Ziel dieses Kapitels
|
||||||
|
|
||||||
|
Wir richten Vaultwarden in einem eigenen Debian‑12‑LXC per Docker Compose ein und machen ihn per Nginx Proxy Manager erreichbar.
|
||||||
|
Dabei setzen wir auf verschlüsselte Kommunikation (HTTPS), geschützte WebSocket-Verbindung und ein gehärtetes Admin-Backend mit Hash-Login.
|
||||||
|
|
||||||
|
Am Ende des Kapitels steht ein voll einsatzfähiger Passwort-Manager:
|
||||||
|
- auf eigener Hardware,
|
||||||
|
- mit geschlossener Registrierung,
|
||||||
|
- sicher erreichbar von jedem Gerät.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voraussetzungen & Ressourcen
|
||||||
|
|
||||||
|
Vaultwarden wird in einem eigenen LXC-Container unter Debian 12 betrieben.
|
||||||
|
Ein LXC ist ein leichtgewichtiger Container unter Proxmox – ideal für einzelne Dienste wie diesen. Die Einrichtung haben wir bereits in Kapitel 1 Schritt für Schritt gezeigt.
|
||||||
|
|
||||||
|
### Anforderungen an den Container
|
||||||
|
|
||||||
|
- **Betriebssystem:** Debian 12
|
||||||
|
- **CPU:** 1 Kern
|
||||||
|
- **RAM:** 512 MB
|
||||||
|
- **Festplatte:** 8 GB
|
||||||
|
- **IP-Adresse:** 192.168.1.50 (per DHCP-Reservierung im Router fest zugewiesen)
|
||||||
|
- **Internetverbindung:** erforderlich für Paketinstallation und Docker-Download
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Vergib die IP-Adresse über eine **DHCP-Reservierung im Router**, nicht außerhalb des DHCP-Bereichs.
|
||||||
|
> So stellst du sicher, dass die Adresse dauerhaft erhalten bleibt – ohne Konflikte mit anderen Geräten.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Proxmox – LXC erstellen → Allgemeine Einstellungen mit Hostname „vaultwarden“*
|
||||||
|
|
||||||
|
### Subdomain & Reverse Proxy
|
||||||
|
|
||||||
|
Damit Vaultwarden später über eine Webadresse erreichbar ist, benötigen wir:
|
||||||
|
|
||||||
|
- Eine Subdomain wie `pass.meinedomain.de`
|
||||||
|
- Einen laufenden Nginx Proxy Manager (siehe Kapitel 3), der HTTPS-Anfragen an den Vaultwarden-Container weiterleiten kann
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Du kannst auch eine kostenlose DynDNS-Adresse verwenden – z. B. über DuckDNS.
|
||||||
|
> Wichtig ist nur, dass der Proxy Manager Anfragen zuverlässig an die IP `192.168.1.50` weiterleitet.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: DuckDNS-Dashboard mit Subdomain + NPM-Dashboard mit Proxy Host*
|
||||||
|
|
||||||
|
## Schritt-für-Schritt-Anleitung
|
||||||
|
|
||||||
|
### System vorbereiten
|
||||||
|
|
||||||
|
Wir starten im frisch erstellten LXC-Container.
|
||||||
|
Öffne in Proxmox den Container `vaultwarden` und klicke im Menü auf **Konsole**.
|
||||||
|
|
||||||
|
Zuerst bringen wir das System auf den aktuellen Stand und installieren die benötigten Hilfspakete.
|
||||||
|
Diese sorgen dafür, dass externe Paketquellen sicher eingebunden und später Docker korrekt installiert werden kann.
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt upgrade -y
|
||||||
|
apt install -y ca-certificates curl gnupg lsb-release
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Diese Pakete ermöglichen verschlüsselte Verbindungen, das Verifizieren von Signaturen und das Erkennen der verwendeten Systemversion.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Proxmox-Konsole mit apt upgrade und Paketinstallation*
|
||||||
|
|
||||||
|
### Docker und Compose installieren
|
||||||
|
|
||||||
|
Vaultwarden wird als Docker-Anwendung betrieben.
|
||||||
|
Dafür installieren wir die aktuelle Docker Engine und das dazugehörige Compose-Plugin direkt aus dem offiziellen Repository.
|
||||||
|
|
||||||
|
1. Verzeichnis für den Signaturschlüssel anlegen:
|
||||||
|
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
|
||||||
|
2. Docker-Signaturschlüssel herunterladen und abspeichern:
|
||||||
|
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
|
||||||
|
3. Docker-Repository hinzufügen:
|
||||||
|
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||||
|
$(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
|
||||||
|
|
||||||
|
4. Paketlisten aktualisieren und Docker installieren:
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
|
||||||
|
5. Docker beim Systemstart automatisch aktivieren:
|
||||||
|
|
||||||
|
systemctl enable --now docker
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Prüfe die Installation mit folgenden Befehlen:
|
||||||
|
|
||||||
|
docker --version
|
||||||
|
docker compose version
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Terminalausgabe mit Docker- und Compose-Version*
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Falls Docker im Container nicht startet:
|
||||||
|
> In Proxmox → Container auswählen → Reiter „Optionen“ → Haken bei „Nesting“ und „keyctl“ setzen → Container neu starten.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Proxmox → CT-Optionen mit aktivierten Haken*
|
||||||
|
|
||||||
|
### Projektstruktur & .env-Datei
|
||||||
|
|
||||||
|
Wir legen jetzt die Verzeichnisstruktur für Vaultwarden an und erstellen eine Konfigurationsdatei `.env`.
|
||||||
|
Diese Datei enthält später wichtige Einstellungen wie die Adresse des Dienstes und (optional) SMTP-Daten für Mailversand.
|
||||||
|
|
||||||
|
Öffne die Konsole des Containers und gib folgende Befehle ein:
|
||||||
|
|
||||||
|
mkdir -p /opt/vaultwarden/data
|
||||||
|
cd /opt/vaultwarden
|
||||||
|
nano .env
|
||||||
|
|
||||||
|
Es öffnet sich der Nano-Editor. Trage hier Folgendes ein:
|
||||||
|
|
||||||
|
DOMAIN=https://pass.DEINE-DOMAIN.tld
|
||||||
|
SIGNUPS_ALLOWED=false
|
||||||
|
|
||||||
|
# Optional: SMTP für Verifizierung und Passwort-Reset
|
||||||
|
# SMTP_HOST=smtp.example.com
|
||||||
|
# SMTP_FROM=pass@example.com
|
||||||
|
# SMTP_PORT=587
|
||||||
|
# SMTP_SECURITY=starttls
|
||||||
|
# SMTP_USERNAME=nutzername
|
||||||
|
# SMTP_PASSWORD=deinSMTPpasswort
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Trage die Domain unbedingt **mit https://** ein.
|
||||||
|
> Ohne Protokollangabe können später Links in Mails oder der Weboberfläche fehlerhaft sein.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Die Option `SIGNUPS_ALLOWED=false` deaktiviert die offene Registrierung.
|
||||||
|
> Du aktivierst sie später kurzzeitig manuell, um deinen ersten Nutzer anzulegen.
|
||||||
|
|
||||||
|
Speichern mit:
|
||||||
|
Strg + O → Enter → Strg + X
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Nano-Editor mit ausgefüllter .env-Datei*
|
||||||
|
|
||||||
|
### docker-compose.yml erstellen
|
||||||
|
|
||||||
|
Vaultwarden wird über Docker Compose gestartet.
|
||||||
|
Dazu legen wir eine Datei namens `docker-compose.yml` an, die beschreibt, welches Image verwendet wird, auf welchen Ports der Dienst erreichbar ist und wo die Daten gespeichert werden.
|
||||||
|
|
||||||
|
Gib in der Konsole ein:
|
||||||
|
|
||||||
|
nano docker-compose.yml
|
||||||
|
|
||||||
|
Füge folgenden Inhalt ein:
|
||||||
|
|
||||||
|
services:
|
||||||
|
vaultwarden:
|
||||||
|
image: vaultwarden/server:latest
|
||||||
|
container_name: vaultwarden
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file: .env
|
||||||
|
environment:
|
||||||
|
- DOMAIN=${DOMAIN}
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
ports:
|
||||||
|
- "8000:80"
|
||||||
|
- "3012:3012"
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Port 8000 wird später im Nginx Proxy Manager als Weiterleitungsziel eingetragen.
|
||||||
|
> Port 3012 ist für WebSockets zuständig – ohne ihn funktioniert der Live-Sync zwischen Geräten nicht.
|
||||||
|
|
||||||
|
Speichern mit:
|
||||||
|
Strg + O → Enter → Strg + X
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: docker-compose.yml im Nano-Editor mit vollständigem Inhalt*
|
||||||
|
|
||||||
|
### Container starten & Logs prüfen
|
||||||
|
|
||||||
|
Sobald alle Dateien angelegt sind, starten wir Vaultwarden zum ersten Mal.
|
||||||
|
Dabei wird das Docker-Image heruntergeladen, der Container erstellt und im Hintergrund ausgeführt.
|
||||||
|
|
||||||
|
Gib in der Konsole ein:
|
||||||
|
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Der Parameter `-d` sorgt dafür, dass der Container im Hintergrund („detached“) läuft.
|
||||||
|
|
||||||
|
Prüfe danach, ob der Container fehlerfrei gestartet wurde:
|
||||||
|
|
||||||
|
docker compose logs -f --tail=80 vaultwarden
|
||||||
|
|
||||||
|
Wenn alles korrekt eingerichtet ist, erscheint nach einigen Sekunden die Meldung:
|
||||||
|
|
||||||
|
Rocket has launched from http://0.0.0.0:80
|
||||||
|
|
||||||
|
Das bedeutet, dass Vaultwarden intern erfolgreich auf Port 80 gestartet wurde.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Wenn stattdessen Fehlermeldungen wie „permission denied“ oder „/data not writable“ auftauchen,
|
||||||
|
> überprüfe die Rechte des Datenordners oder lösche einen fehlerhaften Container mit:
|
||||||
|
|
||||||
|
docker compose down
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Terminal mit „Rocket has launched...“-Ausgabe im Log*
|
||||||
|
|
||||||
|
### Veröffentlichung im Nginx Proxy Manager
|
||||||
|
|
||||||
|
Vaultwarden läuft nun intern auf Port 8000 des Containers.
|
||||||
|
Damit der Dienst auch von außen über eine Domain wie `https://pass.DEINE-DOMAIN.tld` erreichbar ist, richten wir ihn im Nginx Proxy Manager (NPM) als neuen Proxy Host ein.
|
||||||
|
|
||||||
|
Öffne die NPM-Weboberfläche:
|
||||||
|
http://<IP-des-NPM-Containers>:81
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Die Einrichtung von NPM haben wir ausführlich in Kapitel 3 gezeigt.
|
||||||
|
> Falls du dir nicht sicher bist, wie du einen Proxy Host anlegst, sieh dir das dortige Beispiel erneut an.
|
||||||
|
|
||||||
|
#### Proxy Host hinzufügen
|
||||||
|
|
||||||
|
1. Gehe auf **Hosts → Proxy Hosts**
|
||||||
|
2. Klicke auf **Add Proxy Host**
|
||||||
|
|
||||||
|
Fülle die Felder wie folgt aus:
|
||||||
|
|
||||||
|
- **Domain Names:** `pass.DEINE-DOMAIN.tld`
|
||||||
|
- **Scheme:** `http`
|
||||||
|
- **Forward Hostname / IP:** `192.168.1.50`
|
||||||
|
- **Forward Port:** `8000`
|
||||||
|
- **Block Common Exploits:** aktivieren
|
||||||
|
- **Websockets Support:** aktivieren
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Proxy Host Maske mit IP 192.168.1.50 und Port 8000*
|
||||||
|
|
||||||
|
#### WebSocket-Weiterleitung hinzufügen
|
||||||
|
|
||||||
|
Vaultwarden nutzt WebSockets für den Live-Sync zwischen Geräten.
|
||||||
|
Dafür muss eine spezielle Weiterleitung für den Pfad `/notifications/hub` eingerichtet werden.
|
||||||
|
|
||||||
|
1. Klicke im Proxy Host auf den Reiter **Custom Locations**
|
||||||
|
2. Wähle **Add Location**
|
||||||
|
|
||||||
|
Trage ein:
|
||||||
|
|
||||||
|
- **Location:** `/notifications/hub`
|
||||||
|
- **Forward Hostname / IP:** `192.168.1.50`
|
||||||
|
- **Forward Port:** `3012`
|
||||||
|
- **Websockets Support:** aktivieren
|
||||||
|
|
||||||
|
Speichern und zurück zum Hauptfenster des Proxy Hosts.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Custom Location mit WebSocket-Port 3012*
|
||||||
|
|
||||||
|
#### SSL-Zertifikat erstellen
|
||||||
|
|
||||||
|
Wechsle in den Reiter **SSL** und richte ein gültiges HTTPS-Zertifikat ein:
|
||||||
|
|
||||||
|
- **SSL Certificate:** Request a new SSL Certificate
|
||||||
|
- **Force SSL:** aktivieren
|
||||||
|
- **HTTP/2 Support:** aktivieren
|
||||||
|
- **HSTS Enabled:** aktivieren
|
||||||
|
- **Agree to terms:** Haken setzen
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Achte darauf, dass die Domain bereits auf deinen Server zeigt.
|
||||||
|
> Die Validierung von Let’s Encrypt funktioniert nur, wenn die Ports 80 und 443 korrekt weitergeleitet wurden.
|
||||||
|
|
||||||
|
Speichern. Der Proxy Host wird nun aktiv.
|
||||||
|
Rufe im Browser `https://pass.DEINE-DOMAIN.tld` auf.
|
||||||
|
Die Login-Seite von Vaultwarden sollte jetzt erscheinen.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Browseransicht mit Vaultwarden-Loginmaske unter HTTPS-Adresse*
|
||||||
|
|
||||||
|
### Admin-Absicherung & Benutzer anlegen
|
||||||
|
|
||||||
|
Vaultwarden besitzt ein separates Admin-Interface unter:
|
||||||
|
`https://pass.DEINE-DOMAIN.tld/admin`
|
||||||
|
|
||||||
|
Beim ersten Aufruf erscheint ein Warnhinweis:
|
||||||
|
Die Nutzung eines einfachen Admin-Tokens in Klartext ist unsicher.
|
||||||
|
Stattdessen hinterlegen wir einen verschlüsselten Zugriffscode im Format **Argon2 PHC**.
|
||||||
|
|
||||||
|
#### Sicheren Admin-Token erzeugen
|
||||||
|
|
||||||
|
Vaultwarden enthält ein eingebautes Werkzeug zum Erzeugen dieses Hashes.
|
||||||
|
|
||||||
|
Gib in der Konsole des Containers ein:
|
||||||
|
|
||||||
|
docker exec -it vaultwarden /vaultwarden hash --preset owasp
|
||||||
|
|
||||||
|
Du wirst zweimal nach dem gewünschten Admin-Passwort gefragt.
|
||||||
|
Am Ende erscheint ein langer Code, der mit `$argon2id$` beginnt.
|
||||||
|
Diesen **komplett kopieren** – er wird später im Adminbereich eingetragen.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Dieser Code ist nicht das Passwort selbst, sondern ein sicherer Rechenwert daraus.
|
||||||
|
> Du verwendest weiterhin das **eingegebene Passwort**, nicht den Hash zum Login.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Konsole mit Ausgabe des Argon2-Hashes*
|
||||||
|
|
||||||
|
#### Hash im Webinterface eintragen
|
||||||
|
|
||||||
|
1. Öffne `https://pass.DEINE-DOMAIN.tld/admin`
|
||||||
|
2. Logge dich mit dem neuen Passwort ein
|
||||||
|
3. Gehe zu **Settings → General**
|
||||||
|
4. Trage den kopierten Hash in das Feld **Admin Token / Argon2 PHC** ein
|
||||||
|
5. Speichern
|
||||||
|
|
||||||
|
Ab jetzt ist der Adminbereich mit dem sicheren Hash geschützt.
|
||||||
|
Der alte Klartext-Eintrag darf entfernt werden.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Öffne die `.env`-Datei und lösche die Zeile mit `ADMIN_TOKEN=`
|
||||||
|
> Danach den Container neu starten:
|
||||||
|
|
||||||
|
sed -i '/^ADMIN_TOKEN=/d' /opt/vaultwarden/.env
|
||||||
|
cd /opt/vaultwarden && docker compose restart vaultwarden
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Adminbereich mit gespeichertem Hash + Login-Maske*
|
||||||
|
|
||||||
|
#### Ersten Benutzer anlegen
|
||||||
|
|
||||||
|
Vaultwarden lässt keine offenen Registrierungen zu – genau das haben wir in der `.env` vorher deaktiviert.
|
||||||
|
Um den ersten Benutzer anzulegen, aktivieren wir die Anmeldung **kurzzeitig manuell**:
|
||||||
|
|
||||||
|
1. Adminbereich öffnen → **Settings → General**
|
||||||
|
2. Option **Allow new signups** aktivieren → Speichern
|
||||||
|
3. In einem zweiten Tab `https://pass.DEINE-DOMAIN.tld/#/register` öffnen
|
||||||
|
4. Benutzer registrieren
|
||||||
|
5. Danach Anmeldung testen und die Registrierung wieder deaktivieren
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Alternativ kannst du Nutzer auch über **Users → Invitations** per E-Mail einladen, wenn SMTP korrekt konfiguriert ist.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Registrierung und späterer Login im Tresor*
|
||||||
|
|
||||||
|
### Backups & Wiederherstellung
|
||||||
|
|
||||||
|
Vaultwarden speichert alle Daten in einem lokalen Ordner – das betrifft sowohl Passwörter, Benutzer, Konfigurationen als auch Anhänge und TOTP-Codes.
|
||||||
|
|
||||||
|
Wichtig:
|
||||||
|
Nicht der Docker-Container ist relevant, sondern der **Ordner `/opt/vaultwarden/data`**.
|
||||||
|
Nur dieser Ordner muss regelmäßig gesichert werden.
|
||||||
|
|
||||||
|
#### Manuelles Backup erstellen
|
||||||
|
|
||||||
|
Ein manuelles Backup kannst du direkt im Container-Terminal erstellen:
|
||||||
|
|
||||||
|
cd /opt/vaultwarden
|
||||||
|
tar -czf /root/vaultwarden-backup-$(date +%F).tar.gz data
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Wenn du maximale Datensicherheit willst, kannst du Vaultwarden vor dem Backup kurz stoppen:
|
||||||
|
|
||||||
|
docker compose stop vaultwarden
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Für kleine Setups ist ein Online-Backup im laufenden Betrieb meist ausreichend.
|
||||||
|
|
||||||
|
Nach dem Backup startest du den Container bei Bedarf wieder:
|
||||||
|
|
||||||
|
docker compose start vaultwarden
|
||||||
|
|
||||||
|
Die Backup-Datei liegt danach unter `/root/` und heißt z. B. `vaultwarden-backup-2025-10-04.tar.gz`
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Terminalausgabe nach erfolgreicher Archivierung*
|
||||||
|
|
||||||
|
#### Wiederherstellung
|
||||||
|
|
||||||
|
Falls du Vaultwarden auf einem neuen System wiederherstellen musst:
|
||||||
|
|
||||||
|
1. Neue Instanz bis zur `docker-compose.yml` einrichten
|
||||||
|
2. Backup-Datei nach `/opt/vaultwarden/` kopieren
|
||||||
|
3. Archiv entpacken:
|
||||||
|
|
||||||
|
tar -xzf vaultwarden-backup-2025-10-04.tar.gz
|
||||||
|
|
||||||
|
4. Container starten:
|
||||||
|
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
Das System ist danach wieder wie vorher nutzbar – inklusive aller Benutzer, Einstellungen und Daten.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Stelle sicher, dass die Zugriffsrechte auf den Ordner `data` erhalten bleiben.
|
||||||
|
> Andernfalls kann Vaultwarden die Datenbank nicht korrekt öffnen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting & Tipps
|
||||||
|
|
||||||
|
### Vaultwarden lädt nicht im Browser
|
||||||
|
|
||||||
|
Wenn sich die Seite `https://pass.DEINE-DOMAIN.tld` nicht öffnet:
|
||||||
|
|
||||||
|
- Öffne in Proxmox den Container `vaultwarden`
|
||||||
|
- Klicke auf **Konsole**
|
||||||
|
- Gib ein:
|
||||||
|
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
In der Spalte „State“ muss „running“ stehen.
|
||||||
|
|
||||||
|
Falls nicht, starte den Container erneut:
|
||||||
|
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Ausgabe von `docker compose ps` mit Status „running“*
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Du kannst auch testen, ob Vaultwarden intern erreichbar ist:
|
||||||
|
> Öffne `http://192.168.1.50:8000` im Browser.
|
||||||
|
> Wenn dort die Login-Maske erscheint, funktioniert Vaultwarden – das Problem liegt am Proxy.
|
||||||
|
|
||||||
|
### Die Domain funktioniert, aber es erscheint keine Login-Maske
|
||||||
|
|
||||||
|
Öffne den Nginx Proxy Manager und gehe wie folgt vor:
|
||||||
|
|
||||||
|
- Klicke auf den Proxy Host für `pass.DEINE-DOMAIN.tld`
|
||||||
|
- Prüfe:
|
||||||
|
- IP-Adresse: `192.168.1.50`
|
||||||
|
- Port: `8000`
|
||||||
|
- Haken bei „Block Common Exploits“ und „Websockets Support“
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Proxy Host Übersicht mit richtiger IP und Port*
|
||||||
|
|
||||||
|
- Wechsle in den Reiter **Custom Locations**
|
||||||
|
- Prüfe:
|
||||||
|
- Location: `/notifications/hub`
|
||||||
|
- Ziel-Port: `3012`
|
||||||
|
- WebSocket-Support: aktiviert
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Custom Location mit aktivem Websocket-Haken*
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Änderungen speichern, Proxy Host kurz deaktivieren und wieder aktivieren.
|
||||||
|
|
||||||
|
### Die Seite lädt, aber nichts funktioniert richtig
|
||||||
|
|
||||||
|
Wenn z. B. das Design fehlt oder Buttons nicht reagieren:
|
||||||
|
|
||||||
|
- Öffne die `.env`-Datei mit:
|
||||||
|
|
||||||
|
nano /opt/vaultwarden/.env
|
||||||
|
|
||||||
|
- Prüfe, ob die Domain mit `https://` eingetragen ist:
|
||||||
|
|
||||||
|
DOMAIN=https://pass.DEINE-DOMAIN.tld
|
||||||
|
|
||||||
|
Fehlt das `https://`, tragen wir es nach und starten neu:
|
||||||
|
|
||||||
|
docker compose restart vaultwarden
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Nano-Editor mit korrigierter DOMAIN-Zeile*
|
||||||
|
|
||||||
|
### Ich kann mich nicht im Adminbereich anmelden
|
||||||
|
|
||||||
|
- Rufe `https://pass.DEINE-DOMAIN.tld/admin` auf
|
||||||
|
- Gib das Passwort ein, das du beim Erzeugen des Hashs vergeben hast
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Der Admin-Login funktioniert **nicht mit dem Hash**, sondern mit dem dazugehörigen Passwort.
|
||||||
|
|
||||||
|
Wenn du keinen Zugriff mehr hast:
|
||||||
|
|
||||||
|
- Neuen Hash erzeugen:
|
||||||
|
|
||||||
|
docker exec -it vaultwarden /vaultwarden hash --preset owasp
|
||||||
|
|
||||||
|
- Hash im Adminbereich unter **Settings → General → Admin Token** einfügen
|
||||||
|
- Container neu starten
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Adminbereich mit Argon2 PHC Feld*
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Falls nichts mehr geht:
|
||||||
|
> Vorübergehend `ADMIN_TOKEN=deinPasswort` in `.env` setzen → dann zurück auf Hash wechseln.
|
||||||
|
|
||||||
|
|
||||||
|
### Keine Live-Synchronisation zwischen Geräten
|
||||||
|
|
||||||
|
Wenn du Vaultwarden auf zwei Geräten gleichzeitig geöffnet hast und eine Änderung (z. B. ein neues Passwort) **nicht automatisch** auf dem anderen Gerät erscheint, liegt das fast immer an einer fehlenden WebSocket-Verbindung.
|
||||||
|
|
||||||
|
Vaultwarden verwendet WebSockets, um Änderungen sofort an alle verbundenen Geräte zu übertragen – ohne Neuladen.
|
||||||
|
Damit das funktioniert, muss im Nginx Proxy Manager eine **zusätzliche Weiterleitung** eingerichtet sein.
|
||||||
|
|
||||||
|
Öffne den Proxy Host in NPM, der auf `pass.DEINE-DOMAIN.tld` zeigt:
|
||||||
|
|
||||||
|
1. Wechsle in den Reiter **Custom Locations**
|
||||||
|
2. Stelle sicher, dass dort eine Weiterleitung für **`/notifications/hub`** eingerichtet ist
|
||||||
|
3. Die Ziel-IP ist wie beim Haupt-Proxy `192.168.1.50`, aber der **Port ist `3012`**
|
||||||
|
4. Aktiviere auch hier den Haken **„Websockets Support“**
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Diese Weiterleitung ist zwingend erforderlich – ohne sie funktioniert die automatische Aktualisierung nicht.
|
||||||
|
> Du musst dann manuell die Seite neu laden, um Änderungen zu sehen.
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Custom Location mit Pfad `/notifications/hub`, Port 3012 und aktivem WebSocket-Haken*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Zusammenfassung & Nächste Schritte
|
||||||
|
|
||||||
|
Mit Vaultwarden hast du jetzt einen vollwertigen Passwort-Manager im eigenen Homelab eingerichtet – sicher, unabhängig und kompatibel mit allen offiziellen Bitwarden-Apps.
|
||||||
|
|
||||||
|
### Was du jetzt erreicht hast:
|
||||||
|
|
||||||
|
- Vaultwarden läuft als Docker-Anwendung in einem eigenen Debian-LXC
|
||||||
|
- Der Dienst ist über `https://pass.DEINE-DOMAIN.tld` erreichbar
|
||||||
|
- Das Admin-Interface ist mit einem sicheren Hash-Zugang geschützt
|
||||||
|
- Die WebSocket-Verbindung sorgt für Live-Synchronisierung
|
||||||
|
- Backups sind eingerichtet und schnell wiederherstellbar
|
||||||
|
|
||||||
|
👉 *Screenshot geeignet: Loginmaske in Browser + aktiver Proxy Host in NPM*
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Wenn du den Tresor auch unterwegs nutzen willst, installiere die Bitwarden-App auf deinem Smartphone
|
||||||
|
> und stelle unter „Server-URL“ deine eigene Adresse ein:
|
||||||
|
> `https://pass.DEINE-DOMAIN.tld`
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Du kannst Vaultwarden jetzt direkt im Alltag nutzen – zum Speichern von Passwörtern, Anlegen von Ordnern, Hinterlegen von TOTP-Codes und für sicheren Zugriff von überall.
|
||||||
Reference in New Issue
Block a user