diff --git a/Kapitel 6/Tutorial.md b/Kapitel 6/Tutorial.md index 5164de2..649f491 100644 --- a/Kapitel 6/Tutorial.md +++ b/Kapitel 6/Tutorial.md @@ -61,42 +61,64 @@ Du siehst den Benutzer `vaultwarden` und die Ordner existieren. --- -## 2) Vaultwarden herunterladen (immer aktuelle stabile Version) +## 2) Vaultwarden herunterladen (robust & sicher) -Wir installieren **immer die neuste stabile Release** direkt von der offiziellen Quelle. So sind **Sicherheitsfixes** sofort enthalten. +Wir laden **immer die neueste stabile Release** passend zu deiner **CPU‑Architektur** – automatisch und mit Fehlerschutz. ```bash -# 1) Download-URL der neuesten stabilen Release automatisch ermitteln -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) +set -Eeuo pipefail -# 2) Archiv herunterladen und entpacken -curl -L "$VW_URL" -o /tmp/vaultwarden.tar.gz -mkdir -p /tmp/vw && tar -xzf /tmp/vaultwarden.tar.gz -C /tmp/vw +# Architektur → passender Dateiname der Release-Asset +case "$(dpkg --print-architecture)" in + amd64) ASSET="vaultwarden-*-x86_64-unknown-linux-gnu.tar.gz" ;; + arm64) ASSET="vaultwarden-*-aarch64-unknown-linux-gnu.tar.gz" ;; + armhf|armel) ASSET="vaultwarden-*-armv7-unknown-linux-gnueabihf.tar.gz" ;; + *) echo "❌ Nicht unterstützte Architektur: $(dpkg --print-architecture)" >&2; exit 1 ;; + esac -# 3) Programmdatei nach /opt verschieben (wird unser fester Pfad) +# jq für zuverlässiges JSON-Parsing (klein, darf wieder entfernt werden) +apt install -y jq >/dev/null + +# 1) Download-URL der neuesten stabilen Release exakt ermitteln +VW_URL=$(curl -fsSL https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest \ + | jq -r --arg pat "$ASSET" '.assets[] | select(.name | test($pat)) | .browser_download_url' \ + | head -n1) + +if [ -z "${VW_URL}" ]; then + echo "❌ Konnte die Download-URL nicht ermitteln. Prüfe Internet/DNS/GitHub-API-Limit." >&2 + echo "ℹ️ Alternativ: Öffne die Release-Seite im Browser und kopiere den Link der Datei $ASSET." >&2 + exit 1 +fi + +echo "→ Lade: $VW_URL" + +# 2) Archiv laden und entpacken +curl -fL "$VW_URL" -o /tmp/vaultwarden.tar.gz +mkdir -p /tmp/vw + tar -xzf /tmp/vaultwarden.tar.gz -C /tmp/vw + +# 3) Programmdatei nach /opt verschieben install -m 0755 /tmp/vw/vaultwarden /opt/vaultwarden/vaultwarden + +# Optional: Checksumme anzeigen (mit der Release-Seite vergleichen) +sha256sum /tmp/vaultwarden.tar.gz | awk '{print "SHA256:", $1}' ``` -**Woran erkenne ich Erfolg?** +**Erfolgskontrolle** ```bash -/opt/vaultwarden/vaultwarden --version || true +/opt/vaultwarden/vaultwarden --version ``` Du siehst die **Version** der frisch installierten Release. -**Warum so? (Laienfreundlich)** +**Warum diese Variante?** -* „Neuste stabile Release“ = **aktuelle Sicherheitsfixes** ohne Wartezeit. -* Wir holen die Datei **direkt** von der offiziellen Projektseite. -* Der Pfad `/opt/vaultwarden/` bleibt gleich – **Updates** sind später nur „Datei tauschen + Dienst neu starten“. +* Wählt die **richtige Architektur** automatisch aus (x86\_64/arm64/armv7). +* Nutzt die **offizielle GitHub‑API** mit **sauberem Parsing** (jq), keine fragilen `grep`‑Spielereien. +* Bricht bei Fehlern **sofort** ab (`set -e`), damit kein halbfertiges Setup entsteht. -> 🔐 **Sicherheits‑Hinweis:** Wenn die Release‑Seite einen **SHA256‑Wert** angibt, kannst du ihn optional prüfen: `sha256sum /tmp/vaultwarden.tar.gz` ausführen und den Wert mit dem auf der Release‑Seite **visuell vergleichen**. - -> 🆙 **Aktualisieren später:** Wiederhole **genau diesen Schritt** (die drei Befehle oben) und starte den Dienst neu: `systemctl restart vaultwarden`. Wenn sich seitdem Oberflächen/Optionen geändert haben, ergänzen wir im Video einen Hinweis und **aktualisieren diesen Blog‑Post**. +> 🆙 **Späteres Update:** Diesen Block erneut ausführen (er lädt die aktuelle Release) und danach `systemctl restart vaultwarden`. Wenn sich die Oberfläche/Optionen geändert haben, ergänzen wir einen Hinweis im Video und aktualisieren den Post. ---