Nextcloud CLI und Web mit Netcup

Nextcloud CLI über SSH und Web mit Netcup oder ähnlichen virtuellen Host-Verzeichnissen nutzen

Gepostet von Andreas Nölke am

Hoster wie Netcup bieten SSH Zugriff an um auch CLI Befehle auszuführen. Leider kann das zu Problemen führen wenn man in der SSH Session andere Root-Pfade hat wie wenn man die Nextcloud Instanz im Web besucht. Eine Anpassung in der config.php kann hier Abhilfe schaffen.

Config als readonly markieren

Als erster Schritt ist es wichtig die config als readonly zu markieren. Das ist notwendig, dass Nexcloud nicht auf die idee kommt die Config zu überschreiben.

<?php
$CONFIG = array (
  // andere configurations optionen
  'config_is_read_only' => true,
);

Danach am Ende der Datei einen CLI Switch einfügen.

if (is_cli()) {
    // the CLI path of your nexcloud setup
    $CONFIG['datadirectory'] = '/domain.somewhere.de/config/../data';
    $CONFIG['tempdirectory'] = '/domain.somewhere.de/config/../../tmp/';
} else {
    // the Web path of your nextcloud setup
    $CONFIG['datadirectory'] = '/var/www/vhosts/hostingname/domain.somewhere.de/config/../data';
    $CONFIG['tempdirectory'] = '/var/www/vhosts/hostingname/domain.somewhere.de/config/../../tmp/';
}

/**
 * check if the callee is a CLI or WEB process
 */
function is_cli() 
    if (defined('STDIN')) {
        return true;
    }
    if (empty($_SERVER['REMOTE_ADDR']) && !isset($_SERVER['HTTP_USER_AGENT']) and count($_SERVER['argv']) > 0) {
        return true;
    }
    return false;
}

ALs letztes muss man nun schreibrechte auf die Datei entfernen. Nextcloud würde sonst jedes mal die config Datei neu schreiben und den letzten code part entfernen. Da hilft leider auch das readonly flag nicht weiter.

chmod -w config/config.php

Nun kann man jeglichen occ Befehl ausführen und auch zeitgleich die Nextcloud Instanz im Web benutzen.

Updates durchführen

Wichtig ist zu beachten: Wenn die config.php als readonly markiert ist und die Schreibrechte entfernt wurden, kann Nextcloud keinerlei updates mehr durchführen. Aus dem WEB dann auch nicht. Leider sieht man im Web und in der Konsole keine Fehlermeldungen in diese Richtung.

Um Updates durchzuführen am besten ein Backup der config.php machen.

Dann das readonly flag aus der config entfernen oder auf false setzen.

Danach das Update starten

cp config/config.php config/config-backup.php
chmod 666 config/config.php
/usr/local/php82/bin/php -d memory_limit=512M updater/updater.phar

Ist das update fertig, muss man die config.php wieder manipulieren. Dazu nicht das Backup zurück kopieren, sondern nur wieder das readonly flag auf true setzen und das Code Schnipsel mit der Pfad und CLI Identifikation am ende einfügen.