130 lines
6.0 KiB
Markdown
130 lines
6.0 KiB
Markdown
# 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!<apiuser>@<pbs-host>:<datastore>`
|
||
mit Port (z. B. öffentlich via HTTPS):
|
||
`root@pam!<apiuser>@<pbs-host>:<port>:<datastore>`
|
||
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!
|
||
|
||
|
||
<p align="center">
|
||
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||
</p>
|
||
|
||
<p align="center">
|
||
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./pbs-backup-client-script/src/branch/main/LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Matrix" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
|
||
</p> |