Nextcloud Recovery
Die Nextcloud ist entweder
- aus einem Klon der SD-Karte,
- den Verzeichnissen
/var/www/html/nextcloud
unddata
und einem Datenbank-Dump, - oder aus einer kompletten Neuinstallation mit der Datei
/var/www/html/nextcloud/config/config.php
und demdata
-Verzeichnis und einem MariaDB-Dump
wieder herzustellen.
Die Backups sollten nach Möglichkeit auf einem anderen physikalisch getrennten Medium abgespeichert werden.
Die Backups werden bei allen hier vorgestellten Optionen auf einem angeschlossenen USB-Stick gespeichert, können aber auch sehr einfach auf ein NAS, wie Synology oder openmediavault übertragen werden.
Wichtige Betriebssystemdateien
Neben den Nextcloud-Verzeichnissen sind noch weitere Dateien des Betriebssystems zu sichern, um die Wiederherstellung einfacher und schneller zu machen.
/etc/fstab
/etc/redis/redis.conf
- Postfix, z.B.
/etc/postfix/main.cfg
- Crontabs
- Logrotate Skripte
- persönliche Skripte, z.B.
/etc/scripts/custom
- Tools, z.B.
calcardbackup
,pishrink
, etc. - Let's Encrypt Einstellungen
/etc/letsencrypt
- ...
Einige der Dateien werden über mein Skript 👉 nextcloudbackup gesichert.
Gib mir gerne einen Kaffee ☕ aus 😀
Gib mir gerne einen Kaffee ☕ aus !
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Option 1 - imagebackup
Diese Option ist mit Abstand die einfachste und schnellste Art der Wiederherstellung. Es wird das gesamte Betriebssystem gesichert, samt aller Einstellungen, Skripte und Tools.
Warning
Es wird ein kompletter Klon der SD-Karte erstellt.
Der Mount Point /mnt/data
, der das Nextcloud-Daten- und Temp-Verzeichnis umfasst, wird nicht gesichert‼️
Für alle Ordner und Dateien auf dem externen Speichermedium ist eine separate Datensicherung anzulegen.
Tools, wie rsync
, BorgBackup
, können hilfreich sein.
Die Datensicherung kann damit auf eine Synology oder auf openmediavault übertragen werden.
👉 openmediavault und rsync
Option 2
Neuinstallation von Nextcloud
Nextcloud ist entsprechend der 👉 Anleitung zu installieren.
Nextcloud Erweiterungen
Alle Erweiterungen sind nach einer ersten Anmeldung an der neuen, leeren Nextcloud-Instanz zu installieren. Sie stehen damit nach dem Recovery sofort wieder bereit.
# Alle installierten Apps anzeigen
sudo -u www-data php /var/www/html/nextcloud/occ app:list
Die Apps können dann einzeln über die CLI installiert werden.
sudo -u www-data php /var/www/html/nextcloud/occ app:install bookmarks
Nextcloud-Config oder -Ordner aus Sicherung einspielen
Das Backupskript 👉 nextcloudbackup erstellt automatische Sicherungen des Nextcloud-Verzeichnisses, der config.php
und der Datenbank.
Die Config-Datei oder der gesamte Nextcloud-Ordner lassen sich an den richtigen Ort zurückkopieren.
Wie kommen die Backups auf den neuen Raspberry Pi?
- Das Speichermedium, auf dem die Datensicherungen vorhanden sind, sind über die
/etc/fstab
bereits eingebunden. Dadurch erhält man einen Zugriff auf alle Backups der alten Nextcloud.
Die Dateien werden in das Home-Verzeichnis kopiert. Anschließend wird der Speicher wieder ausgeworfen.
sudo umount /mnt/nextcloud
- Die Backups werden mithilfe von
rsync
auf den Raspberry Pi übertragen.
rsync -avhbPz -e ssh ~/Nextcloud_Config_2024-10-23.tar.gz benutzer@192.168.2.100:/home/benutzer/Downloads/
Zur Wiederherstellungen werden die notwendigen Dateien in das Home-Verzeichnis des Benutzers kopiert.
sudo cp nextcloud-dump.bak /home/benutzer
sudo cp Nextcloud_Config_2024-10-23.tar.gz /home/benutzer
sudo cp Nextcloud_Folder_2024-10-23.tar.gz /home/benutzer
Das Speichermedium wird wieder ausgeworfen.
Die Backups im Home-Verzeichnis werden entpackt und an den richtigen Ort zu kopiert.
# Wartungsmodus AN
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --on
# Apache2 stopp
sudo systemctl stop apache2.service
Das beiden tar.gz
-Archive werden in einen neuen Ordner im Home-Verzeichnis entpackt:
# Nextcloud_Config
mkdir Nextcloud_Config && tar -zxvf Nextcloud_Config_2024-10-25.tar.gz -C Nextcloud_Config
# Nextcloud_Folder
mkdir Nextcloud_Folder && tar -zxvf Nextcloud_Folder_2024-10-25.tar.gz -C Nextcloud_Folder
Nur config.php kopieren
# Backup der Original Config.php erstellen
sudo cp /var/www/html/nextcloud/config/config.php ~/config.php-nextcloud-original
# config.php aus Backup kopieren
sudo cp ~/Nextcloud_Config_2024-10-23/config.php /var/www/html/nextcloud/config/
Gesamten Nextcloud Ordner kopieren
# Ordner aus Backup kopieren mit cp
sudo cp -a ~/Nextcloud_Folder/. /var/www/html/nextcloud/
# oder
# Ordner aus Backup kopieren mit rsync
sudo rsync -av ~/Nextcloud_Folder/ /var/www/html/nextcloud/
a
= Kopiert alle Dateien und Verzeichnisse rekursiv und behält die Berechtigungen und den Zeitstempel bei.
= Es werden alle Dateien, auch die versteckten, kopiert.
# Rechte der config.php prüfen
ls -lah /var/www/html/nextcloud/config
insgesamt 100K
drwxr-xr-x 2 www-data www-data 4,0K 23. Okt 09:37 .
drwxr-xr-x 16 nobody nogroup 4,0K 21. Okt 16:27 ..
-rw-r----- 1 www-data www-data 2,3K 23. Okt 09:37 config.php
-rw-r----- 1 root root 1,1K 23. Okt 09:37 config.php-original
-rw-r--r-- 1 nobody nogroup 80K 17. Okt 12:38 config.sample.php
-rw-r--r-- 1 nobody nogroup 665 17. Okt 12:38 .htaccess
Die Zugriffsrechte werden mit dem Befehl korrekt gesetzt:
sudo chown www-data:www-data /var/www/html/nextcloud/config/config.php
Gib mir gerne einen Kaffee ☕ aus 😀
Gib mir gerne einen Kaffee ☕ aus !
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
MariaDB - Datenbank Dump erstellen
Der Wartungsmodus der Nextcloud ist zu aktivieren, damit keine Einträge mehr in die Datenbank geschrieben werden können.
# Wartungsmodus AN
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --on
Eine Datenbanksicherung kann manuell erstellt werden.
mysqldump -u nextcloud -p nextcloud > nextcloud-dump.sql
Tip
Was ist der Unterschied zwischen >
und <
?
>
= Datenbanksicherung erstellen<
= Datenbanksicherung einspielen
MariaDB - Datenbanksicherung einspielen
# Wartungsmodus AN
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --on
# Apache2 stopp
sudo systemctl stop apache2.service
Datenbank aus Backup herstellen
- Bestehende Datenbank löschen
sudo mariadb
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nextcloud |
| performance_schema |
+--------------------+
4 rows in set (0,002 sec)
MariaDB [(none)]> DROP DATABASE IF EXISTS nextcloud;
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0,001 sec)
MariaDB [(none)]> quit;
- Leere Datenbank
nextcloud
anlegen und Berechtigungen setzen
sudo mariadb
MariaDB [(none)]> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nextcloud |
| performance_schema |
+--------------------+
4 rows in set (0,001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES on nextcloud.* to nextcloud@localhost;
MariaDB [(none)]> FLUSH privileges;
MariaDB [(none)]> quit;
- Datenbank-Dump einspielen
Der Datenbank Dump wird einfach über die CLI eingespielt. Das Aufrufen der MariaDB-Administration ist nicht notwendig.
Der Datenbank-Dump ist auf den Raspberry Pi zu übertragen. Am einfachsten geht vom eigenen Client aus mit SSH
und rsync
.
Der Befehl zum Einspielen des Datenbank-Dumps:
mysql --user nextcloud --password --force --one-database nextcloud < nextcloud-dump.bak
Das Passwort der Nextcloud-Datenbank ist noch einzugeben.
Ein möglicher Fehler beim Einspielen des Dumps kann sein:
ERROR at line 1: Unknown command '\-'.
Das Problem lässt sich relativ leicht lösen.
- Den Dump mit dem Editor
nano
öffnen - Die erste Zeile entfernen
- Die Datei wie gewohnt speichern
Dieser Fehler kann beim Einspielen auftauchen.
ERROR 2006 (HY000) at line 1632: Server has gone away
In die Konfigurationsdatei von MariaDB ist eine weitere Zeile einzufügen.
sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf-original
sudo nano /etc/mysql/my.cnf
In der Datei ist am Ende die Zeile (EoF) einzufügen:
[mysqld]
wait_timeout = 28800
interactive_timeout = 28800
max_allowed_packet = 500M
Note
Meine Datenbanksicherung war ~400 MB groß. Die angepassten Werte in der my.cnf
haben bei mir zum Erfolg geführt und die ganze Datenbank konnte auf einmal importiert werden.
Sollte das nicht möglich sein, ist die Datenbank in kleinere Stücke aufzuteilen und diese dann einzeln nacheinander zu importieren.
Die Kopfzeile mit den Metadaten sollte dabei immer erhalten bleiben.
Die Werte können geprüft werden.
sudo mariadb
MariaDB [(none)]> SHOW VARIABLES LIKE 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> SHOW VARIABLES LIKE 'interactive_timeout';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| interactive_timeout | 28800 |
+---------------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 524288000 |
+--------------------+-----------+
1 row in set (0.001 sec)
MariaDB [(none)]> quit;
# MariaDB neustarten
sudo systemctl restart mariadb
- Kontrolle
Die Tabellen, also der Inhalt, der gerade eingespielten Datenbank lassen sich anzeigen.
sudo mariadb
MariaDB [(none)]> SHOW TABLES IN nextcloud;
MariaDB [(none)]> quit;
Datenverzeichnis aus Backup herstellen
Das Datenverzeichnis ist, wie im Manual beschrieben, einzubinden.
Apache2 ist im Anschluss neu zu starten:
# Apache2 start
sudo systemctl start apache2.service
psudo systemctl status apache2.service
Note
Das Nextcloud-Datenverzeichnis muss eingebunden sein.
In der /etc/fstab
muss die Zeile vorhanden sein.
sudo mount /mnt/data
Es sind einige Nextcloud-Befehle nach der Wiederherstellung aus einem Backup auszuführen:
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:data-fingerprint
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-columns
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mimetype:update-db
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mimetype:update-js
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:repair
# Nextcloud Wartungsmodus AUS
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --off
Diese Befehle lassen sich erst starten, wenn der Wartungsmodus beendet wurde.
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:data-fingerprint
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indices
# Nur wenn die Erweiterung Memories installiert ist
sudo -u www-data php /var/www/html/nextcloud/occ memories:index -f
sudo -u www-data php /var/www/html/nextcloud/occ memories:places-setup
sudo -u www-data php /var/www/html/nextcloud/occ preview:generate-all -vvv
Der Import der Places
wird ggf. abgebrochen, dann den Befehl einfach nochmal durchlaufen lassen.
- 🔗 https://docs.nextcloud.com/server/latest/admin_manual/occ_command.html
- 🔗 https://apps.nextcloud.com/apps/memories
- 🔗 https://apps.nextcloud.com/apps/previewgenerator
Let's Encrypt
Die Let's Encrypt Einstellungen samt den Zertifikaten können aus einem Backup wiederhergestellt werden.
Let's Encrypt - Backup erstellen
Die bestehenden Einstellungen und Zertifikate werden auf dem alten Server in ein tar.gz-Archiv kopiert und auf den eigenen Client oder den neuen Server übertragen.
# Ordner in das Home-Verzeichnis kopieren
sudo cp -r letsencrypt/ /home/benutzer
# tar-Archiv erstellen
sudo tar zpcvf letsencrypt.tar.gz letsencrypt/
# Auf den eigenen Client/Server übertragen
rsync -avhbPz -e ssh letsencrypt.tar.gz destroy@192.168.2.100:/home/benutzer/Downloads/
Let's Encrypt auf neuem Server einspielen
Das tar.gz-Archiv ist auf dem neuen Server angekommen und kann dort an den richtigen Ort kopiert werden.
# Entpacken nach /etc/
sudo tar zxvf /home/benutzer/Downloads/letsencrypt.tar.gz -C /etc
# Aufräumen
sudo rm /home/benutzer/Downloads/letsencrypt.tar.gz
# Die Berechtigungen sind bei Bedarf anzupassen
sudo chown -R root:root /etc/letsencrypt
sudo chmod -R 755 /etc/letsencrypt
sudo certbot renew --dry-run
Es ist darauf zu achten, dass die Einstellungen in der Datei /etc/apache2/sites-available/nextcloud.conf
im Abschnitt
Spende
Gib mir gerne einen Kaffee ☕ aus 😀
Gib mir gerne einen Kaffee ☕ aus !
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me
Follow Me
Changelog
- 2025-05-04: Umzug von codeberg-Repository