Produktive Nextcloud sichern: Backup Strategien, die wirklich funktionieren
Ein zuverlässiges Backup ist essenziell für den sicheren Betrieb einer produktiven Nextcloud. Viele Administratoren verlassen sich jedoch auf unvollständige oder ungeeignete Sicherungen, die sich im Ernstfall nicht konsistent wiederherstellen lassen. In diesem Video zeige ich, wie du deine Nextcloud professionell absicherst und ein Backup-Konzept nach Best Practice aufbaust. Wir betrachten, welche Komponenten gesichert werden müssen, warum ein reines VM-Backup oft nicht ausreicht und wie sich bewährte Backup-Strategien wie die 3-2-1-Regel in der Praxis umsetzen lassen.
Dieser Beitrag wird gesponsort von:

Nextcloud Navigator Pro – https://nextcloud-navigator.de
Dein Weg zum Nextcloud Admin Profi!
🛠️ OpenSource IT-Support 🛠️
Du benötigst Unterstützung bei der Installation oder Konfiguration von OpenSource Software? Wir helfen dir gerne weiter! Schreib uns einfach eine Mail an: service@apfelcast.com
✌🏻Unterstütze unseren Kanal auf Patreon: https://patreon.com/apfelcast
Im Video verwendete Befehle:
## Pakete installieren
sudo apt update
sudo apt install -y borgbackup borgmatic
## Backup-Ziel vorbereiten (lokales Repository)
# -> NAS oder Laufwerk muss zuvor unter /mnt/backup gemountet werden
sudo mkdir -p /mnt/backup/borg-repo
sudo chmod 700 /mnt/backup/borg-repo
sudo borg init --encryption=repokey-blake2 /mnt/backup/borg-repo
## Verzeichnisse für DB-Backups anlegen
sudo mkdir -p /dbbackup
sudo chmod 750 /dbbackup
## Pre-Backup-Skript anlegen
sudo nano /usr/local/sbin/nextcloud-pre-backup.sh
#!/bin/bash
set -euo pipefail
echo "set variables"
ncroot=/var/www/nextcloud
dbbackuppath=/dbbackup
dbusername=$(php -r "include '$ncroot/config/config.php'; echo \$CONFIG['dbuser'];")
dbpassword=$(php -r "include '$ncroot/config/config.php'; echo \$CONFIG['dbpassword'];")
dbdatabase=$(php -r "include '$ncroot/config/config.php'; echo \$CONFIG['dbname'];")
[[ ! -d "$dbbackuppath" ]] && mkdir -p "$dbbackuppath"
echo "Take Nextcloud offline into Maintenance mode"
cd "$ncroot"
sudo -u www-data php occ maintenance:mode --on
cleanup() {
sudo -u www-data php occ maintenance:mode --off || true
}
trap cleanup EXIT
echo "delete old db-backups (only if backups exist)"
cd "$dbbackuppath"
if ls *.bak >/dev/null 2>&1; then
rm -f *.bak
echo "Old backups deleted"
else
echo "No old backups found – nothing to delete"
fi
mysqldump --single-transaction \
-h localhost \
-u"$dbusername" -p"$dbpassword" \
--databases "$dbdatabase" \
> "$dbbackuppath/nextcloud-sqlbkp_$(date +'%Y%m%d').bak"
echo "db-backup DONE!"
Ausführbar machen:
chmod +x /usr/local/sbin/nextcloud-pre-backup.sh
## Post-Backup-Skript anlegen
sudo nano /usr/local/sbin/nextcloud-post-backup.sh
#!/bin/bash
set -euo pipefail
echo "Take Nextcloud back online"
ncroot=/var/www/nextcloud
cd "$ncroot"
sudo -u www-data php occ maintenance:mode --off
Ausführbar machen:
chmod +x /usr/local/sbin/nextcloud-post-backup.sh
## borgmatic Konfiguration erstellen
sudo mkdir -p /etc/borgmatic
sudo nano /etc/borgmatic/config.yaml
location:
source_directories:
- /var/www/nextcloud
- /dbbackup
- /pfad/zum/nc-data-verzeichnis
repositories:
- /mnt/backup/borg-repo
storage:
encryption_passphrase: "HIER_EIN_LANGES_SICHERES_PASSWORT"
retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
consistency:
checks:
- repository
- archives
hooks:
before_backup:
- /usr/local/sbin/nextcloud-pre-backup.sh
after_backup:
- /usr/local/sbin/nextcloud-post-backup.sh
on_error:
- /usr/local/sbin/nextcloud-post-backup.sh
## Erstes Backup (manuell testen)
Dry Run:
sudo borgmatic --verbosity 2 --dry-run
Echtes Backup:
sudo borgmatic --verbosity 2
Prüfen:
borg list /mnt/backup/borg-repo
## Timer für automatische Ausführung anlegen
sudo systemctl edit borgmatic.timer
[Timer]
OnCalendar=
OnCalendar=*-*-* 02:30:00
RandomizedDelaySec=0
sudo systemctl daemon-reload
sudo systemctl restart borgmatic.timer
systemctl list-timers borgmatic.timer
## Restore
Zielordner für Restore anlegen
sudo mkdir -p /mnt/backup/restore
sudo chmod 750 /mnt/backup/restore
## Fuse installieren
apt install -y python3-llfuse fuse
borg mount \
/mnt/backup/borg-repo::<backup-id> \
/mnt/backup/restore
## Backups durchsuchen
cd /mnt/backup/restore
