From cb1bb90ca93e023d4e58183ed8825180a88eb010 Mon Sep 17 00:00:00 2001 From: scriptos Date: Sat, 23 Aug 2025 01:26:06 +0200 Subject: [PATCH] Dokumentation gemacht. --- README.md | 121 ++++++++++++++++++++++++++++++++++++++++++++++- pbs-backup.v2.sh | 10 ++-- 2 files changed, 125 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0a55dd1..9cb9889 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,124 @@ -### Doku folgt. +# PBS Backup Client Script +Dieses Bash-Script erstellt hostbasierte Datei-Backups (pxar) zu einem Proxmox Backup Server (PBS) und benachrichtigt dich bei Erfolg oder Fehler per E-Mail sowie optional via Ntfy. Es ist für den automatisierten Betrieb (z. B. Cron) ausgelegt und nutzt eine ausgelagerte Konfigurationsdatei. + +## Features +- pxar-Backups definierter Verzeichnisse zu PBS +- Ausgelagerte Konfiguration (`pbs-backup.v2.conf`) – Script bleibt unverändert +- Benachrichtigungen: E-Mail (z. B. via msmtp/mailx) und Ntfy (mit optionalem Bearer-Token) +- Konsolen- und Datei-Logging mit Timestamps +- Locking via `flock`, saubere Exit-Codes, robustes Fehlerhandling, `--dry-run` +- Healthcheck-OK-Datei für externes Monitoring (z. B. PRTG) +- TLS-Fingerprint nur bei selbstsigniertem PBS-Zertifikat notwendig (optional) + +## Konfiguration +Alle Einstellungen liegen **ausschließlich** in der Konfigurationsdatei. Standard: `pbs-backup.v2.conf` im selben Verzeichnis wie das Script; alternativ den Pfad per Umgebungsvariable setzen: +`CONFIG_FILE=/pfad/zur/pbs-backup.v2.conf`. + +**PBS-Variablen:** +- `PBS_REPOSITORY` (Pflicht): Repository-String im Format + ohne Port: + `root@pam!@:` + mit Port (z. B. öffentlich via HTTPS): + `root@pam!@::` + Beispiel: + `root@pam!vps-backup@pbs.domain.com:443:backup2` + Hinweis: Wenn der PBS aus dem Internet über einen anderen Port als den `8007` erreichbar ist, **muss** der HTTPS-Port angegeben werden. +- `PBS_FINGERPRINT` (optional): Nur erforderlich bei selbstsigniertem Zertifikat; sonst **leer lassen**. +- `PBS_API` (Pflicht für Auth): API-Key für die Authentifizierung. Das Script setzt ihn intern nur im Subshell als `PBS_PASSWORD`, damit er nicht ins globale Environment oder in Logs gelangt. + +**Weitere Optionen (Auszug):** +- `INCLUDE_DIRS`: Array der zu sichernden Verzeichnisse. +- `LOGFILE`, `LOCKFILE`: Pfade für Log- und Lock-Datei. +- Mail: `MAIL_ENABLED`, `MAIL_CMD`, `MAIL_RECIPIENTS`, `MAIL_NOTIFY_ON_SUCCESS`, `MAIL_SUBJECT_SUCCESS`, `MAIL_SUBJECT_FAILURE`. +- Ntfy: `NTFY_ENABLED`, `NTFY_TOPIC_URL`, `NTFY_AUTH_TOKEN`, `NTFY_NOTIFY_ON_SUCCESS`, `NTFY_TITLE_SUCCESS`, `NTFY_TITLE_FAILURE`, `NTFY_PRIORITY_SUCCESS`, `NTFY_PRIORITY_FAILURE`, `NTFY_TAIL_LINES`. +- Monitoring: `HEALTHCHECK_OK_FILE` (wird bei Erfolg geschrieben, bei Fehler entfernt). + +> Abhängigkeiten: `proxmox-backup-client`, für Ntfy `curl`, für E-Mail z. B. `mail` (msmtp/mailx). +> Eine Anleitung zur Installation von `msmtp` gibt es hier: +> https://www.cleveradmin.de/blog/2024/12/linux-einfach-emails-versenden-mit-msmtp + +## Ausführung +Das Script liest automatisch `pbs-backup.v2.conf` aus dem Script-Verzeichnis. Einen anderen Pfad setzt du mit `CONFIG_FILE`. + +**Parameter:** +- `--dry-run` – zeigt an, was ausgeführt würde, ohne Backup zu übertragen +- `--no-mail` – E-Mail-Benachrichtigung nur für diesen Lauf deaktivieren +- `--no-ntfy` – Ntfy-Benachrichtigung nur für diesen Lauf deaktivieren +- `-q` / `--quiet` – reduzierte Ausgabe (nur WARN/ERROR) +- `-h` / `--help` – Hilfe anzeigen + +**Beispiele:** +- Standardlauf mit Konfiguration im Script-Verzeichnis: + `./pbs-backup.v2.sh` +- Anderer Config-Pfad: + `CONFIG_FILE=/etc/pbs-backup.v2.conf` +- Testlauf ohne Upload: + `./pbs-backup.v2.sh --dry-run` +- Ruhige Ausgabe und ohne Ntfy: + `./pbs-backup.v2.sh -q --no-ntfy` + +--- + +## Abhängigkeiten & Installation (x86_64, Ubuntu 22.04/24.04) + +### Repository hinzufügen und installieren +PBS Backup Client Repository auf der zu sichernden Maschine aufnehmen: +~~~bash +sudo nano /etc/apt/sources.list.d/pbs-client.list +~~~ + +Folgendes einfügen (Debian Bookworm Repo): +~~~text +deb http://download.proxmox.com/debian/pbs-client bookworm main +~~~ + +Schlüssel hinzufügen (gilt für Debian 12-basierte Systeme): +~~~bash +sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg +~~~ + +Danach Update und Installation: +~~~bash +sudo apt update +sudo apt install proxmox-backup-client +~~~ + +### Fix für Ubuntu 22.04/24.04 (libzstd1) +Auf Ubuntu 22.04 (und ggf. 24.04) kann `libzstd1 (>= 1.5.2)` benötigt werden, während ggf. nur `1.4.8+dfsg-3build1` vorhanden ist. Installiere daher eine passende Version: + +~~~bash +wget https://dl.techniverse.net/downloads/linux/deb/x86_64/libzstd1_1.5.6_dfsg-1_amd64.deb +sudo dpkg -i libzstd1_1.5.6_dfsg-1_amd64.deb +~~~ + +> Hinweis: Prüfe nach der Installation mit `apt -f install`, ob alle Abhängigkeiten sauber erfüllt sind. + +--- + +## Installation auf ARM (aarch64) + +Für ARM-Server (arm64) das Paket manuell installieren: +~~~bash +wget https://dl.techniverse.net/downloads/linux/deb/arm64/proxmox-backup-client_3.3.0-2_arm64.deb +sudo apt install ./proxmox-backup-client_3.3.0-2_arm64.deb +~~~ + +--- + +## Rechte & API-Key im PBS + +Wie man Berechtigungen setzt und einen API-Key im PBS erzeugt, ist in der offiziellen PBS-Dokumentation beschrieben: +https://pbs.proxmox.com/docs/user-management.html + +--- + +## 💬 Support & Community + +Du hast Fragen, brauchst Unterstützung bei der Einrichtung oder möchtest dich einfach mit anderen austauschen, die ähnliche Projekte betreiben? Dann schau gerne in unserer Techniverse Community vorbei: + +👉 **Matrix-Raum:** [#community:techniverse.net](https://matrix.to/#/#community:techniverse.net) +Wir freuen uns auf deinen Besuch und helfen dir gerne weiter!

diff --git a/pbs-backup.v2.sh b/pbs-backup.v2.sh index e882199..d720197 100644 --- a/pbs-backup.v2.sh +++ b/pbs-backup.v2.sh @@ -7,11 +7,11 @@ # Git-Reposit.: https://git.techniverse.net/scriptos/pbs-backup-client-script.git # Version: 2.0 # Datum: 22.08.2025 -# Modifikation: - Ntfy-Support mit Auth -# - Logging zu Datei & Terminal (mit Timestamps) -# - Locking, Exit-Codes, externe Config, Dry-Run, robuste Fehlerbehandlung -# - Konfiguration ausgelagertin pbs-backup.v2.conf -# - Backup-OK-Datei für externes Monitoring +# Modifikation: - Ntfy-Support mit Auth implementiert +# - Logging und Ausgabe erweitert +# - Locking, Exit-Codes, externe Config, Dry-Run, robuste Fehlerbehandlung hinzugefügt +# - Konfiguration ausgelagertin eigene Konfigurationsdatei +# - Backup-OK-Datei für externes Monitoring implementiert set -Eeuo pipefail umask 077 -- 2.47.2