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 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.

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.