Nextcloud-Umzug auf einen anderen Server

  Lars Müller   Lesezeit: 4 Minuten  🗪 9 Kommentare Auf Mastodon ansehen

Hier erkläre ich wie man eine laufende Nextcloud Installation auf einen neuen Server verschiebt.

nextcloud-umzug auf einen anderen server

Hinweis der Redaktion: Diesen Beitrag habt ihr euch in den Artikelvorschlägen gewünscht.

Die eigene Nextcloud wächst mit der Zeit – und irgendwann steht der Umzug auf einen neuen Server an, sei es weil der Speicher knapp wird, oder der Server nicht mehr den eigenen Anforderungen genügt. In diesem Artikel zeigen wir Schritt für Schritt, wie man eine klassische Installation von Server A auf Server B migriert.

Bei diesem Artikel setze ich einfach voraus, dass ihr den Server so weit eingerichtet habt. SSH-Zugang funktioniert, sowie Apache (LAMP) oder Nginx (LEMP) laufen. Auch setze ich voraus, dass Nextcloud im Standardpfad von Apache bzw. Nginx läuft (/var/www). Sollte dies anders sein, müsstet ihr die Pfade dementsprechend anpassen.

Voraussetzungen

  • Zugriff (SSH oder direkt) auf beide Server.

  • Auf Server B sollte LAMP oder LEMP eingerichtet sein (Apache/Nginx, PHP, MariaDB/MySQL). 

  • Die Nextcloud-Versionen auf beiden Servern sollten identisch oder kompatibel sein.

  • Wichtig: Vor dem Umzug immer ein vollständiges Backup machen!

Schritt 1: Wartungsmodus aktivieren

Damit während des Umzugs keine Änderungen an der Cloud vorgenommen werden:

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on

Pfad bitte anpassen, falls Nextcloud woanders installiert ist.

Schritt 2: Dateien kopieren

Die Nextcloud-Daten und die Webanwendung kopieren:

rsync -avz /var/www/nextcloud root@serverB:/var/www/

Falls die Daten (Data-Verzeichnis) außerhalb des Webroots liegen:

rsync -avz /pfad/zum/data/ root@serverB:/pfad/zum/data/

Tipp: Bei sehr großen Datenbeständen empfiehlt sich der rsync-Parameter --progress.

Schritt 3: Datenbank exportieren

Auf Server A: (Benutzer und Passwort anpassen)

mysqldump --single-transaction -u nextclouduser -p nextclouddb > /home/nextcloud.sql

Schritt 4: Datenbank importieren

Nun die Datenbank mit dem gleichen Befehl aus Schritt 2 auf den neuen Server laden.

rsync /home/nextcloud.sql root@zielserver.de:/home/

4.1 MariaDB/MySQL installieren (falls noch nicht vorhanden)

Auf einem Debian/Ubuntu-basierten Server empfiehlt sich MariaDB: 

sudo apt update && sudo apt install mariadb-server
sudo mysql_secure_installation

Alternativ für MySQL:

sudo apt update && sudo apt install mysql-server
sudo mysql_secure_installation

Das Skript führt Schritt für Schritt durch verschiedene Sicherheitseinstellungen. Zunächst werden Sie aufgefordert, das aktuelle root-Passwort der Datenbank einzugeben. Da noch kein Passwort gesetzt wurde, einfach die Eingabetaste drücken, um anzugeben, dass derzeit kein Passwort existiert.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

Nach der Installation kann man den Dienst starten und aktivieren: 

sudo systemctl enable mariadb && sudo systemctl start mariadb

4.2 Datenbank und Benutzer anlegen

Jetzt wird auf Server B die Datenbank und der passende Benutzer für Nextcloud erstellt: (hier das zuvor erstellte Root Passwort nutzen)

mysql -u root -p 

Dann im MySQL/MariaDB-Prompt:

CREATE DATABASE nextclouddb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'starkes-passwort';
GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Hinweis: Das Passwort sollte natürlich durch ein starkes, individuelles Passwort ersetzt werden. Beispielsweise mit pwgen 64 1

4.4 Datenbank importieren

Jetzt kann das Datenbank-Backup eingespielt werden:

mysql -u nextclouduser -p nextclouddb < /root/nextcloud.sql 

4.5 Abhängigkeiten installieren

Damit Nextcloud überhaupt funktioniert, sind folgende Abhängigkeiten notwendig.

sudo apt install php8.3 php8.3-{cli,fpm,gd,mbstring,curl,xml,zip,common,imagick,intl,opcache,readline,mysql}

Schritt 5: Konfigurationsdatei prüfen

Die Datei config.php (unter /var/www/nextcloud/config/) muss eventuell angepasst werden, z. B. für die neue Domain und die Änderungen für die Datenbank.

'trusted_domains' => 
array (
  0 => 'neuer-server.de',
),

'dbtype' => 'mysql',
'dbname' => 'nextclouddb',
'dbuser' => 'nextclouduser',
'dbpassword' => 'EinSehrSicheresPasswort',
'dbhost' => 'localhost',

Wenn sich der Datenbankname oder Benutzer geändert hat, müssen auch diese Angaben angepasst werden.

Schritt 6: Berechtigungen setzen

Auf Server B die Dateiberechtigungen anpassen:

chown -R www-data:www-data /var/www/nextcloud/

Sowie die Apache oder nginx Konfiguration vom alten Server übernehmen.

rsync -avz /etc/nginx/sites-available/nextcloud root@serverB:/etc/nginx/sites-available/nextcloud

Mit Certbot das Zertifikat für die Cloud aktualisieren, denn ohne startet Nginx/Apache nicht mehr. 

sudo certbot certonly --nginx -d cloud.domain.tld

Jetzt die Seite aktivieren wenn der Letsencrypt Pfad passt, oder angepasst wurde.

sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud

sudo nginx -t

sudo service nginx restart


Schritt 7: Wartungsmodus deaktivieren

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Schritt 8: Tests

  • Funktioniert der Login?

  • Werden alle Daten angezeigt?

  • Apps überprüfen.

Schritt 8: Cronjobs einpflegen

zu guter Letzt müssen noch die Cronjobs angelegt werden, genauso wie auf dem alten Server. Danach sollte alles wieder funktionieren. 

Quelle: Eigene Anleitung, basierend auf Nextcloud-Administrationshandbuch

Bild: erstellt mit ChatGPT 

Tags

Nextcloud, Selfhosting

Martin
Geschrieben von Martin am 16. Mai 2025 um 09:23

Eine hilfreiche Anleitung. Auf ähnliche Weise habe ich kürzlich meine LEPP (Linux/Nginx/Postgresql/PHP) Nextcloud in eine Container-Nextcloud überführt (Podman Quadlet).

👓
Geschrieben von 👓 am 16. Mai 2025 um 17:04

Danke für den Artikel, insbesondere das der Artikelwunsch erfüllt wurde.

Lars Müller
Geschrieben von Lars Müller am 18. Mai 2025 um 14:27

Gerne doch. :-) Einen schönen Sonntag noch.

Jens
Geschrieben von Jens am 17. Mai 2025 um 00:25

Was mich in dem Zusammenhang besonders interessieren würde: Wie ziehe ich die zugehörige LetsEncrypt-Zertifikatslogik auf den neuen Server um? Welche Dateien/Ordner muss ich umziehen, damit die regelmäßige Aktualisierung des SSL-Zertifikats nahtlos weiterläuft?

Lars Müller
Geschrieben von Lars Müller am 18. Mai 2025 um 14:29

Hallo,

dazu musst du die Ordner /etc/letsencrypt umziehen.

rsync -avz /etc/letsencrypt/ root@neuer-server.de:/etc/letsencrypt

Auf der / achten im ersten teil, sonst ersteht folgende Ordnerstruktur. /etc/letsencrypt/letsencrypt

Bernhard
Geschrieben von Bernhard am 17. Mai 2025 um 12:03

... hmm - für mich liest sich das alles, als ob man dazu einen eigenen Server braucht, von und wegen root-Zugriff etc. - warum macht man dann nicht einfach 'ne größere Platte rein, wenn der Platz knapp wird (um am Eingangsbeispiel zu bleiben). Was mach ich, wenn ich einen Webspace bei einem Provider habe? Da scheitere ich in der Regel schon bei etlichen der Kommandos, die bei "Fehlern" in den Sicherheits- & Einrichtungswarnungen angegeben werden. Updates sind deshalb auch schon ein Glückspiel ...

Lars Müller
Geschrieben von Lars Müller am 18. Mai 2025 um 14:31

Hallo,

Ja, na klar, kann man auch eine neue Platte anschließen und den Datenpfad verschieben. Aber bei dedizierten Servern ist das mit höheren Kosten gekoppelt. Manchmal macht es alleine aus dem Grund Sinn, den Server zu wechseln.

leachimus
Geschrieben von leachimus am 18. Mai 2025 um 15:47

Sehr gute Anleitung, wird man sicherlich mal gebrauchen können, danke!

Wäre es nicht sinnvoll noch die PHP Optimierungen abzugeben, da die eigentlich unabdingbar sind?

Lars Müller
Geschrieben von Lars Müller am 19. Mai 2025 um 23:09

Ja genau das ist eine gute Idee. Werde ich nachreichen.