Nextcloud & Allinkl.com- Anpassungen nach einem Update

Nextcloud lässt sich bei ALL-INKLCOM gut hosten. Für private und kleine private Wolken ist die Leistung ausreichend. Chats und Video-Calls innerhalb der Cloudinstallation sind aus Performancegründen nicht möglich, ebenfalls lässt sich auf dem Webserver ein Office-Paket für die Bearbeitung der von Dokumenten, Tabellen und Präsentationen nicht hosten. Entweder bindet man externe Dienste ein, nutzt einen (virtuellen) Server mit mehr Freiheiten oder mietet eine Managed-Nextcloud.

Nach der Installation oder einem Update sind ein paar Anpassungen möglich. Den Vorganng des Updates und der Konfigurationsanpassungen habe ich in einem bash-Skript-zusammengefasst, welches ich über einen SSH-Zugang aufrufe. Dieses stelle ich euch kommentiert zur Verfügung. Kopiert euch das Skript und speichert es in einer Datei mit dem Name initnc.sh

Folgende Voraussetzungen müssen erfolgt sein:

  • Ihr benötigt einen SSH-Zugang (Dies ist bei all-inkl.com ab dem premium-Webpaket enthalten)
  • Die Installation der Nextcloud muss in einem Unterverzeichnis erfolgten. Ihr könnt das Skript nicht in dem Nextcloud-Verzeichnis ablegen, da die Integrationsprüfung unerwartete Dateien (und ggf. Ordner) feststellt und die Ausführung verweigert.
  • Die Datei muss mit dem Befehl chmod +x initsc.sh ausführbar gemacht werden.
  • Die initnc.sh liegt oberhalb des Nextcloud-Verzeichnisses. Der Aufruf erfolgt auf der Kommandozeile mit ./initnc.sh

Wenn ihr keinen SSH-Zugang habt, könnt ihr die Installation bzw. das Update über die Weboberfläche machen und die Anpassung der config.php via FTP vornehmen. Allerdings benötigt diese Vorgehensweise deutlich mehr Zeit. Mit dem Skript liege ich bei einem Update je nach Umfang bei maximal 2 Minuten.

Das nachfolgende Skript ist für all-inkl.com optimiert und muss in der Regel nur an wenigen Stellen angepasst werden. Wenn ihr die folgende Verzeichnisstruktur einhaltet, müsst ihr nur eure Accountkennung in der Variable verz_www anpassen, also anstatt
„/www/htdocs/[……..]“ steht dann dort z.B. „/www/htdocs/w123a456f“

Hier die empfohlene Verzeichnisstruktur:

  • /
    initnc.sh
    • backup
    • nextcloud

Für die Anmeldung an der SSH-Konsole benötigt ihr das FTP-Kennwort des Hauptnutzers. Mit dem folgenden Befehl meldet ihr euch über das Terminal einer Linux-Umgebung an:

ssh ssh-[Zugang]@[webspace-Kennung].kasserver.com
Beispiel: 
ssh ssh-w123a456f@w123a456f.kasserver.com

Anhand der Kommentare erklärt sich das Skript von selbst. Ihr könnt den nachfolgenden Code in eine eigene Datei namens initnc.sh kopieren.

#!/bin/bash
# credits: notizblog.leniger.info
# Variablendefinition

	# Verzeichnisse
		# Root-Verzeichnis des Webspaces:
		# [........] durch Deine Account-Nummer, z.B. w123a456z
		verz_www="/www/htdocs/[........]"
		# Verzeichnis des Backups für die config.php
		verz_ziel="$verz_www/backup"
		# Installationsverzeichnis der Nextcloud
		verz_nextcloud="$verz_www/nextcloud"

	# Dateien
		quelle_config_php="$verz_nextcloud/config/config.php"

	# sonstiges
		# Pfad der occ-Datei inkl. der gew. PHP-Version
		# gewählte PHP-Version zum Ausführen der Skripte
		prg_php="php85"
		# Programme und Variablen
		# Ort der Anwendung occ, zentrale Befehlszeilenschnittstelle (CLI) von Nextcloud
		prg_occ="$prg_php $verz_nextcloud/occ"
		# Führt die Programmaktualisierungen durch
		prg_updater="$prg_php $verz_nextcloud/updater/updater.phar"
		# Upgrade und Registrierung der installierten Module
		prg_upgrade="$prg_occ upgrade"
		# Deaktivierung des Wartungsmodus
		prg_maintenance_off="$prg_occ maintenance:mode --off"
		# Variable für den Zeitstempel, um die gesicherte Config.php zu versionieren
		uhrzeit=$(date +"%Y%m%d%H%M%S")

	# Anzupassende Dateien
		# Grundbefehl für die Anpassung der config.php
		dat_config="config:system:set"
		

# Programmausführung
	# aktuelle config.php in das Backupverzeichnis sichern und mit dem aktuellen Zeitstempel versehen.
		cp "$quelle_config_php" "$verz_ziel/config_$uhrzeit.php"

	# Aktualisierungen suchen und installieren
		# Update ausführen
		$prg_updater
		# Module upgraden
		$prg_upgrade
		# Wartungsmodus beenden
		$prg_maintaince_off

	# Anpassung der Config.php
		# PHP OPcache-Modul konfigurieren
		# Eintrag in der config.php: 'opcache.file_cache_only=0'
		$prg_occ $dat_config opcache.file_cache_only --value=0 --type=int
		
		# Wartungszeitfenster auf 1 Uhr nachts setzen
		# Eintrag in der config.php: 'maintenance_window_start' => 1
		$prg_occ $dat_config maintenance_window_start --value=1 --type=int
		
		# Standard-Telefonregion einrichten
		# Eintrag in der config.php: ''default_phone_region' => 'DE''
		$prg_occ $dat_config default_phone_region --value="DE"
		
		# Server-ID festlegen
		# Eintrag in der config.php: 'serverid' => 1'
		# Eigentlich nur wichtig, wenn die Installation über mehrere Server verteilt ist.
		$prg_occ $dat_config serverid --value=1 --type=int

	# Ausführende Parameter
		# die nachfolgenden Parameter lassen sich nur über das Terminal absenden
		# fehlende fehlende DB-Indices einririchten
		$prg_occ db:add-missing-indices
		# Variablenfehler beseitigen
		$prg_occ db:convert-filecache-bigint
		# Mimetype-Zuordnungen korrigieren
		$prg_occ maintenance:repair --include-expensive


Nachfolgend noch ein paar weitere Informationen:

PHP-Speicherlimit erhöhen

Nextcloud benötigt mindestens 512 MB, die Standardgrenze liegt bei allinkl.com bei 128 MB. Mit der folgenden Zeile in der Datei .user.ini im Root-Verzeichnis kann die Speichergrenze erhöht werden. Bitte diese Änderung moderat vornehmen, da dies den gesamte SharedServer beeinflusst und es zu Rückmeldungen vom Provider kommen kann.

Ich habe für mich einen Wert von 768 MB als gut empfunden.

memory_limit=768M

Anmerkung: Mit dem Hub 8 (ab Version 29) wird der PHP-Speicher nicht mehr angemerkt. Ob diese Option noch benötigt wird, wird sich zeigen.

PHP Memory Cache konfigurieren

Der Memory-Cache ist bei all-inkl.com leider erst ab einem Managed-Server konfigurierbar.

Hintergrundaufgabe sucht nach SSL-Zertifikaten

Öfter mal was neues, die Fehlermeldung lautet genau:

Eine Hintergrundaufgabe, die nach vom Benutzer importierten SSL-Zertifikaten sucht, läuft noch. Bitte später erneut versuchen.

Die vermeintliche Hintergrundaufgabe bricht nicht ab, sie läuft auch nicht. Ein Wert in der Tabelle update oc_appconfig sorgt für einen falschen Status und kann gelöscht werden. Dies lässt über ein SQL-Statement oder durch die direkte Änderung in der Datenbank beheben. In beiden Fällen muss man sich in der Datenbank anmelden. Über den phpmyadmin muss der folgende Eintrag mit einem Klick auf das rote X gelöscht werden:


Changelog:
02.11.2024: Aufruf der aktuellen PHP-Version angepasst, kleine Format- und Textkorrekturen.
09.08.2026: Überarbeitung und Ergänzung neuer Punkte
11.09.2026: Überarbeitung und Bereitstellung eines kommentierten bash-skriptes