Müssen wir OCCWeb ab NC-Version 30 komplett vergessen?

Seit vielen Jahren betreibe ich eine NC bei www.all-inkl.com im Shared-Hosting-Tarif. Keinerlei Zugriff auf irgendeine Befehlszeile.
Bisher war ich OCCWeb immer sehr dankbar, dass ich das Problem damit umgehen konnte.

Dummerweise habe ich vor kurzem - ohne vorher nachzudenken - doch tatsächlich auf NC V30.0.1 upgedatet. Seither bin ich aufgeschmissen und kann keine der empfohlenen DB-Eingriffe mehr vornehmen.

Im englischen Forum fand ich unter https://help.nextcloud.com/t/occ-web-doesnt-work-in-nextcloud-30-0-0/206139 eine angebliche Lösung:
"For version 30 change apps/occweb/lib/Controller/OccController.php with the following code…

<?php

namespace OCA\OCCWeb\Controller;

use Exception;
use OC;
use OC\Console\Application;
use OC\MemoryInfo;
use OCP\IRequest;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Controller;
use OCP\ILogger;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\OutputInterface;
use Psr\Log\LoggerInterface;

class OccController extends Controller
{
  private $logger;
  private $userId;

  private $application;
  private $symphonyApplication;
  private $output;

  public function __construct(ILogger $logger, $AppName, IRequest $request, $userId)
  {
    parent::__construct($AppName, $request);
    $this->logger = $logger;
    $this->userId = $userId;

    // Obtendo o IAppManager como sexto argumento
    $this->application = new Application(
      OC::$server->getConfig(),
      OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class),
      new FakeRequest(),
      OC::$server->get(LoggerInterface::class),
      OC::$server->query(MemoryInfo::class),
      OC::$server->get(\OCP\App\IAppManager::class) // Obtenção do IAppManager
    );
    
    $this->application->setAutoExit(false);
    $this->output = new OccOutput(OutputInterface::VERBOSITY_NORMAL, true);
    $this->application->loadCommands(new StringInput(""), $this->output);    

    $reflectionProperty = new \ReflectionProperty(Application::class, 'application');
    $reflectionProperty->setAccessible(true);
    $this->symphonyApplication = $reflectionProperty->getValue($this->application);
  }

  /**
   * @NoCSRFRequired
   */
  public function index()
  {
    return new TemplateResponse('occweb', 'index');
  }

  /**
   * @param $input
   * @return string
   */
  private function run($input)
  {
    try {
      $this->application->run($input, $this->output);
      return $this->output->fetch();
    } catch (Exception $ex) {
      $this->logger->logException($ex);
      return "error: " . $ex->getMessage();
    }
  }

  /**
   * @param string $command
   * @return DataResponse
   */
  public function cmd($command)
  {
    $this->logger->debug($command);
    $input = new StringInput($command);
    $response = $this->run($input);
    $this->logger->debug($response);
    return new DataResponse($response);
  }

  public function list() {
    $defs = $this->symphonyApplication->all();
    $cmds = array();
    foreach ($defs as $d) {
      array_push($cmds, $d->getName());
    }
    return new DataResponse($cmds);
  }
}

Dort hat er angeblich funktioniert. Wenn ich die OccController.php mit o. g. Code überschreibe, erhalte ich aber nur eine leere weiße Seite.
Immerhin schon mal besser als der bisherige

Interner Serverfehler
Der Server konnte die Anfrage nicht fertig stellen.
[…blablabla]

Auszug aus phpinfo.php:

  • Linux dd17526 6.5.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 15 16:40:02 UTC 2 x86_64
  • PHP 8.3
  • DB: mysql 8.3.14

Meine Fragen:
Hat jemand hier eine Idee, was am o. g. Code noch nicht korrekt sein könnte?
Oder noch besser: Gibt es die Chance, dass sich irgendein NC-Crack der OCCWeb App annimmt und das Ding auch für V30+ weiterentwickelt?

Wenn nicht, dann bin ich am Ende meiner Kunst und muss ab jetzt auf all das verzichten, was mir bisher OCCWeb ermöglicht hat.
Wäre ich doch bloß bei Version 28+ geblieben und hätte ich doch bloß auf alle weiteren Updates verzichtet! Ein Zurück in die gute alte NC-Zeit gibt’s ja wohl leider nicht mehr :roll_eyes:

Mit vorweihnachtlichen Grüßen
Kallle

Hallo @kallle ,

die App ist schon lange tot. Hatte den Autor vor Jahren schon angeschrieben.
Siehe Hinweise hier GitHub - Adphi/occweb

Auch wenn Du sie durch obengenanntet Tipps zum Laufen kriegen würdest, so kann schon die nächste Nextcloud-Version das Thema wiederbringen.

Ich möchte Dir den freundlichen Hinweis geben Dir einen anderen Anbieter zu suchen.
Einen der Nextcloud unterstützt (Weboberfläche für Admin-Tasks oder Shellzugang).

Bei z. B. Hetzner bekommst Du für 5€ im Monat eine Managed Cloud mit 1TB und hast die Sorgen los.

Gruß

Hallo @kallle ,

meine Nextcloud lauft auch bei ALL-INKL.com in einem Webhosting Premium Paket für 9,95 € pro Monat mit SSH.
Upgrade, falls erforderlich, müsste ohne Probleme und irgendwelchen Migrationsaufwand möglich sein.

1 Like

ich habe so das Gefühl, dass bei All-Inkl vielleicht doch nicht alles so “all” inclusive ist. :thinking:

@ManuelS du siehst aber schon, auch dass 5€ << 9,95€ ist?

@kallle

Ich weiß ja nicht, ob du Nextcloud als reine recht kostengünstige Spielsoftware oder zur Verwaltung für dich relevanter Daten verwendest. OCCWeb war schon immer eine Krücke und konnte nicht alle Probleme lösen. Zudem veraltet Nextcloud 28 immer weiter.

Entweder würde ich schauen, ob ich beim Provider den Vertrag upgraden könnte. Oder ich würde meine Daten nehmen und die Nextcloud woanders hosten. Schreibe gerne wie viele Benutzer und Daten du aktell verwaltest und wie wichtig das alles ist. Vielleicht können wir dir dann interessante, vielleicht sogar kostenlose Alternativen einer echten Managed Nextcloud nennen. Bei einer Managed Nextcloud kann sich dann dein Provider um viele deiner Probleme kümmern. Auch kannst du für kleines Geld dir einen V-Server besorgen und darauf kannst dann vom root-Account aus alles notwendige für Nextcloud selbst aufbauen.

Klar sehe ich das. Trotzdem würde ich mir halt überlegen, ob ich für die Ersparnis von 60 € im Jahr oder 17 Ct. am Tag den mit dem Anbieterwechsel verbundenen Aufwand auf mich nehmen würde. Meine Antwort darauf wäre definitiv nein. Doch das muss natürlich jeder für sich entscheiden.

Moin!

Ich habe aktuell NC 3.0.1 oder .2 auf all-inkl im premium Tarif, also inkl. SSH.
Bin sehr zufrieden. Hab mir SSH mit key-file und password eingerichtet und bin bei jedem NC-Update dort mit occ unterwegs.

Die SSH-Einrichtung ist beim allerersten Mal aufregend, danach dann nur noch Routine mit wenigen Klicks (zumal nur bei neuen SSH-Accounts).

Ich empfehle den premium account bei all-inkl sowie die Einrichtung des SSH-Zugangs mit key-file. (Entspricht “Level 9” webhosting bei Hetzner, sicher genauso gut. Mal ganz abgesehen von managed-NC Angeboten.)

LG - Nicolas

2 Likes

Vielen Dank für all die Tipps und Hinweise.
(Warum auch immer hat mich das Forum nicht darüber informiert. Heute habe ich zufällig mal wieder reingeschaut).

Alle meine Kunden nutzen (auf meine Empfehlung) shared-host Tarife bei www.all-inkl.com. Darunter sind aber nur zwei Nextclouds, der große Rest sind unterschiedlich komplexe Webseiten, die mit den gegebenen Möglichkeiten rundum klarkommen. (Ich natürlich auch).

Da ich bisher mit den All-Inkls sehr zufrieden bin, möchte ich meine Kunden nicht zum Wechseln bewegen und habe auch selbst keine Lust auf meine alten Tage noch einmal umzuziehen.

Allerdings haben die Kunden mit Nextcloud-Betrieb auch den PREMIUM-Tarif mit SSH-Zugriff.

Mein Problem: als später Quereinsteiger habe ich das ganze SSH noch nicht verstanden bzw. noch nie genutzt. Deshalb war OCCweb für mich ideal. Gibt es irgendwo eine Anleitung dazu - vorzugsweise in Deutsch?

Liebe Grüße
Kallle

https://all-inkl.com/wichtig/anleitungen/kas#kas_ssh

Hallo @kallle ,

1. Deine Vorbereitung
(ich gehe hier von einem Linux aus, weiß nicht, ob das für Windows auch so geht)
Im Terminal, in deinem Home-Verzeichnis:

ssh-keygen -t ed25519

Alle fehlenden Angaben werden jetzt erfragt:
Dateiname im Unterverzeichnis .ssh? (z.B. nc123_id_ed25519 )
Mit Passphrase? (Eingeben wenns besonders sicher sein soll, sonst Enter.)
Jetzt werden 2 Dateien erstellt: privater und öffentlicher Schlüssel (.pub).
Den Inhalt der .pub Datei in die Zwischenablage kopieren

cat .ssh/nc123_id_ed25519.pub

2. Bei all-inkl einfügen
Steht hier beschrieben:
https://all-inkl.com/wichtig/anleitungen/kas/ssh/dateiverwaltung/aktivierung-von-ssh-nur-im-hauptaccount-moeglich_395.html
Der in die Zwischenablage kopierte öffentliche Schlüssel wird in den untersten Kasten neben SSH-Schlüssel rein gepastet.
Speichern - fertig.
Notiere den neu erstellten SSH-Login (“ssh-w0123456”)

3. Anwendung
Im Terminal lautet der Befehl

ssh -o IdentitiesOnly=yes -i ~/.ssh/nc123_id_ed25519 ssh-w0123456@w0999999.kasserver.com

Wobei “-o IdentitiesOnly=yes” nur dazu da ist, dir Ärger mit der “.ssh/known_hosts” zu ersparen,
“nc123_id_ed25519” steht natürlich für deine neue Schlüsseldatei (ohne .pub),
“ssh-w0123456” ist der neue SSH-Login von all-inkl und
“w0999999” ist dein Hauptaccount bei all-inkl.

Kompliziert?

Dann vereinfachen wir etwas:
Öffne deine ~/.bashrc (oder ~/.bash_aliases wenn du eine hast) und füge eine Zeile hinzu:

alias ssh-nc123='ssh -o IdentitiesOnly=yes -i ~/.ssh/nc123_id_ed25519 ssh-w0123456@w0999999.kasserver.com'

“ssh-nc123” ist ein selbstgewählter Name,
hinterm “=” kommt der Befehl von oben in einfachen Hochkommata.
Speichern und abschließend noch source ~/.bashrc oder source ~/.bash_aliases .

Und jetzt
kannst du im Terminal einfach ssh-nc123 eingeben und wirst dann höchstens noch nach deiner Passphrase gefragt, die du selbst bei der Schlüsselerstellung angegeben hast.
That’s it – YEAH!

Die App OCC Web wurde vom ursprünglichen Entwickler für Nextcloud 30 fit gemacht und am 22.01.2025 die Version 0.2.2 veröffentlicht.