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

162 lines
5.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

📘 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](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:
```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
# 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):
```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
* 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“.