Files
Homelab--Bratonein-Kontroll…/Kapitel 6/README.md

5.5 KiB
Raw Blame History

📘 Kapitel 6: Vaultwarden (ohne Docker, systemd) Logische Position: 6 (nach 5: WireGuard · vor 7: Nextcloud)

Ziel: Vaultwarden als native Binary im Debian12LXC per systemd betreiben ohne Docker. Veröffentlichung hinter Nginx Proxy Manager (HTTPS + WebSockets), öffentliche Registrierung deaktivieren, AdminToken setzen, optional SMTP, einfache BackupRoutine.

Voraussetzungen LXC: Debian 12 (Bookworm) · root Empfohlen: 1 vCPU, 128256 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: systemdService 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_*) ReverseProxy: 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. VaultwardenBinary laden, nach /opt/vaultwarden legen, ausführbar machen
  4. /etc/vaultwarden.env erstellen (DOMAIN, ADMIN_TOKEN, …)
  5. systemdService schreiben, aktivieren, Start prüfen
  6. NPM: Proxy Host + Custom Location (WebSockets) + SSL
  7. AdminBackend testen, Signups aus, optional SMTP
  8. Backup (Tar von /var/lib/vaultwarden)

🔧 Kerneinstellungen (wichtig!)

  • DOMAIN: https://pass.DEINEDOMAIN.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 ReleaseAsset 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

systemdService (/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
# RessourcenSchutz (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.DEINEDOMAIN.tld
  • Scheme: http · Forward Host/IP: 127.0.0.1 (oder LXCIP) · Forward Port: 8000
  • Block Common Exploits: an · Websockets Support: an Custom Location:
  • Location: /notifications/hub → Forward Host/IP: 127.0.0.1 (oder LXCIP) · Port: 3012 · Websockets an SSL:
  • Lets Encrypt Zertifikat anfordern; Force SSL, HTTP/2, HSTS: an

🛡️ Erstkonfiguration (WebUI)

💾 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 → LiveSync/Push funktioniert nicht
  • DOMAIN nicht auf https → fehlerhafte Links/Icons
  • ADMIN_TOKEN zu kurz/unsicher → Risiko fürs AdminBackend
  • 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“.