Nextcloud mit Chrooted-User und Cron-Job

,

Wenn Du als „limitierter“ Shell-User (Chrooted Shell = Jailkit) den Befehel ‚php occ …‘ ausführen willst, musst Du zwei Änderungen an der Nextcloud-Konfiguration vornehmen. Wir verwenden dafür eine eigene Konfiguration, die bei einem Update nicht überschrieben wird und automatisch erkennt, ob ein Aufruf über die Shell oder die Webseite erfolgt.

Auf unseren Managed-Servern kannst Du Dir die custom.config.php direkt in ISPConfig für die jeweilige Webseite anzeigen lassen und kannst diese direkt in den config-Ordner per FTP hochladen.

In dieser Anleitung steht zwar nur Shell, das gilt aber auch alles für Cron-Jobs, die ‚Chrooted‘ ausgeführt werden.

Um den Modus zu finden, in dem ein Cron-Job ausgeführt wird, öffnest Du in ISPConfig den entsprechenden Cron-Job:

Im folgenden Beispiel ist unsere Webseite mit der Nextcloud-Installation im Verzeichnis /var/www/clients/client3/web1602/web installiert. Das Verzeichnis findest Du übrigens in ISPConfig bei einer Webseite im ersten Teil von „Abweichendes Document Root“, wenn Du den Bereich „Erweitert“ aufklappst.

Werte in der Nextcloud-Konfiguration anpassen

  1. datadirectory
    Ein Chrooted Shell-User kann nicht auf den kompletten Pfad der Webseite /var/www/clients/client3/web1602/web zugreifen. Daher muss das datadirectory „umgeschrieben“ werden, wenn Du über die Shell „php occ“ ausführen willst. Wir verwenden dazu einfach eine custom.config.php.
  2. dbhost
    Beim dbhost kannst Du nicht localhost verwenden. PHP verwendet bei localhost eine Verbindung über das Socket-File, da eine solche Verbindung am schnellsten ist. In einer Chrooted-Shell steht das Socket-File aber nicht zur Verfügung und Du bekommst den Fehler „Doctrine\DBAL\Exception: Failed to connect to the database“. Entweder stellst Du in der config.php den ‚dbhost‘ von ‚localhost‘ auf ‚127.0.0.1‘ um (dann erfolgt die Verbindung immer über TCP/IP ist langsamer) oder Du verwendest einfach unsere custom.config.php.

custom.config.php anlegen

Im config-Verzeichnis der Nextcloud-Installation legst Du die Datei custom.config.php an bzw. erstellst diese auf Deinem PC und lädst die erstellte Datei dann per FTP in das config-Verzeichnis.

Du musst in der custom.config.php nur zwei Stellen für Deine Nextcloud-Installation anpassen:

  • $basedir – hier trägst Du den Pfad zu Deiner Webseite an, wie sie in ISPConfig angezeigt wird und lässt nur ‚/web‘ am Ende weg.
  • $dir – darüber wird das data-Verzeichnis von Nextcloud gesetzt. Bei den meisten Installation liegt das data-Verzeichnis mit im Document-Root der Webseite. Wenn Du Dich per FTP anmeldest, kannst Du das Verzeichnis leicht finden:

Die custom.config.php sieht in unserem Beispiel so aus:

<?php
$basedir = '/var/www/clients/client3/web1601';
$dbhost = null;
if(php_sapi_name() != 'cli') {
  $dir = $basedir;
} else {
  $dbhost = '127.0.0.1';
  $dir = (!is_dir($basedir)) ? '' : $basedir;
}
$dir .= '/web/data';
$CONFIG['datadirectory'] = $dir;
if($dbhost !== null) $CONFIG['dbhost'] = $dbhost;