diff --git a/Kapitel 6/README.md b/Kapitel 6/README.md index 947b5f4..517a763 100644 --- a/Kapitel 6/README.md +++ b/Kapitel 6/README.md @@ -1,161 +1,67 @@ -📘 Kapitel 6: Vaultwarden (ohne Docker, systemd) +📘 Kapitel 6: Vaultwarden (Docker unter Debian‑12‑LXC) 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. +🎯 Ziel +Vaultwarden (Bitwarden‑kompatibler Server) in einem **Debian‑12‑LXC** per **Docker + Docker Compose** betreiben, hinter **Nginx Proxy Manager** (NPM) mit **HTTPS** und **WebSockets** bereitstellen, **Registrierungen deaktivieren**, **Admin‑Token** setzen und eine **Backup‑Grundlage** schaffen. ✅ 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) + +* LXC: Debian 12 (Bookworm) – erstellt gemĂ€ĂŸ Grundkapitel *Erster LXC – Grundsetup & SSH* (hier nur Verweis) +* **LXC‑Specs:** 1 vCPU · 512 MB–1 GB RAM (256 MB funktionieren oft, 512 MB empfohlen) · 4–8 GB Disk · statische IPv4 (z. B. `10.0.0.16`); IPv6 optional +* Nginx Proxy Manager (separater LXC), gĂŒltige Domain/Subdomain (z. B. `pass.DEINE‑DOMAIN.tld`) +* DNS‑Eintrag der Subdomain auf NPM đŸ§© 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** + +* **Container‑Image:** `vaultwarden/server:latest` +* **Ports:** `8000:80` (Web/API), `3012:3012` (WebSocket/Live‑Sync) +* **Persistenz:** Volume `./data:/data` → Daten auf dem Host in `/opt/vaultwarden/data` +* **Konfig per `.env`:** `DOMAIN`, `ADMIN_TOKEN`, `SIGNUPS_ALLOWED=false`, optional `SMTP_*` +* **Reverse‑Proxy (NPM):** Proxy Host fĂŒr `pass.DEINE‑DOMAIN.tld`, Custom Location `/notifications/hub → 3012`, SSL (Let’s Encrypt) đŸ—ș 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) +1. System vorbereiten (Update, Basis‑Tools) +2. **Docker & Compose** installieren +3. Projektverzeichnis **/opt/vaultwarden** anlegen, `.env` erstellen +4. `docker-compose.yml` schreiben +5. Container starten, Logs prĂŒfen +6. NPM: Proxy Host + WebSockets + SSL einrichten +7. Admin‑Backend aufrufen: Registrierungen aus, optional SMTP, 2FA aktivieren +8. Backup‑Grundlage: Datenordner sichern 🔧 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** +* **DOMAIN:** `https://pass.DEINE‑DOMAIN.tld` (https zwingend, sonst fehlerhafte Assets) +* **ADMIN\_TOKEN:** lange, zufĂ€llige Zeichenfolge (sicher aufbewahren) +* **SIGNUPS\_ALLOWED=false:** verhindert offene Registrierung +* **WebSockets:** NPM‑Custom‑Location **`/notifications/hub` → Port `3012`** +* **Datenpfad:** Host: `/opt/vaultwarden/data` (im Container `/data`) -📩 Installation (LXC, ohne Docker) -System & Tools: +🌐 Erstkonfiguration (im Browser) -```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 +* Aufruf: `https://pass.DEINE‑DOMAIN.tld` +* Admin‑Backend: `https://pass.DEINE‑DOMAIN.tld/admin` → **ADMIN\_TOKEN** eingeben +* **Signups** prĂŒfen (aus), optional **SMTP** fĂŒr Mails testen, **2FA** (TOTP/FIDO2) aktivieren -# Verzeichnisse -mkdir -p /opt/vaultwarden -mkdir -p /var/lib/vaultwarden -chown -R vaultwarden:vaultwarden /var/lib/vaultwarden -``` +đŸ’Ÿ Backup‑Hinweis (Basis) -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. +* Daten liegen im Host‑Ordner `/opt/vaultwarden/data` → regelmĂ€ĂŸig als Tar/rsync sichern +* Vor grĂ¶ĂŸeren Updates kurz stoppen (`docker compose stop`), danach wieder starten ⚠ 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 +* **WebSockets** nicht weitergeleitet → kein Live‑Sync/Push +* **DOMAIN** ohne `https` → fehlerhafte Links/Icons +* **ADMIN\_TOKEN** vergessen/zu schwach → Admin‑Backend gefĂ€hrdet +* **Let’s‑Encrypt Rate‑Limit** bei vielen Zertifikatsanforderungen beachten 🔗 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“. +* Kap. 3 Nginx Proxy Manager (Domain/HTTPS) +* Kap. 4 DynDNS (Erreichbarkeit von außen) +* Kap. 14 Backup (Basis) +* Kap. 7 Nextcloud (nĂ€chster Schritt) + +📜 Lizenz +Creative Commons Attribution (CC BY) – Nutzung/Weitergabe/Anpassung mit Namensnennung „Bratonien Tech“.