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

5.1 KiB
Raw Blame History

🛠️ Kapitel 6 Vaultwarden (ohne Docker, systemd) Tutorial Ein Weg, ohne Alternativen. Niveau: wie Readme dieses Kapitels.

—————————— Ziel Vaultwarden als native Binary im Debian12LXC per systemd betreiben und hinter dem Nginx Proxy Manager veröffentlichen (HTTPS + WebSockets). Öffentliche Registrierung aus, AdminToken gesetzt, optional SMTP, BasisBackup.

Voraussetzungen

  • LXC: Debian 12 (Bookworm), root
  • NPM in separatem LXC vorhanden (Domain + Lets Encrypt)
  • LXCIP von Vaultwarden: <VW_IP> (z.B. 10.0.0.16)

Kerneinstellungen (fix)

  • ROCKET_ADDRESS = <VW_IP> (weil NPM in separatem LXC läuft)
  • ROCKET_PORT = 8000
  • WEBSOCKET_ADDRESS = <VW_IP>, WEBSOCKET_PORT = 3012
  • DOMAIN = https://pass.DEINEDOMAIN.tld
  • ADMIN_TOKEN = sicher, ≥ 64 Zeichen
  • SIGNUPS_ALLOWED = false

——————————

  1. System vorbereiten
apt update && apt upgrade -y
apt install -y ca-certificates curl unzip openssl
# 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/data
chown -R vaultwarden:vaultwarden /var/lib/vaultwarden

Prüfen:

id vaultwarden
ls -ld /opt/vaultwarden /var/lib/vaultwarden /var/lib/vaultwarden/data
  1. Binary laden und installieren

Wir laden immer die neueste „x86_64unknownlinuxgnu“Release von GitHub.

VW_URL=$(curl -s https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest \
  | grep browser_download_url \
  | grep x86_64-unknown-linux-gnu.tar.gz \
  | cut -d '"' -f 4)

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

Prüfen:

/opt/vaultwarden/vaultwarden --version || true
  1. Konfiguration anlegen
cat >/etc/vaultwarden.env <<'EOF'
DOMAIN=https://pass.DEINE-DOMAIN.tld
ADMIN_TOKEN=$(openssl rand -base64 48)
SIGNUPS_ALLOWED=false
WEBSOCKET_ENABLED=true
ROCKET_ADDRESS=<VW_IP>
ROCKET_PORT=8000
WEBSOCKET_ADDRESS=<VW_IP>
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
EOF

chown root:vaultwarden /etc/vaultwarden.env
chmod 0640 /etc/vaultwarden.env

Prüfen:

grep -E '^(DOMAIN|ROCKET_ADDRESS|WEBSOCKET_ADDRESS)=' /etc/vaultwarden.env
  1. systemdService erstellen
cat >/etc/systemd/system/vaultwarden.service <<'EOF'
[Unit]
Description=Vaultwarden (Bitwarden-compatible)  native
After=network.target

[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=/etc/vaultwarden.env
ExecStart=/opt/vaultwarden/vaultwarden
WorkingDirectory=/var/lib/vaultwarden
# Hardening (schlank & sicher)
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now vaultwarden
systemctl status vaultwarden --no-pager

Prüfen (sollte „active (running)“ sein):

ss -tulpn | grep -E ':8000|:3012'
  1. NPM: ProxyHost + WebSockets + SSL
  • Hosts → Proxy Hosts → Add Proxy Host

    • Domain Names: pass.DEINE-DOMAIN.tld
    • Scheme: http
    • Forward Hostname / IP: <VW_IP>
    • Forward Port: 8000
    • Block Common Exploits: an
    • Websockets Support: an
  • Custom Locations → Add Location

    • Location: /notifications/hub
    • Forward Hostname / IP: <VW_IP>
    • Forward Port: 3012
    • Websockets Support: an
  • SSL

    • Request a new SSL Certificate (Lets Encrypt)
    • Force SSL, HTTP/2, HSTS: an

Prüfen:

  • https://pass.DEINE-DOMAIN.tld öffnet die LoginSeite.
  • WebSocket: Eintrag von einem zweiten Client ändern → LiveSync sichtbar.
  1. Erstkonfiguration (WebUI)
  • AdminBackend: https://pass.DEINE-DOMAIN.tld/adminADMIN_TOKEN eingeben.
  • Signups: „Signups allowed“ aus.
  • Optional SMTP eintragen (Testmail senden).
  • Erstes Benutzerkonto anlegen und 2FA (TOTP/FIDO2) aktivieren.
  1. Backup (Basis)
# Kurzvariante (läuft online); für 100% Konsistenz ggf. Dienst kurz stoppen
# systemctl stop vaultwarden

tar -czf /root/vaultwarden-backup-$(date +%F).tar.gz -C /var/lib vaultwarden

# systemctl start vaultwarden
ls -lh /root/vaultwarden-backup-*.tar.gz

CronHinweis: Regelmäßig sichern; Restore testweise separat prüfen.

—————————— Stolperfallen

  • ROCKET_/WEBSOCKET_ADDRESS falsch → NPM erreicht den Dienst nicht.
  • WebSockets nicht weitergeleitet → LiveSync/Push funktioniert nicht.
  • DOMAIN nicht https → fehlerhafte Links/Icons.
  • ADMIN_TOKEN zu kurz/unsicher → Risiko fürs AdminBackend.
  • Signups offen → ungewollte Accounts.

Ergebnis

  • Vaultwarden läuft nativ im LXC, ist über https://pass.DEINE-DOMAIN.tld erreichbar, WebSockets funktionieren, Registrierungen sind aus, AdminBackend ist geschützt; Backups vorhanden.