Kapitel 6/Tutorial.md hinzugefügt

This commit is contained in:
2025-08-20 09:10:27 +00:00
parent 0ffa3c1fa4
commit 5f0cf021ad

192
Kapitel 6/Tutorial.md Normal file
View File

@@ -0,0 +1,192 @@
🛠️ 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](https://pass.DEINEDOMAIN.tld)**
* **ADMIN\_TOKEN =** sicher, ≥ 64 Zeichen
* **SIGNUPS\_ALLOWED = false**
——————————
1. System vorbereiten
```bash
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:
```bash
id vaultwarden
ls -ld /opt/vaultwarden /var/lib/vaultwarden /var/lib/vaultwarden/data
```
2. Binary laden und installieren
> Wir laden immer die **neueste** „x86\_64unknownlinuxgnu“Release von GitHub.
```bash
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:
```bash
/opt/vaultwarden/vaultwarden --version || true
```
3. Konfiguration anlegen
```bash
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:
```bash
grep -E '^(DOMAIN|ROCKET_ADDRESS|WEBSOCKET_ADDRESS)=' /etc/vaultwarden.env
```
4. systemdService erstellen
```bash
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):
```bash
ss -tulpn | grep -E ':8000|:3012'
```
5. 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.
6. Erstkonfiguration (WebUI)
* AdminBackend: `https://pass.DEINE-DOMAIN.tld/admin`**ADMIN\_TOKEN** eingeben.
* **Signups**: „Signups allowed“ **aus**.
* Optional **SMTP** eintragen (Testmail senden).
* Erstes Benutzerkonto anlegen und **2FA (TOTP/FIDO2)** aktivieren.
7. Backup (Basis)
```bash
# 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.