Kapitel 6/README.md aktualisiert

This commit is contained in:
2025-08-20 10:51:11 +00:00
parent 397bd142c4
commit 0e0bcaeb26

View File

@@ -1,161 +1,67 @@
📘 Kapitel 6: Vaultwarden (ohne Docker, systemd) 📘 Kapitel 6: Vaultwarden (Docker unter Debian12LXC)
Logische Position: 6 (nach 5: WireGuard · vor 7: Nextcloud) 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. 🎯 Ziel
Vaultwarden (Bitwardenkompatibler Server) in einem **Debian12LXC** per **Docker + Docker Compose** betreiben, hinter **Nginx Proxy Manager** (NPM) mit **HTTPS** und **WebSockets** bereitstellen, **Registrierungen deaktivieren**, **AdminToken** setzen und eine **BackupGrundlage** schaffen.
✅ Voraussetzungen ✅ Voraussetzungen
LXC: Debian 12 (Bookworm) · root
Empfohlen: 1 vCPU, **128256 MB RAM**, ≥ 500 MB Speicher (plus Daten) * LXC: Debian 12 (Bookworm) erstellt gemäß Grundkapitel *Erster LXC Grundsetup & SSH* (hier nur Verweis)
Netzwerk: IPv4/IPv6 im LAN * **LXCSpecs:** 1 vCPU · 512MB1GB RAM (256MB funktionieren oft, 512MB empfohlen) · 48GB Disk · statische IPv4 (z.B. `10.0.0.16`); IPv6 optional
Extern optional: Nginx Proxy Manager + DynDNS/Subdomain (eigene Kapitel) * Nginx Proxy Manager (separater LXC), gültige Domain/Subdomain (z.B. `pass.DEINEDOMAIN.tld`)
* DNSEintrag der Subdomain auf NPM
🧩 Was wir aufbauen 🧩 Was wir aufbauen
Binary: /opt/vaultwarden/vaultwarden
Dienst: systemdService unter /etc/systemd/system/vaultwarden.service * **ContainerImage:** `vaultwarden/server:latest`
Ports (intern, nur Loopback): 127.0.0.1:8000 (HTTP/API), 127.0.0.1:3012 (WebSocket) * **Ports:** `8000:80` (Web/API), `3012:3012` (WebSocket/LiveSync)
Persistenz: **/var/lib/vaultwarden** (enthält /data) * **Persistenz:** Volume `./data:/data` → Daten auf dem Host in `/opt/vaultwarden/data`
Konfig per Datei: **/etc/vaultwarden.env** (DOMAIN, ADMIN\_TOKEN, SIGNUPS\_ALLOWED=false, optional SMTP\_\*) * **Konfig per `.env`:** `DOMAIN`, `ADMIN_TOKEN`, `SIGNUPS_ALLOWED=false`, optional `SMTP_*`
ReverseProxy: NPM leitet / → 8000 und **/notifications/hub → 3012** * **ReverseProxy (NPM):** Proxy Host für `pass.DEINEDOMAIN.tld`, Custom Location `/notifications/hub → 3012`, SSL (Lets Encrypt)
🗺️ Kapitelablauf (Kurzüberblick) 🗺️ Kapitelablauf (Kurzüberblick)
1. System vorbereiten (Update, Tools, Systemnutzer anlegen) 1. System vorbereiten (Update, BasisTools)
2. Verzeichnisse & Rechte ( /opt/vaultwarden , /var/lib/vaultwarden ) 2. **Docker & Compose** installieren
3. VaultwardenBinary laden, nach /opt/vaultwarden legen, ausführbar machen 3. Projektverzeichnis **/opt/vaultwarden** anlegen, `.env` erstellen
4. **/etc/vaultwarden.env** erstellen (DOMAIN, ADMIN\_TOKEN, …) 4. `docker-compose.yml` schreiben
5. systemdService schreiben, aktivieren, Start prüfen 5. Container starten, Logs prüfen
6. NPM: Proxy Host + Custom Location (WebSockets) + SSL 6. NPM: Proxy Host + WebSockets + SSL einrichten
7. AdminBackend testen, Signups aus, optional SMTP 7. AdminBackend aufrufen: Registrierungen aus, optional SMTP, 2FA aktivieren
8. Backup (Tar von /var/lib/vaultwarden) 8. BackupGrundlage: Datenordner sichern
🔧 Kerneinstellungen (wichtig!) 🔧 Kerneinstellungen (wichtig!)
* **DOMAIN**: [https://pass.DEINEDOMAIN.tld](https://pass.DEINEDOMAIN.tld) (für korrekte Links) * **DOMAIN:** `https://pass.DEINEDOMAIN.tld` (https zwingend, sonst fehlerhafte Assets)
* **ADMIN\_TOKEN**: lange, zufällige Zeichenfolge (mind. 64 Zeichen) * **ADMIN\_TOKEN:** lange, zufällige Zeichenfolge (sicher aufbewahren)
* **SIGNUPS\_ALLOWED=false**: öffentliche Registrierung aus * **SIGNUPS\_ALLOWED=false:** verhindert offene Registrierung
* **WEBSOCKET\_ENABLED=true** + Weiterleitung **/notifications/hub → 3012** * **WebSockets:** NPMCustomLocation **`/notifications/hub`Port `3012`**
* **ROCKET\_ADDRESS=127.0.0.1 / ROCKET\_PORT=8000** (nur lokal lauschen) * **Datenpfad:** Host: `/opt/vaultwarden/data` (im Container `/data`)
* **WEBSOCKET\_ADDRESS=127.0.0.1 / WEBSOCKET\_PORT=3012**
📦 Installation (LXC, ohne Docker) 🌐 Erstkonfiguration (im Browser)
System & Tools:
```bash * Aufruf: `https://pass.DEINEDOMAIN.tld`
apt update && apt upgrade -y * AdminBackend: `https://pass.DEINEDOMAIN.tld/admin`**ADMIN\_TOKEN** eingeben
apt install -y ca-certificates curl unzip * **Signups** prüfen (aus), optional **SMTP** für Mails testen, **2FA** (TOTP/FIDO2) aktivieren
# Systemnutzer ohne Login
useradd --system --home /var/lib/vaultwarden --shell /usr/sbin/nologin vaultwarden || true
# Verzeichnisse 💾 BackupHinweis (Basis)
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): * Daten liegen im HostOrdner `/opt/vaultwarden/data` → regelmäßig als Tar/rsync sichern
* Vor größeren Updates kurz stoppen (`docker compose stop`), danach wieder starten
```bash
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):
```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):
```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
# RessourcenSchutz (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.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)
* Aufruf: [https://pass.DEINEDOMAIN.tld](https://pass.DEINEDOMAIN.tld)
* Admin: [https://pass.DEINEDOMAIN.tld/admin](https://pass.DEINEDOMAIN.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 ⚠️ Stolperfallen
* WebSockets nicht weitergeleitet → LiveSync/Push funktioniert nicht * **WebSockets** nicht weitergeleitet → kein LiveSync/Push
* DOMAIN nicht auf https → fehlerhafte Links/Icons * **DOMAIN** ohne `https` → fehlerhafte Links/Icons
* ADMIN\_TOKEN zu kurz/unsicher → Risiko fürs AdminBackend * **ADMIN\_TOKEN** vergessen/zu schwach → AdminBackend gefährdet
* Signups offen gelassen → ungewollte Accounts * **LetsEncrypt RateLimit** bei vielen Zertifikatsanforderungen beachten
🔗 Siehe auch 🔗 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 * Kap.3 Nginx Proxy Manager (Domain/HTTPS)
Creative Commons Attribution (CC BY) Nutzung/Weitergabe/Anpassung erlaubt, mit Namensnennung „Bratonien Tech“. * 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“.