Seiteninhalt Home / Know-How / Nextcloud Installationshinweise für Webhosting

Nextcloud Installationshinweise für Webhosting

Vor einiger Zeit hatte ich die Möglichkeit, einen Server von Nextcloud auf einem einfachen Webhosting-Paket zu installieren.

Leider ist das mit einigen Schwierigkeiten verbunden, da die offizielle Dokumentation zwar sehr umfangreich, aber auch in einigen Punkten irreführend ist. Dazu helfen leider auch Recherchen in Benutzerforen etc. nur bedingt weiter, was mich sehr viel Zeit kostete. Daher möchte ich hier möglichst klar verständlich darlegen und dokumentieren, was man tun kann, um zumindest ein paar Klippen zu umschiffen. Meine Hinweise beziehen sich auf Version 25, gelten aber sicherlich auch für viele ältere und auch zukünftige Versionen.

 

Datenbank von SQLite nach MySQL konvertieren

Das allererste Problem taucht schon in den ersten Schritten der ansonsten sehr gut gelösten Installationsroutine auf: Man soll die Art der Datenbank definieren und es werden SQLite (das ist eine Datei im Datenverzeichnis von Nextcloud) und MySQL/MariaDB sowie PostgreSQL als Optionen angeboten. Leider habe ich die Erfahrung gemacht, dass zu diesem Zeitpunkt ausschließlich die SQLite-Variante funktioniert. Alle anderen Varianten führen zu einer nicht funktionierenden Installation. Man muss später umstellen.

Leider ist das (nach meiner Erfahrung) relativ typisch für Nextcloud: Es werden Dinge angeboten oder auch empfohlen, die praktisch nur sehr schwierig umsetzbar sind, aber es wird kein Hinweis auf diese Schwierigkeiten gegeben. Aber evtl. liegt dies nur daran, dass ich die Installation auf einem Webhosting-Paket durchführe und keine volle Serverkontrolle habe. Aber dies dürfte vielen potentiellen Anwendern so gehen.

Nach erfolgreicher Installation muss man also die Datenbank manuell umstellen.

Auch hier könnte man annehmen, dass man einfach in der Datei "config.php" im Feld "dbtype" den Datenbanktyp umstellt auf "mysql" und die SQLite-Datei mit Hilfe eines entsprechenden Konverters (z.B. den DB Browser for SQLite (DB4S), hier bewusst ohne Verlinkung) in eine SQL-Datei konvertiert und in die MySQL-Datenbank als SQL-Befehle importiert (ich setze diese Fähigkeiten hier voraus). Das hat bei mir aber leider, trotz unterschiedlicher Konvertierungsversuche (mit vorgenanntem Browser oder in der Linux-Shell etc.) nicht zum Erfolg geführt.

Erfolgreich war nur der Einsatz einer Nextcloud-App, die "eigentlich" gar nicht mehr unterstützt wird: OCC Web. Diese App stellt eine PHP-Shell zur Verfügung und sollte daher nur stundenweise installiert sein. Ein Missbrauch solcher Apps ist durchaus möglich.

Diese App kann in Nextcloud sehr schnell installiert werden und erscheint dann oben links im Menü.

Nach dem Start der App landet man in einer Shell und gibt dort ein:
occ db:convert-type --all-apps --password="<mysql_user_password>" mysql <mysqlusername> <mysqlhostname> <mysqldatabase>

Das Tolle an dieser Methode ist, dass damit nicht nur der Datenbankimport funktioniert, sondern auch sogar die o.g. Datei config.php angepasst wird. Siehe dazu auch die offizielle Nextcloud-Dokumentation.

Damit hat man nun eine Nextcloud-Installation mit MySQL-Datenbank. Die App OCC Web sollte man schnellstmöglich deinstallieren - außer man benötigt sie für noch für den folgenden Tipp...

 

Datenverzeichnis außerhalb www-root legen

Die offizielle Nextcloud-Dokumentation empfiehlt, das Datenverzeichnis außerhalb des "www-root"-Verzeichnisses zu platzieren.

Und da haben wir es wieder: Eigentlich ist das ein wirklich guter Tipp, der auch logisch erscheint, aber es gibt einfach große Probleme beim Umsetzen... - zumindest auf einem Webhosting-Paket...

Der erste Reflex ist, in der Datei "config.php" den Pfad entsprechend zu ändern und das Verzeichnis zu verschieben. Einzige Hürde ist dort, dass man den absoluten Pfad dieses Verzeichnisses benötigt. Dies erfährt man jedoch (evtl. mit einigem Suchen) beim jeweiligen Provider. Beispielsweise kann dies "/usr/home/<username>" sein.

Tut man dies so, erhält man eine Fehlermeldung und kann sich ggf. nicht mehr in Nextcloud anmelden.

Es ist leider so, dass dieser Pfad zusätzlich auch noch in der MySQL-Datenbank in der Tabelle "oc_storages" in einem Datensatz beginnend mit "local::..." steht. Nach diesem "local::" schreibt man daher dort auch den Pfad, der auch in der config.php steht.

Hat man bereits im Konfigurationsbereich den Cron-Job für Nextcloud eingerichtet, sollte man den zeitweise pausieren lassen, damit er während dieser Umstellung nicht läuft.

Nach dem Ändern der Datenbank und ggf. Pausieren des Cron-Jobs verschiebt man entsprechend das Verzeichnis.

Danach sollte man ggf. den o.g. Cron-Job wieder aktivieren und auch gleich laufen lassen.

Danach kann man noch einmal die App OCC Web aufrufen und dort eingeben (dazu die offizielle Nextcloud-Dokumentation):
files:cleanup

Vorsorglich kann man auch noch tun (dazu die offizielle Nextcloud-Dokumentation):
maintenance:repair

Bei mir, auf einer relativ frischen Installation, hat dies prima funktioniert und ich konnte das Datenverzeichnis entsprechend verschieben und alle Daten blieben erhalten. Auf der Administrations-Übersichtsseite in Nextcloud sollte dazu auch kein Fehler mehr erscheinen. Nach erfolgter Umstellung sollte man die App OCC Web deaktivieren und auch entfernen, um damit verbundene Sicherheitsprobleme zu verhindern.