📘 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) 1. System vorbereiten (Update, Tools, Systemnutzer anlegen) 2. Verzeichnisse & Rechte ( /opt/vaultwarden , /var/lib/vaultwarden ) 3. Vaultwarden‑Binary laden, nach /opt/vaultwarden legen, ausfĂŒhrbar machen 4. **/etc/vaultwarden.env** erstellen (DOMAIN, ADMIN\_TOKEN, 
) 5. systemd‑Service schreiben, aktivieren, Start prĂŒfen 6. NPM: Proxy Host + Custom Location (WebSockets) + SSL 7. Admin‑Backend testen, Signups aus, optional SMTP 8. Backup (Tar von /var/lib/vaultwarden) 🔧 Kerneinstellungen (wichtig!) * **DOMAIN**: [https://pass.DEINE‑DOMAIN.tld](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: ```bash 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): ```bash export VW_URL="" # z.B. .../vaultwarden--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): ```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): ```ini [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: ```bash 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](https://pass.DEINE‑DOMAIN.tld) * Admin: [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: ```bash 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“.