Vaultwarden Bitwarden Self Hosted Installation
Vaultwarden – Bitwarden Self-Hosted Installation auf Ubuntu
Was ist Vaultwarden?
Vaultwarden ist ein Open-Source, selbst gehosteter Password Manager, der mit der Bitwarden-API kompatibel ist. Im Gegensatz zu Cloud-basierten Passwort-Managern können Sie mit Vaultwarden Ihre Anmeldedaten vollständig lokal kontrollieren und speichern. Die offizielle Bitwarden-Client-Software (Browser-Erweiterung, Desktop-App, mobil) funktioniert nahtlos mit Vaultwarden.
Voraussetzungen
- Ubuntu 20.04 oder neuer
- Docker und Docker Compose installiert
- Eine Domain für SSL/HTTPS (z.B. vault.example.com)
- Nginx als Reverse Proxy
- Let's Encrypt für SSL-Zertifikat
- Mindestens 2GB RAM verfügbar
Vergleich: Vaultwarden vs Bitwarden Cloud vs KeePassXC
| Feature | Vaultwarden | Bitwarden Cloud | KeePassXC |
|---|---|---|---|
| Cost | Kostenlos (Open Source) | 10 EUR/Jahr oder kostenlos (basic) | Kostenlos (Open Source) |
| Self-hosted | Ja (Docker) | Nein (Cloud only) | Ja (lokal) |
| TOTP (2FA) | Ja (eingebaut) | Ja (Premium) | Plugin erforderlich |
| Admin panel | Web-basiert vorhanden | Dashboard vorhanden | Keine Verwaltungs-UI |
| Mobile apps | Bitwarden Apps funktionieren | Offizielle Apps vorhanden | Viele Drittanbieter-Apps |
| Browser extension | Bitwarden Extension funktioniert | Offizielle Extension | KeePass Extensions verfügbar |
Installation mit Docker Compose
Schritt 1: Verzeichnis erstellen
mkdir -p /opt/vaultwarden cd /opt/vaultwarden
Schritt 2: docker-compose.yml erstellen
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- "80:80"
- "443:443"
environment:
DOMAIN: https://vault.example.com
SIGNUPS_ALLOWED: "true"
INVITATIONS_ALLOWED: "false"
ADMIN_TOKEN: ${ADMIN_TOKEN}
SHOW_PASSWORD_HINT: "false"
# SMTP Konfiguration
SMTP_HOST: mail.example.com
SMTP_FROM: vaultwarden@example.com
SMTP_PORT: 587
SMTP_SECURITY: starttls
SMTP_USERNAME: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
# Datenbankoptionen
DATABASE_URL: sqlite:///data/db.sqlite3
# Sicherheit
EXTENDED_LOGGING: "true"
EXTENDED_LOGGING_FORMAT: "{method} {uri} {status}"
LOG_LEVEL: info
volumes:
- ./vw_data:/data
- ./nginx.conf:/etc/nginx/nginx.conf:ro
networks:
- vaultwarden-net
networks:
vaultwarden-net:
driver: bridge
EOF
Schritt 3: Environment-Datei erstellen
cat > .env << 'EOF' ADMIN_TOKEN=$(openssl rand -base64 32) SMTP_USER=your-smtp-username SMTP_PASSWORD=your-smtp-password EOF
Nginx Reverse Proxy mit SSL
Nginx Konfiguration
cat > /etc/nginx/sites-available/vaultwarden << 'EOF'
server {
listen 80;
server_name vault.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name vault.example.com;
ssl_certificate /etc/letsencrypt/live/vault.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
client_max_body_size 525M;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
proxy_http_version 1.1;
}
location /admin {
proxy_pass http://localhost:80/admin;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
Let's Encrypt SSL-Zertifikat
sudo apt-get install certbot python3-certbot-nginx sudo certbot certonly --nginx -d vault.example.com
Nginx aktivieren und neustarten
sudo ln -s /etc/nginx/sites-available/vaultwarden /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
Vaultwarden starten
cd /opt/vaultwarden docker-compose up -d
Admin Panel und Erste Konfiguration
Admin Panel aufrufen
Öffnen Sie: https://vault.example.com/admin und geben Sie Ihren ADMIN_TOKEN ein.
Im Admin Panel:
- Organization Policy anpassen
- Einladungsrichtlinie konfigurieren
- Backup-Einstellungen überprüfen
- SMTP-Verbindung testen
Benutzerregistrierung
Erste Benutzer erstellen
Nach der Installation können sich Benutzer selbst registrieren, wenn SIGNUPS_ALLOWED=true. Nach dem Onboarding sollten Sie dies in der .env deaktivieren:
SIGNUPS_ALLOWED=false
Danach starten Sie neu:
docker-compose down docker-compose up -d
Backup-Strategie
Regelmäßige Backups
#!/bin/bash BACKUP_DIR="/backups/vaultwarden" mkdir -p $BACKUP_DIR DATE=$(date +%Y%m%d_%H%M%S) # SQLite-Datenbank sichern cp /opt/vaultwarden/vw_data/db.sqlite3 $BACKUP_DIR/db_$DATE.sqlite3 # Optional: Zu externem Speicher synchronisieren rsync -av $BACKUP_DIR remote-server:/backups/vaultwarden/
Backup-Automatisierung mit Cron
0 2 * * * /opt/vaultwarden/backup.sh
Updates durchführen
Image aktualisieren
cd /opt/vaultwarden docker-compose pull docker-compose down docker-compose up -d
Bitwarden Clients verbinden
Browser-Erweiterung
- Bitwarden-Erweiterung installieren
- Einstellungen → Server → Custom Environment
- Server URL: https://vault.example.com eintragen
- API URL: https://vault.example.com/api (wird meist automatisch erkannt)
- Mit Benutzername/Passwort anmelden
Desktop- und Mobile-Apps
Gleiches Verfahren: Einstellungen → Server-URL auf die selbst gehostete Instanz ändern.
Sicherheit und Best Practices
- Verwenden Sie nur HTTPS (SSL/TLS)
- Regelmäßige Backups durchführen
- Vaultwarden regelmäßig aktualisieren
- Starke Master-Passwörter erzwingen
- Two-Factor Authentication (2FA) aktivieren
- Firewall richtig konfigurieren (nur notwendige Ports offenlegen)
- Log-Dateien regelmäßig überprüfen
Häufig gestellte Fragen
Kann ich Daten von Bitwarden Cloud exportieren? Ja, Bitwarden ermöglicht den Export als JSON. Sie können diese Datei in Vaultwarden importieren.
Ist Vaultwarden sicher? Ja, wenn Sie die Server-Updates regelmäßig durchführen, HTTPS verwenden und die Datenbank sichern.
Welche Datenbank wird empfohlen? SQLite für einfache Setups (<100 Benutzer), PostgreSQL für größere Installationen.
Verwandte Artikel
- 📖 Docker Compose Grundlagen Anleitung
- 📖 Nginx Reverse Proxy Konfiguration
- 📖 SSL Zertifikat einrichten (HTTPS)
- 🔧 Enjyn Gen Tools – Passwörter & Keys generieren
- 🔧 Sichere Server bei Enjyn mieten