5.5 KiB
📘 Kapitel 6: Vaultwarden (ohne Docker, systemd) Logische Position: 6 (nach 5: WireGuard · vor 7: Nextcloud)
Ziel: Vaultwarden als native Binary im Debian‑12‑LXC per systemd betreiben – ohne Docker. Veröffentlichung hinter Nginx Proxy Manager (HTTPS + WebSockets), öffentliche Registrierung deaktivieren, Admin‑Token setzen, optional SMTP, einfache Backup‑Routine.
✅ Voraussetzungen LXC: Debian 12 (Bookworm) · root Empfohlen: 1 vCPU, 128–256 MB RAM, ≥ 500 MB Speicher (plus Daten) Netzwerk: IPv4/IPv6 im LAN Extern optional: Nginx Proxy Manager + DynDNS/Subdomain (eigene Kapitel)
🧩 Was wir aufbauen Binary: /opt/vaultwarden/vaultwarden Dienst: systemd‑Service unter /etc/systemd/system/vaultwarden.service Ports (intern, nur Loopback): 127.0.0.1:8000 (HTTP/API), 127.0.0.1:3012 (WebSocket) Persistenz: /var/lib/vaultwarden (enthält /data) Konfig per Datei: /etc/vaultwarden.env (DOMAIN, ADMIN_TOKEN, SIGNUPS_ALLOWED=false, optional SMTP_*) Reverse‑Proxy: NPM leitet / → 8000 und /notifications/hub → 3012
🗺️ Kapitelablauf (Kurzüberblick)
- System vorbereiten (Update, Tools, Systemnutzer anlegen)
- Verzeichnisse & Rechte ( /opt/vaultwarden , /var/lib/vaultwarden )
- Vaultwarden‑Binary laden, nach /opt/vaultwarden legen, ausführbar machen
- /etc/vaultwarden.env erstellen (DOMAIN, ADMIN_TOKEN, …)
- systemd‑Service schreiben, aktivieren, Start prüfen
- NPM: Proxy Host + Custom Location (WebSockets) + SSL
- Admin‑Backend testen, Signups aus, optional SMTP
- Backup (Tar von /var/lib/vaultwarden)
🔧 Kerneinstellungen (wichtig!)
- DOMAIN: https://pass.DEINE‑DOMAIN.tld (für korrekte Links)
- ADMIN_TOKEN: lange, zufällige Zeichenfolge (mind. 64 Zeichen)
- SIGNUPS_ALLOWED=false: öffentliche Registrierung aus
- WEBSOCKET_ENABLED=true + Weiterleitung /notifications/hub → 3012
- ROCKET_ADDRESS=127.0.0.1 / ROCKET_PORT=8000 (nur lokal lauschen)
- WEBSOCKET_ADDRESS=127.0.0.1 / WEBSOCKET_PORT=3012
📦 Installation (LXC, ohne Docker) System & Tools:
apt update && apt upgrade -y
apt install -y ca-certificates curl unzip
# Systemnutzer ohne Login
useradd --system --home /var/lib/vaultwarden --shell /usr/sbin/nologin vaultwarden || true
# Verzeichnisse
mkdir -p /opt/vaultwarden
mkdir -p /var/lib/vaultwarden
chown -R vaultwarden:vaultwarden /var/lib/vaultwarden
Binary laden (URL der offiziellen Release‑Asset eintragen – linux x86_64 gnu):
export VW_URL="<RELEASE-ASSET-URL>" # z.B. .../vaultwarden-<VERSION>-x86_64-unknown-linux-gnu.tar.gz
curl -L "$VW_URL" -o /tmp/vaultwarden.tar.gz
mkdir -p /tmp/vw && tar -xzf /tmp/vaultwarden.tar.gz -C /tmp/vw
install -m 0755 /tmp/vw/vaultwarden /opt/vaultwarden/vaultwarden
# (Web Vault ist in den offiziellen Releases enthalten)
Konfiguration (/etc/vaultwarden.env):
DOMAIN=https://pass.DEINE-DOMAIN.tld
ADMIN_TOKEN=ErzeugeHierMindestens64Zeichen
SIGNUPS_ALLOWED=false
WEBSOCKET_ENABLED=true
ROCKET_ADDRESS=127.0.0.1
ROCKET_PORT=8000
WEBSOCKET_ADDRESS=127.0.0.1
WEBSOCKET_PORT=3012
# Optional SMTP
# SMTP_HOST=smtp.example.com
# SMTP_FROM=pass@example.com
# SMTP_PORT=587
# SMTP_SECURITY=starttls
# SMTP_USERNAME=user
# SMTP_PASSWORD=deinPasswort
systemd‑Service (/etc/systemd/system/vaultwarden.service):
[Unit]
Description=Vaultwarden (Bitwarden server compatible) – native
After=network.target
[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=/etc/vaultwarden.env
ExecStart=/opt/vaultwarden/vaultwarden
WorkingDirectory=/var/lib/vaultwarden
# Ressourcen‑Schutz (optional, schlank halten)
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Aktivieren & starten:
systemctl daemon-reload
systemctl enable --now vaultwarden
systemctl status vaultwarden --no-pager
Erwartet: Dienst „active (running)“.
🌐 NPM/Reverse Proxy (mit WebSockets) Proxy Host anlegen:
- Domain Names: pass.DEINE‑DOMAIN.tld
- Scheme: http · Forward Host/IP: 127.0.0.1 (oder LXC‑IP) · Forward Port: 8000
- Block Common Exploits: an · Websockets Support: an Custom Location:
- Location: /notifications/hub → Forward Host/IP: 127.0.0.1 (oder LXC‑IP) · Port: 3012 · Websockets an SSL:
- Let’s Encrypt Zertifikat anfordern; Force SSL, HTTP/2, HSTS: an
🛡️ Erstkonfiguration (Web‑UI)
- Aufruf: https://pass.DEINE‑DOMAIN.tld
- Admin: https://pass.DEINE‑DOMAIN.tld/admin → Token = ADMIN_TOKEN
- Prüfen: Signups aus (SIGNUPS_ALLOWED=false)
- Optional: SMTP setzen & Testmail senden
- Erstes Benutzerkonto anlegen und 2FA (TOTP/FIDO2) aktivieren
💾 Backup (Basis) Daten liegen in /var/lib/vaultwarden. Einfaches Backup:
tar -czf /root/vaultwarden-backup-$(date +%F).tar.gz -C / var/lib/vaultwarden
Restore testweise separat prüfen; regelmäßig per Cron sichern.
⚠️ Stolperfallen
- WebSockets nicht weitergeleitet → Live‑Sync/Push funktioniert nicht
- DOMAIN nicht auf https → fehlerhafte Links/Icons
- ADMIN_TOKEN zu kurz/unsicher → Risiko fürs Admin‑Backend
- Signups offen gelassen → ungewollte Accounts
🔗 Siehe auch Kap. 3 Nginx Proxy Manager (Domain/HTTPS) Kap. 4 DynDNS (Erreichbarkeit von außen) Kap. 14 Backup (Basis, privat) Kap. 7 Nextcloud (nächster Schritt)
📜 Lizenz für dieses Kapitel Creative Commons Attribution (CC BY) – Nutzung/Weitergabe/Anpassung erlaubt, mit Namensnennung „Bratonien Tech“.