Nextcloud bauen mit Jet #06

      21 Kommentare zu Nextcloud bauen mit Jet #06

Restarbeiten f├╝r die Optimierung der Cloud

Damit die Cloud nun auch wirklich rund l├Ąuft, haben wir noch einige Einstellungen anzupassen.

Hierzu werden wir uns um folgende Fehler k├╝mmern:

  • Die PHP-Speichergrenze liegt unterhalb des empfohlenen Wertes von 512MB.
  • Der HTTP-Header „Strict-Transport-Security“ ist nicht auf mindestens 15552000 Sekunden eingestellt. F├╝r mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen erl├Ąutert ist.
  • Dein Web-Server ist nicht richtig eingerichtet um „/.well-known/caldav“ aufzul├Âsen. Weitere Informationen findest Du in der Dokumentation.
  • Dein Web-Server ist nicht richtig eingerichtet um „/.well-known/carddav“ aufzul├Âsen. Weitere Informationen findest Du in der Dokumentation.
  • Es wurde kein PHP-Memory-Cache konfiguriert. Zur Erh├Âhung der Leistungsf├Ąhigkeit kann ein Memory-Cache konfiguriert werden. Weitere Informationen findest Du in der Dokumentation.
  • In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzuf├╝gen von Indizes in gro├čen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausf├╝hren von „occ db:add-missing-indices“ k├Ânnen die fehlenden Indizes manuell hinzugef├╝gt werden, w├Ąhrend die Instanz weiter l├Ąuft. Nachdem die Indizes hinzugef├╝gt wurden, sind Anfragen auf die Tabellen normalerweise schneller.
    • Fehlender Index „calendarobject_calid_index“ in der Tabelle „oc_calendarobjects_props“.
    • Fehlender Index „schedulobj_principuri_index“ in der Tabelle „oc_schedulingobjects“.
  • Dieser Installation fehlen einige empfohlene PHP-Module. F├╝r bessere Leistung und bessere Kompatibilit├Ąt wird dringend empfohlen, diese zu installieren.
    • intl
    • imagick
  • Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das ├ändern von Spaltentypen bei gro├čen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch ge├Ąndert. Durch Ausf├╝hren von „occ db:convert-filecache-bigint“ k├Ânnen diese ausstehenden ├änderungen manuell ├╝bernommen werden. Diese Operation muss ausgef├╝hrt werden, w├Ąhrend die Instanz offline ist. Weitere Einzelheiten findest Du auf der zugeh├Ârigen Dokumentationsseite.
    • mounts.storage_id
    • mounts.root_id
    • mounts.mount_id

Um die gezeigten Fehlermeldungen und Warnungen wegzubekommen, installieren wir erst einmal folgende Module nach, aktivieren ein bereits vorandenes Apache Modul und laden den Apache2 neu:

sudo apt install php-intl php-imagick php-apcu
a2enmod headers
systemctl reload apache2

In der PHP Konfiguration erh├Âhen wir das Speicherlimit und bereiten alles f├╝r die OPCachenutzung vor. Dazu suchen wir in der Datei /etc/php/7.3/apache2/php.ini nach den untenstehenden Eintr├Ągen und bearbeiten sie wie folgt (Sollte die Zeile mit einem ; beginnen, dann muss dieses entfernt werden:

memory_limit = 512M
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1 
opcache.save_comments=1

Nun passen wir unsere Apachekonfiguration unter /etc/apache2/sites-available/000-default.conf wie folgt an:

Vorher

<VirtualHost *:80>
 DocumentRoot /var/www/nextcloud
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
 <VirtualHost *:443>
  DocumentRoot /var/www/nextcloud
  SSLEngine on
  SSLCertificateFile /var/cert/server.crt
  SSLCertificateChainFile /var/cert/server.csr
  SSLCertificateKeyFile /var/cert/server.key
 </VirtualHost>
</IfModule>

Nachher

<VirtualHost *:80>
 DocumentRoot /var/www/nextcloud
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
 <VirtualHost *:443>
  DocumentRoot /var/www/nextcloud
  SSLEngine on
  SSLCertificateFile /var/cert/server.crt
  SSLCertificateChainFile /var/cert/server.csr
  SSLCertificateKeyFile /var/cert/server.key
  <IfModule mod_headers.c>
   Header always set Strict-Transport-Security "max-age=15768000; preload"
   Redirect 301 /.well-known/carddav /remote.php/dav
   Redirect 301 /.well-known/caldav /remote.php/dav
  </IfModule>
 </VirtualHost>
</IfModule>

Nun m├╝ssen wir noch wir noch die Datenbank optimieren. Hierzu stellt aber die Nextcloud die passenden Tools bereits selber zur Verf├╝gung:

cd /var/www/nextcloud
sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ db:convert-filecache-bigint

Nun fehlt nur noch die Aktivierung des PHP Caches. Diesen schalten wir in der Konfiguration der Nextcloud selber frei. Dazu bearbeiten wir die Datei /var/www/nextcloud/config/config.php und f├╝gen folgende Zeile in das Array ein. (Bitte hier sehr drauf achten, dass keine Schreibfehler sich einschleichen. Am Besten an den bestehenden Zeilen orientieren)

'memcache.local' => '\OC\Memcache\APCu',

Zum Schluss laden wir noch einmal den Apache neu und die Fehlermeldungen und Warnungen sollten geschichte sein.

systemctl reload apache2

21 thoughts on “Nextcloud bauen mit Jet #06

  1. Fred

    Dann m├Âchte ich mal einen Kommentar schreiben.
    Meist schreibt man ja nur, wenn es Probleme gibt, aber die gab es nicht, also bis hier hin alles OK. Schauen wir mal wann und wie es weiter geht. Ich habe mal mit NexcloudPi angefangen, nun das ich mich sehr gut damit angefreundet habe, wollte ich mal von Grund auf alles selber machen, was wie ja schon gesagt, nach deiner Anleitung super funktioniert hat. Evtl schreibe ich noch mal was zum Certifkat, da stellen sich noch eineige Fragem da ich die in NextcloudPi mit Letscrypt auch schon erstellt hatte, um von au├čern erreicbar zu sein.

    Danke

    1. jet0jlh Post author

      Vielen Dank f├╝r die netten Worte.
      Wenn du bereits LetsEncrypt Zertifikate hast ist das um ein vielfaches besser.
      Da ich in meiner Tutorialserie m├Âglichst vielen Leuten das Mitmachen erm├Âglichen wollte, hab ich mich f├╝r selbst ausgestellte Zertifikate entschieden.
      Bei LetsEncrypt ben├Âtige ich eine ├Âffentliche Domain (Entweder mit ner Statischen IP + Domain, oder ├╝ber DynDNS) + eine Portweiterleitung. Da scheitern leider viele daran.

        1. jet0jlh Post author

          Wenn eine dynamische DNS Adresse bereits eingerichtet ist, kannst du den Certbot von LetsEncrypt installieren und diesen f├╝r deine DNS Domain ein Zertifikat ausstellen lassen.
          Dies kann dann Anstelle des eigen ausgestellten Zertifikats verwendet werden.

  2. Wolfgang Arnhold

    Hallo,
    herzlichen Dank f├╝r Deine super leicht verst├Ąndlichen Anleitungen und Deine Arbeit!! Hat alles super geklappt, bis auf das ich kein Schlo├č im Google Chrome Browser bekomme! Die Verbindung ist nicht sicher und ich habe keinen Plan. K├Ânnte es helfen die 3 Dateien in cert nochmal neu zu generieren?

    1. jet0jlh Post author

      Die Zertifikate sind selbst ausgestellt und sind daher immer nicht vertrauensw├╝rdig. Die Seite ist dadurch allerdings keineswegs unsicher. Die verschl├╝sselte Verbindung ist trotzdem aktiv.

    1. jet0jlh Post author

      Gute Frage. ­čśů
      Spontan klingt das wieder nach einer Apache Webserver Einstellung.
      Du k├Ânntest versuchen folgendes in die Einstellung deines Virtualhosts (/etc/apache2/sites-available/000-default.conf) hinzuzuf├╝gen: RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
      Dort gibt es ja bereits die 301 Weiterleitungen f├╝r Webdav und Caldav. Ich kann dir leider nichts versprechen, da ich den Fehler selber nicht habe um es selbst auszutesten.

  3. Harald

    Hallo Jet,

    Ich war so stolz das ich die Nextcloud nach deiner tollen Anleitung ohne Fehlermeldungen zum laufen gebraucht hatte. „Vielen Dank“
    Jetzt hab ich aber ein Problem das ich alleine nicht l├Âsen kann und hoffe du kannst mir hier weiterhelfen.
    Anscheinend existiert die Datei .ocdata nicht mehr und ich weis nicht wie ich das l├Âsen kann. (Google verwirrt mich nur)

    Nextcloud Sicherheits & Einrichtungswarnung:
    „Die Ausf├╝hrung des Cron-Jobs ├╝ber die Kommandozeile war nicht m├Âglich. Die folgenden technischen Fehler sind dabei aufgetreten:“
    „Dein Datenverzeichnis ist ung├╝ltig Stelle sicher, dass eine Datei „.ocdata“ im Wurzelverzeichnis des data-Verzeichnisses existiert.“

    Danke

    1. jet0jlh Post author

      Das klingt so, als ob du die Einstellung der Hintergrund-Aufgaben von AJAX auf Cron umstellen wolltest und es nun deswegen crasht. Kann das sein?
      Ich selbst hab meine gro├če Cloud auch immer noch auf AJAX laufen, sollte das aber eventuell echt bald mal anpassen. Dann wirds da vermutlich auch ein Video, bzw. Artikel zu geben.
      Ich hab mir die Datei auf meiner Cloud mal angesehen. Sie existiert wirklich im Datenverzeichnis, ist aber leer. Daher k├Ânntest du diese Datei vermutlich einfach wieder erzeugen und eventuell damit den Fehler beheben.
      Die Befehle sind wie folgt, wenn du die Cloud nach den Artikeln/Videos erstellt hast (Ansonsten halt die Pfade anpassen):
      touch /media/festplatte/nextcloud/.ocdata
      chown www-data:www-data /media/festplatte/nextcloud/.ocdata

      Damit erzeugst du die Datei und berechtigst den Benutzer des Webservers darauf.
      Ich hoffe damit l├Âst sich das Problem ­čśŐ

      1. Harald

        Danke f├╝r deine Schnelle Antwort,

        hat leider nicht funktioniert.
        Evtl. hat es mir als ich Webmin installiert habe etwas durcheinander gebracht.
        K├Ânnte es daran liegen?
        Habe zuerst Maria dann Webmin und dann die Cloud installiert.

        Werd wohl wieder einen Tag damit verbringen, die Cloud neu aufzusetzen ohne Webmin.

        Besten Dank

        1. jet0jlh Post author

          Mist, dass hei├čt die Meldung bleibt erhalten? Obwohl die Datei dort nun liegt? Das klingt aber eher danach, dass der Pfad nicht passt, oder die Rechte nicht stimmen.
          Eigentlich sollte es nicht an Webmin liegen. Webin l├Ąuft im normalfall auf einem seperaten Webserver auf einem seperaten Port. Von alleine sollte sich da nichts zerst├Âren?

          1. Harald

            Egal, bin schon ziemlich mit meinen Nerven down f├╝r heute.
            Werd morgen die Cloud neu Aufsetzen und hoffen das alles glatt l├Ąuft.

            Danke dir

  4. Harald

    Morgen Jet,

    hab jetzt die Nextcloud in 2,5h neu aufgesetzt ­čÖé
    Status: Alle ├ťberpr├╝fungen bestanden.
    Bevor ich mir die Nextcloud wieder zerst├Âre habe ich vorab einige fragen.
    Kann ich Wenmin jetzt noch installieren?

    Ich w├╝rde zus├Ątzlich gerne eine zweite Festplatte dran h├Ąngen und diese Spiegeln, damit meine Daten falls die sda1 kaputt geht diese gesichert sind.
    Wenn Ja wie geht das?

    Letzte Frage: kann man neben der Nextcloud noch das Pihole installieren?
    Der Pi4/4G sollte das von der Leistung her packen oder?
    Nextcloud und Pihole nutzen die gleichen ports 80/443?
    Kann man das in der /etc/apache2/sites-available/000-default.conf ├Ąndern ohne das es zu Crash kommt?

    Sry f├╝r die vielen Fragen

    1. jet0jlh Post author

      Uii, da hast du ja echt was vor.
      Hier mal die Antworten auf deine Fragen:

      1: Kann ich Wenmin jetzt noch installieren?
      Eigentlich ja. Webmin bringt seinen eigenen Webserver auf dem Port 10000 mit und sollte daher nicht st├Âren.

      2: Zweite Festplatte als Hardwaresicherheit
      Ja das geht und ist eine sehr gute Idee. Allerdings mit etwas konfigurationsaufwand verbunden. Hierbei muss ein sogenanntes RAID ├╝ber z.B. die Software mdadm eingerichtet werden und zum Schluss wird halt das RAID anstelle der Festplatte eingeh├Ąngt.
      Gute Nachrichten. Hierzu hab ich vor einer ganzen Weile ein Video erstellt. Es hat sich an der vorgehensweise aber nicht viel ge├Ąndert. Das machts vielleicht einfacher: https://www.youtube.com/watch?v=-0FEG3jegvg

      3: Kann man neben der Nextcloud noch das Pihole installieren?
      Ja, dass ist von der Leistung her keinerlei Problem und kann ohne weiteres nebenbei laufen.
      Den Knackpunkt hast du allerdings schon selber festgestellt. Die Ports 80 und 443 sind belegt.
      Es gibt hier verschiedene M├Âglichkeiten die Sache anzugehen.
      Die sch├Ânste ist vermutlich den mini Webserver des PiHoles gar nicht erst in Betrieb zu nehmen, sondern Apache direkt den Job mitmachen zu lassen.
      Hier w├Ąre es dann M├Âglich das Pihole entweder ├╝ber eine spezielle Domain, Port oder URL erreichbar zu machen. Allerdings muss man sich da etwas mehr einlesen wie man das im Detail umsetzen m├╝sste.
      Der unsch├Ânere Weg (weil dann zwei Webserver laufen) w├Ąre es den Apache abzuschalten „systemctl stop apache2“, dass Pihole zu installieren, dem Webserver des PiHoldes in seiner Konfiguration einen anderen Port zu geben (Das geht n├Ąmlich) und dann den Apache wieder einzuschalten „systemctl start apache2“
      Klar k├Ânnte man auch dem Apache andere Ports zuweisen, aber dass halte ich f├╝r wenige Zielf├╝hrend der Hauptanwendung nicht die Standardports zu g├Ânnen.

      Ich hoffe ich konnte dir deine Fragen einigerma├čen zufriedenstellend beantworten ­čśů

      1. Harald

        Danke f├╝r deine ausf├╝hrliche Antwort.

        Webmin d├╝rfte kein Problem sein ­čÖé
        Das Raid d├╝rfte ich nach deinem tollen Video auch noch schaffen, sonst meld ich mich nochmal ­čśë
        USB oder SSD was w├╝rdes du empfehlen?

        Nur beim Pihole steig ich echt aus*face palm* das ist als Anf├Ąnger wie ich es bin ein Kampf gegen Windm├╝hlen.
        Das w├Ąre doch ein guter Stoff f├╝r ein neues Video *grins*

        Es wird darauf rauslaufen, das ich mir noch einen Pi kaufen muss/werde und dann das Pihole auf dem betreibe.
        Geht das dann auch wegen den gleichen Ports oder gibts Konflikte?

        sry f├╝r die vielen Fragen

        1. jet0jlh Post author

          Gerne doch, mich freuts wenn ich helfen konnte. ­čśŐ

          Klar meld dich wenns Probleme geben sollte.
          Du meinst vermutlich HDD oder SSD. F├╝r den Raspberry w├╝rde ich immer noch bei HDDs bleiben. Die haben zwar den Nachteil mit der Anlaufgeschwindigkeit. Sind aber noch deutlich g├╝nstiger. Der Raspberry kann die Geschwindigkeitsvorteile der SSD sowieso nicht vern├╝nftig nutzen.

          Ist nicht schlimm wenn du jetzt erst mal einen weiteren Pi daf├╝r verwendest. Ich hab fr├╝her auch f├╝r alle m├Âglichen Dienste einen seperaten Pi hergenommen, da mir das zu hoch war.
          F├╝rs Pi Hole reicht aber bereits ein Pi der ersten Generation. Also muss das nichts teures sein.
          Ja diese Videos mit X Dienste auf einem Raspberry parallel, sind sehr gefragt und ich werd fr├╝her oder sp├Ąter nicht mehr drum rum kommen. Allerdings wird das echt noch ein Aufwand, dass soweit runter zu brechen, dass die Zuschauer grob verstehen was sie da eigentlich tun. Wird lustig da alle zufrieden zu stellen ­čśů

          Gleiche Ports auf verschiedenen Ger├Ąten schlie├čen sich nicht aus. Das PiHole macht daher keinerlei Probleme wenn es auf einem seperaten Pi l├Ąuft.

          Kein Problem f├╝r die Fragen. Ich helf gerne wenn ich kann ­čśŐ

  5. Markus

    Hallo Jet
    1. das tutorial ist erstklassig.
    Folgendes: ich bin dauernd am basteln und ausprobieren mit Nextcloud, Raspi usw.. Ich habe auch noch keine wichtigen Daten usw. auf der NC-Festplatte. Was ist passiert? ich habe meine SD-Karte im Raspi zerschossen.
    Wie komme ich nun an meine Daten auf der Festplatte?
    Gruss aus der Schweiz
    Markus

    1. jet0jlh Post author

      Vielen lieben Dank.
      Zu deinem Problem: Die Daten sind ja nach wie vor auf der Festplatte. Da du vermutlich das Backup Skript noch nicht umgesetzt hast (Sorry, ist noch eine sehr neue Anleitung) wirst du deine Konfiguration der Cloud nicht mehr haben. Aber die Daten sind als Dateien nat├╝rlich noch auf der Festpaltte vorhanden. Da wir aber ein Linux Filesystem verwenden, kannst du dies nicht einfach unter Windows lesen. Hierzu ben├Âtigst du ein Linux (Reicht auch von einem Stick gebootet aus). Vermutlich kann aber auch Apple das Filesystem ohne weiteres lesen.
      Alternativ kannst du nat├╝rlich den Raspberry neu aufsetzen und ├╝ber diesen dann auf die Daten auf der Festplatte zugreifen.

  6. Florian

    Hey Jet,
    du hast alles soweit sehr gut und verst├Ąndlich erkl├Ąrt. Ich habe jedoch noch folgende Fehler Meldung
    „PHP configuration option output_buffering must be disabled“
    Die Nextcloud hat die Version 20.0.1
    Wie kann ich dieses Problem l├Âsen?

    Mit freundliche Gr├╝├čen
    Florian

    1. jet0jlh Post author

      Das scheint ein „Fehler“ zu sein, der erst mit der Version 20 auftritt. Sobald Version 20 als stable Update zur Verf├╝gung steht werde ich einen Beitrag/Video dazu machen.

Schreibe einen Kommentar