Nextcloud Cron

Ich stand vor dem Problem, dass mein Nextcloud Client auf dem Desktoprechner bei jeder Dateiänderung das gesamte Serververzeichnis gescannt hat. Eine Lösung des Problems ist per Cron den Index aller Dateien aktuell zu halten.

Nextcloud Logo
raspithek.de - Olli Graf
nc-logoCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Nextcloud Logo

Nextcloud verwaltet eine Übersicht aller gespeicherten Dateien in seiner Datenbank. Aktualisiert diesen Index aber nicht so oft, wie wünschenswert wäre. Die Lösung ist, per Cronjob diesen häufiger zu aktualisieren.

Nextcloud Cron Konfiguration

Auf der Übersichtsseite der Administrationsseite von Nextcloud wurde mir eine Warnung ausgegeben, dass das letzte Indexupdate schon eine Weile her ist. Deshalb habe ich zunächst in den Grundeinstellungen den Cronmechanismus konfiguriert.

Einstellung des Cronmechanismus
raspithek.de - Olli Graf
admin-cronCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Einstellung des Cronmechanismus

Davon verschwand die Warnung leider auch noch nicht. Daher habe ich testweise mal das cron.php Script im Container manuell gestartet.

docker exec -u www-data nextcloud php -f /var/www/html/cron.php

Danach war die Warnung tatsächlich verschwunden. Allerdings nur für ca. 24h.

Cron Container

Die erste Lösung, die mir jetzt einfiel, war, auf dem Raspberry Pi einen CronTab Eintrag anzulegen, der das Kommando oben regelmäßig ausführt. Das habe ich aber schnell als unelegant verworfen und stieß auf die Lösung, einen zweiten Nextcloud Container für den Hintergrundjob aufzusetzen und habe meine docker-compose.yml um einen weiteren Eintrag erweitert.

nextcloud-cron:
    image: nextcloud:latest
    container_name: nextcloud-cron
    restart: always
    entrypoint: /cron.sh
    command:
      - -c
      - |
        echo "*/5 * * * * www-data pgrep -f 'cron.php' > /dev/null || php -f /var/www/html/cron.php" > /etc/crontabs/root
        crond -f -l 2
    volumes:
      - /mnt/nextcloud/nextcloud/html:/var/www/html
      - /mnt/nextcloud/nextcloud/apps:/var/www/html/custom_apps
      - /mnt/nextcloud/nextcloud/config:/var/www/html/config
      - /mnt/nextcloud/nextcloud/data:/var/www/html/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    networks:
      - nextcloudnet

Der zweite Container benutzt das selbe Image wie der nextcloud Container. Allerdings der entrypoint: auf /cron.sh gesetzt. Außerdem wird bei der Erzeugung des Containers über den command: Eintrag die CronTab für den root User im Container erweitert, der cron.php alle 5 Minuten startet. Die Volumes sind identisch zum Hauptcontainer.Damit die beiden Container kommunizieren können, haben sie das gleiche network:

Das ist eigentlich schon das ganze Geheimnis.

Fazit

Nextcloud benötigt für eine performante Arbeitsweise einen aktuellen Dateiindex. Mit der hier gezeigten Methode wird dieser spätestens nach 5 Minuten automatisch aktualisiert.

Schreibe einen Kommentar

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
raspithek.de - Olli Graf
WordPress Cookie Hinweis von Real Cookie Banner