In einer bestehenden LAMP– bzw. Webserver/PHP/Datenbank-Umgebung eine Nextcloud zu installieren ist an und für sich keine große Sache. Aufwendiger gestaltet sich das Ganze, wenn man eine solche Umgebung erst aufbauen muss.

Eine (imho) sehr schnelle und komfortable Möglichkeit besteht nun darin, jenseits der Betriebssysteminstallation, alles weitere von einem Skript erledigen zu lassen. Hier kommt die Lösung von Carsten Rieger ins Spiel. Nachdem z.B. Debian 11 Bullseye installiert ist richtet das Skript den Webserver samt aller weiteren notwendigen Komponenten ein.

In seinem Blog sind alle notwendigen Schritte erklärt:

Carsten Rieger – Nextcloud Installationsskript zero.sh

Die minimalen Voraussetzungen sind überschaubar:

  • Feste IP-Adresse für den Server, gemeint ist mindestens im internen Netz.
  • FQDN

Unter Debian muss man zunächst folgende Befehle ausführen:

su -
apt install -y sudo 
usermod -aG sudo <Benutzername>
exit

und

sudo -s
apt install -y git

git clone https://codeberg.org/criegerde/nextcloud-zero

cp nextcloud-zero/zero.sh .
chmod +x zero.sh

Im Skript selbst sind mindestens folgende Variablen bzw. deren Werte anzupassen:

  • NCRELEASE – Kann unverändert bleiben, wenn die aktuellste Nextcloud-Version verwendet werden soll.
  • NEXTCLOUDDNS – Der FQDN der verwendet werden soll.

Dies geht z.B. mit

nano zero.sh

Es gibt jede Menge weiterer Werte die angepasst werden können. Es kommt hier darauf an, was man alles nutzen möchte, ein Beispiel wäre Let’s Encrypt, entsprechend unterscheiden sich die Wege. Wenn man einen feste IP-Adresse an seinem Internetanschluss hat ist es etwas anderes als wenn man eine dynamische IP hat. Gleiches gilt für den DNS-Teil. Nutzt man DDNS oder hat man einen festen FQDN.

Nachdem man die Vorbereitungen getroffen hat kann man das Skript ausführen und wartet den Abschluss ab:

./zero.sh

Auf meinem System mit Debian 11 Bullseye unter Hyper-V benötigte die Einrichtung sechs Minuten und 39 Sekunden. Am Ende wird an der Konsole oder via ssh eine Zusammenfassung angezeigt, die sowohl IP als auch FQDN beinhaltet sowie die generierten Zugangsdaten. Diese Informationen sollte man unbedingt an einem sicheren Ort aufbewahren!

Ab hier kann man mit der weiteren Nextcloud-Konfiguration, wie z.B. die Installation von Apps oder dem Anlegen von Benutzern, fortfahren.

Wo findest sich was?

Die Nextcloud-Dateien findet man unter

/var/www/nextcloud

Der Datenordner befindet sich unter

/data

Das Nextcloud-Protokoll findet sich unter

/var/log/nextcloud

Troubleshooting

Zumindest bei meinem Setup das im Dezember 2022 durchgeführt wurde, stimmte bei PHP die Zeitzone nicht. In der “php.ini” stand noch “date.timezone = CURRENTTIMEZONE” statt “Europe/Berlin”. Offenbar wurde diese durch das Skript nicht gesetzt.

Bei Updates von Apps blieb des Öfteren der Maintenance Mode aktiv. Offenbar hängt es meist an SnappyMail, welches ich verwende. Abhilfe schaffen folgende Befehle:

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

Versucht man den Maintenance Mode zu beenden (zweiter Befehl von oben), erhält man mitunter einen Grund warum dies nicht möglich ist. Wie erwähnt hängt es oft an einem App-Update oder -Upgrade, welches man dann mit dem dritten Befehl durchführen kann. Dabei wird in der Regel der Maintenance Mode deaktiviert. Ein Beispiel:

root@nc:~# cd /var/www/nextcloud

root@nc:/var/www/nextcloud# sudo -u www-data php occ maintenance:mode --off
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Maintenance mode disabled

root@nc:/var/www/nextcloud# sudo -u www-data php occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Setting log level to debug
Turned on maintenance mode
Updating database schema
Updated database
Updating <snappymail> ...
Updated <snappymail> to 2.25.2
Starting code integrity check...
Finished code integrity check
Update successful
Turned off maintenance mode
Resetting log level

Mitunter ist der Maintenance Mode bereits deaktiviert, aber im Browser wird dieser dennoch angezeigt. Offenbar wird irgendwo noch etwas zwischengespeichert.

Mit Glück reicht ein Neustart des Webservers und der PHP-Erweiterung aus:

systemctl restart nginx

systemctl restart php8.1-fpm.service

Ansonsten hilft ein beherzter

reboot

Getreu dem Motto: Ein Boot tut gut.

Alternativ kann man alle Apps einfach mit

cd /var/www/nextcloud
sudo -u www-data php occ app:update --all

aktualisieren. Mit diesem Befehl hatte ich bislang noch keine Probleme.

Quelle

Nextcloud – Docs – Nextcloud configuration – Using the occ command – Apps commands