UniFi Network Application Docker-Setup mit Update-, Backup- und Restore-Skripten

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-26 19:34:07 +02:00
co-authored by Claude Fable 5
commit 247f20602b
7 changed files with 280 additions and 0 deletions
Executable
+64
View File
@@ -0,0 +1,64 @@
#!/bin/bash
# Stellt ein Backup wieder her.
#
# ./restore.sh backups/unifi-full-backup_XXXX.tar.gz
# Komplett-Restore: stoppt die Container, ersetzt ./data durch den
# Stand aus dem Archiv und startet die Container wieder.
#
# ./restore.sh backups/autobackup_XXXX/datei.unf
# Legt die .unf-Datei in den Autobackup-Ordner der UniFi-App, sodass sie
# in der Weboberfläche unter Einstellungen -> System -> Backups
# ausgewählt und wiederhergestellt werden kann.
set -euo pipefail
cd "$(dirname "$0")"
if [[ $# -ne 1 ]]; then
echo "Aufruf: $0 <backup-datei>"
echo " z.B.: $0 backups/unifi-full-backup_2026-07-26_20-00-00.tar.gz"
echo " oder: $0 backups/autobackup_2026-07-26_20-00-00/autobackup_9.1.120.unf"
exit 1
fi
FILE="$1"
if [[ ! -f "$FILE" ]]; then
echo "Datei nicht gefunden: $FILE"
exit 1
fi
case "$FILE" in
*.tar.gz)
echo "ACHTUNG: Das aktuelle ./data-Verzeichnis wird ersetzt!"
read -r -p "Fortfahren? [j/N] " answer
[[ "$answer" =~ ^[jJyY]$ ]] || { echo "Abgebrochen."; exit 1; }
echo "==> Container stoppen..."
docker-compose down
if [[ -d data ]]; then
SAFETY="data.vor-restore.$(date +%Y-%m-%d_%H-%M-%S)"
echo "==> Aktuelles ./data wird aufbewahrt als ./$SAFETY"
mv data "$SAFETY"
fi
echo "==> Backup entpacken..."
tar xzf "$FILE"
echo "==> Container starten..."
docker-compose up -d
echo "==> Fertig. Wenn alles läuft, kann ./$SAFETY gelöscht werden."
;;
*.unf)
DEST="./data/unifi/data/backup/autobackup"
mkdir -p "$DEST"
cp "$FILE" "$DEST/"
echo "==> $(basename "$FILE") wurde nach $DEST kopiert."
echo "Wiederherstellen in der Weboberfläche:"
echo " Einstellungen -> System -> Backups -> Wiederherstellen"
echo "(Bei einer Neuinstallation kann die Datei auch direkt im"
echo " Einrichtungs-Assistenten unter 'Restore from backup' gewählt werden.)"
;;
*)
echo "Unbekanntes Format. Erwartet: *.tar.gz (Komplett) oder *.unf (UniFi-Backup)"
exit 1
;;
esac