Files
Homelab--Bratonein-Kontroll…/Kapitel 05/Videoscript.md

249 lines
11 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.

# 🎬 Bratonien Tech Kapitel 6: Vaultwarden (SelfHosted mit Docker)
## 🎵 Intro
**Szene:** Talking Head (du oder Barney), BratonienTechLogo.
**Voiceover / Gesprochen:**
„Hallo und herzlich willkommen bei Bratonien Tech. Ich bin \[dein Name oder Barney] von Bratonien Cosplay. In dieser Reihe bauen wir aus einem alten OfficePC ein komplettes Homelab oder wie ich es nenne: Bratoniens Kontrollzentrum. Heute sichern wir unsere Zugänge und Geheimnisse: Wir richten Vaultwarden ein Bitwardenkompatibel, schlank, selbst gehostet und voll unter unserer Kontrolle.“
---
## Warum Vaultwarden?
**Szene:** Vergleichsfolie: PasswortChaos vs. VaultwardenLogo + BrowserAddon.
**Voiceover:**
„Passwörter im Kopf, in Textdateien oder in der Cloud anderer Anbieter? Muss nicht sein. Vaultwarden läuft im eigenen Homelab, spricht mit den BitwardenApps und BrowserErweiterungen und synchronisiert in Echtzeit. So behalten wir die Hoheit über unsere Daten und alle Geräte bleiben bequem angebunden.“
---
## Voraussetzungen
**Szene:** Textfolie (Specs + Verweise auf Grundkapitel).
**Voiceover:**
„Wir arbeiten in einem Debian12LXC: eine vCPU, 512MB bis 1GB RAM und 48GB Speicher reichen. Nginx Proxy Manager läuft in einem separaten LXC, die Subdomain `pass.DEINEDOMAIN.tld` zeigt bereits auf NPM. Grundlagen wie LXCAnlage, SSH und die Bedienung von Nano haben wir in den BasisKapiteln gezeigt hier bauen wir darauf auf.“
**Einblendung:**
* LXC: Debian 12 · 1vCPU · 512MB1GB RAM · 48GB Disk · statische IPv4 (z.B. 10.0.0.16)
* NPM & DynDNS vorhanden; DNS A/AAAA → NPM
---
## Plan
**Szene:** Ablaufgrafik.
**Voiceover:**
„Der Fahrplan: Docker installieren, Projekt anlegen, Compose schreiben, starten, NPM per GUI einrichten, AdminToken auf Argon2 absichern, ersten Benutzer anlegen, Backup und am Ende zeigen wir kurz die wichtigsten Alltagsfunktionen.“
---
## Container vorbereiten
**Szene:** Terminalaufnahme (Großaufnahme, lesbare Schrift).
**Voiceover:**
„Wir beginnen mit Updates und richten die offizielle DockerQuelle ein. Das ist sicher und gut wartbar keine intransparenten Einzeiler.“
**Befehle im Bild:**
```bash
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
# Check
docker --version && docker compose version
```
**OnScreenHinweis:** „Wenn Docker im LXC nicht startet: Proxmox → CT → Options → Features: nesting + keyctl aktivieren; CT neu starten.“
---
## Projektdateien anlegen
**Szene:** Terminal → `/opt/vaultwarden`, NanoEditor.
**Voiceover:**
„Wir legen das Projektverzeichnis an. Die Konfiguration kommt in eine `.env` getrennt von der ComposeDatei. Wichtig: Die Domain **mit https**, damit Assets und Links stimmen.“
**Befehle im Bild:**
```bash
mkdir -p /opt/vaultwarden && cd /opt/vaultwarden
mkdir -p data
nano .env
```
**Einblendung `.env`:**
```
DOMAIN=https://pass.DEINE-DOMAIN.tld
# Start mit geschlossener Registrierung öffnen wir gleich kurz für den ersten Account
SIGNUPS_ALLOWED=false
# Optional für Mails (Verifizierung/Reset)
# SMTP_HOST=smtp.example.com
# SMTP_FROM=pass@example.com
# SMTP_PORT=587
# SMTP_SECURITY=starttls
# SMTP_USERNAME=user
# SMTP_PASSWORD=deinPasswort
```
**VoiceoverErgänzung:** „Speichern mit Strg+O, Enter, Strg+X.“
---
## ComposeDatei schreiben
**Szene:** NanoEditor mit `docker-compose.yml`.
**Voiceover:**
„Compose beschreibt Image, DatenVolume und Ports. Port 3012 ist der WebSocketKanal für LiveSync zwischen Geräten.“
**Einblendung `docker-compose.yml`:**
```yaml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
env_file: .env
environment:
- DOMAIN=${DOMAIN}
volumes:
- ./data:/data
ports:
- "8000:80" # Web / API
- "3012:3012" # WebSocket (Live Sync)
```
---
## Container starten & prüfen
**Szene:** Terminal mit LiveLogs.
**Voiceover:**
„Wir starten im Hintergrund und schauen sofort in die Logs so sehen wir Fehler, bevor wir veröffentlichen.“
**Befehle im Bild:**
```bash
docker compose up -d
docker compose logs -f --tail=80 vaultwarden
```
**OnScreenCheck:** „Erwartet: Rocket has launched …‘; keine Fehler zu `/data`.“
---
## Proxy Host im NPM (GUI)
**Szene:** NPMOberfläche, klare Zooms auf die Felder.
**Voiceover:**
„In NPM legen wir einen neuen Proxy Host an. Domain: `pass.DEINEDOMAIN.tld`. Scheme: `http`. Als Ziel nehmen wir die LXCIP `<VW_IP>` mit Port **8000**. Wir aktivieren Block Common Exploits und Websockets Support.“
**Einblendung (Zoom):** Domain, Scheme, Forward Host/IP, Port 8000, Toggles aktiv.
**Voiceover:**
„Jetzt die **Custom Location**: Pfad `/notifications/hub`. Ziel wieder `<VW_IP>`, aber Port **3012**, WebSockets an. Das ist der LiveKanal.“
**Einblendung:** Custom Location → `/notifications/hub` → 3012 → WebSockets an.
**Voiceover:**
„Im Reiter **SSL** fordern wir das LetsEncryptZertifikat an und setzen **Force SSL**, **HTTP/2** und **HSTS**.“
**Check:** Browser ruft `https://pass.DEINEDOMAIN.tld` auf LoginSeite erscheint.
**OnScreenWarnung (gelb):** „Ohne Custom Location /3012 → kein LiveSync!“
---
## AdminBackend absichern (Argon2PHC) & erster Nutzer
**Szene:** SplitScreen Terminal/GUI.
**Voiceover:**
„Beim AdminBackend warnt Vaultwarden gern vor einem KlartextToken zu Recht. Wir stellen auf **Argon2PHC** um. Erst erzeugen wir den Hash, dann tragen wir ihn in der GUI ein und entfernen den KlartextEintrag aus `.env`.“
**Befehle im Bild:**
```bash
docker exec -it vaultwarden /vaultwarden hash --preset owasp
```
**Voiceover:**
„Kopiere den kompletten String ab `$argon2id$…`. In der AdminGUI unter **Settings → General** fügst du ihn im Feld Admin token / Argon2 PHC ein und speicherst. Ab jetzt meldest du dich mit **dem Passwort** an, das du beim Hashen eingegeben hast nicht mit dem Hash.“
**Befehle im Bild (Aufräumen):**
```bash
sed -i '/^ADMIN_TOKEN=/d' /opt/vaultwarden/.env
cd /opt/vaultwarden && docker compose restart vaultwarden
```
**Voiceover:**
„Für deinen ersten Benutzer öffnen wir die Registrierung kurz: **Settings → General → Allow new signups** einschalten, speichern, in einem neuen Tab `https://pass.DEINEDOMAIN.tld/#/register` aufrufen, Konto anlegen, einmal anmelden und danach die Registrierungen wieder schließen. Mit SMTP ginge es alternativ über **Users → Invitations** per Mail.“
**Voiceover (Sicherheit):**
„Im Benutzerkonto aktivierst du unter **Settings → Security** die ZweiFaktorAnmeldung (TOTP oder FIDO2/YubiKey).“
---
## Arbeiten mit Vaultwarden (StandardAnwendungen)
**Szene:** BrowserAddon + WebUI im Wechsel, klare Mauswege.
**Voiceover:**
„Für den Alltag verbindest du die BitwardenErweiterung im Browser: In den Einstellungen stellst du **Server** auf `https://pass.DEINEDOMAIN.tld`. Danach siehst du denselben Tresor wie im Web. Einen ersten Login legst du über **Neu → Anmeldung** an Name, Benutzername/EMail, mit dem Generator erzeugtes langes Passwort, ZielURL. Mit Ordnern schaffst du Struktur, etwa Streaming oder Server.“
**Voiceover:**
„Import geht in der WebOberfläche unter **Werkzeuge → Importieren**. Ich empfehle, alles zunächst in einen Ordner Eingang zu importieren und anschließend aufzuräumen: Dubletten löschen, Spezialfälle prüfen, dann in die endgültige Struktur verschieben.“
**Voiceover:**
„Aktivierst du bei einem Dienst 2FA, bekommst du einen QRCode oder einen Base32Schlüssel. Im Tresor fügst du im passenden Eintrag das Feld **AuthenticatorSchlüssel (TOTP)** hinzu. Ab dann liefert der Eintrag die sechsstelligen Codes, die du beim Login brauchst auch direkt in der BrowserErweiterung.“
**Voiceover:**
„Zum gelegentlichen sicheren Teilen gibt es **Send**: Text oder Datei, Ablaufdatum, maximale Abrufe, optionales Kennwort so landen sensible Infos nicht in EMails oder Chats.“
**Voiceover (TeamHinweis):**
„Für Zusammenarbeit richtest du **Organisationen** und **Sammlungen** ein. Einträge, die geteilt werden sollen, verschiebst du in die passende Sammlung und vergibst Rechte pro Mitglied. Einladungen funktionieren komfortabel, sobald SMTP eingerichtet ist.“
---
## Backup (kurz & wichtig)
**Szene:** Terminal + kurze Grafik „Container ≠ Daten“.
**Voiceover:**
„Wichtig ist nicht der Container, sondern der **Datenordner** auf dem Host: `/opt/vaultwarden/data`. Den sicherst du regelmäßig als Archiv auf Wunsch mit kurzem Stopp für maximale Konsistenz.“
**Befehle im Bild:**
```bash
cd /opt/vaultwarden
# optional: docker compose stop vaultwarden
tar -czf /root/vaultwarden-backup-$(date +%F).tar.gz data
# docker compose start vaultwarden
ls -lh /root/vaultwarden-backup-*.tar.gz
```
**Voiceover:**
„Wiederherstellen ist genauso einfach: neue Instanz bis Compose, Archiv an den Ort, entpacken, `docker compose up -d` fertig.“
---
## Fehlerbehebung (kurz)
**Szene:** TerminalSplit mit Logs und NPMMaske.
**Voiceover:**
„Kein LiveSync? In NPM die **Custom Location** `/notifications/hub` auf Port **3012** mit aktiviertem WebSocket prüfen. Icons fehlen oder Links wirken seltsam? In der `.env` muss `DOMAIN` **https** enthalten; danach `docker compose restart`. Wenn der Container zickt, zeigen die Logs den Weg: `docker compose logs --tail=200 vaultwarden`. Und bei Zertifikatsproblemen hilft ein Blick auf DNSEinträge und die LetsEncryptHinweise in NPM.“
---
## Fazit & Ausblick
**Szene:** VaultwardenDashboard, BrowserAddon zeigt Sync.
**Voiceover:**
„Vaultwarden läuft jetzt unter eurer eigenen Domain, mit gültigem TLS, LiveSync und gehärtetem AdminBackend. Registrierungen sind zu, der erste Benutzer ist angelegt, Backups sind eingerichtet. In den Ergänzungsvideos vertiefen wir ImportStrategien, TOTPBestPractices, TeamSharing und praktische BrowserTipps.“
## 🎵 Outro
**Szene:** BratonienTechOutro / Logo.
**Voiceover:**
„Das war Kapitel 6 Vaultwarden. Wenn dir dieses Video gefallen hat, abonniere Bratonien Tech und schau dir die anderen Kapitel an. Bis zum nächsten Mal in Bratonien!“