Attivare l'esecuzione automatica di Nextcloud Cron con un timer Systemd

Quando la pagina di amministrazione di Nextcloud indica che i processi in background non sono stati eseguiti di recente, la pulizia, le notifiche e altre attività pianificate potrebbero subire dei ritardi. Su un server systemd, la soluzione consiste solitamente nell'eseguire Nextcloud cron.phpcon l'account del server web tramite un servizio systemd, quindi pianificare l'esecuzione di tale servizio con un timer abilitato. Il manuale di amministrazione di Nextcloud fornisce un esempio con due unità; i percorsi e l'account di servizio devono corrispondere alla propria installazione.

Verifica prima cosa non funziona

I processi in background di Nextcloud vengono eseguiti quando cron.phpviene richiamato. Un servizio systemd definisce il comando da eseguire; un timer avvia tale servizio a intervalli regolari. Se il servizio viene eseguito manualmente ma il timer non si attiva mai, è necessario concentrarsi sull'attivazione del timer. Se il timer si attiva ma il servizio fallisce, è necessario esaminare il comando, l'ambiente PHP e i permessi.

Prima di apportare qualsiasi modifica, verifica la directory Nextcloud e l'utente HTTP effettivi. Questo esempio presuppone l'utilizzo /var/www/nextclouddi e www-data, comuni su Debian e Ubuntu. L'account potrebbe essere wwwrun, apache, o un altro utente su sistemi diversi. Nextcloud richiede l'esecuzione dei suoi processi da riga di comando come utente HTTP per garantire la coerenza della proprietà dei file. Consulta la documentazione occ di Nextcloud .

Prova lo stesso eseguibile PHP e lo stesso script cron che intendi utilizzare con systemd:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

Sostituisci l'account, il percorso PHP e il percorso Nextcloud con quelli del tuo host. Se il comando segnala un errore PHP, un'estensione mancante, un problema di autorizzazione, la modalità di manutenzione o un errore di connessione al database, risolvi prima questo problema; il timer non può correggere un comando non riuscito.

Conferma che Nextcloud utilizzi il cron di sistema.

Apri le impostazioni di amministrazione → Impostazioni di base → Processi in background e seleziona Cron se non è già selezionato. Puoi anche eseguire questo comando dalla directory di Nextcloud:

cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron

Nextcloud precisa che selezionare Cron nelle impostazioni di amministrazione non è strettamente necessario se cron.phplo script viene eseguito dalla riga di comando, poiché la modalità viene impostata automaticamente. Impostandola esplicitamente, la modalità di produzione desiderata risulta chiara. Nextcloud consiglia di utilizzare cron di sistema per gli ambienti di produzione; la documentazione relativa ai processi in background include anche i timer di systemd come alternativa per la pianificazione.

Riparare il servizio systemd

Crea o aggiorna /etc/systemd/system/nextcloudcron.servicecon il seguente contenuto. Usa il percorso completo di PHP in modo che systemd non dipenda da una shell interattiva PATH.

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Passa Userall'account del server web e imposta entrambi i percorsi alle posizioni PHP e Nextcloud corrispondenti. La condizione verifica che l'istanza funzioni normalmente prima di eseguire il job. Se la condizione non viene soddisfatta, systemd potrebbe saltare il servizio; verifica se Nextcloud è in modalità di manutenzione e controlla il journal prima di rimuovere o modificare la condizione. Mantieni KillMode=process, come nell'esempio di Nextcloud, in modo che i programmi esterni avviati da cron possano continuare dopo la terminazione del processo cron. L'unità di servizio non necessita di una [Install]sezione.

Ripara e abilita il timer

Crea /etc/systemd/system/nextcloudcron.timer. Questa pianificazione inizia cinque minuti dopo l'avvio e poi attende cinque minuti dopo ogni attivazione del servizio:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

Riavvia systemd in modo che legga i file di unità, quindi abilita e avvia il timer con un unico comando:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

L'attivazione fa sì che il timer si avvii ai successivi avvii; --nowlo avvia immediatamente. Non abilitare il servizio stesso come se fosse un timer ricorrente. Il timer è l'unità che appartiene a timers.target. Il manuale attuale di Nextcloud spiega queste impostazioni di intervallo e il comando di attivazione necessario; le versioni precedenti del manuale includevano una sezione di installazione obsoleta per il servizio, quindi segui invece l'esempio dell'unità corrente.

Individua una corsa mancata e verifica la correzione

Verifica lo stato del timer e la prossima esecuzione programmata:

systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer

Il timer dovrebbe indicare se è in attesa o attivo e l'elenco dovrebbe mostrare l'orario della prossima attivazione. Quindi, esamina l'ultima esecuzione del servizio:

systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today

Un timer può rimanere attivo anche quando ogni esecuzione del servizio fallisce, quindi è necessario esaminare entrambe le unità. Se il servizio non è presente o systemd rifiuta il file, eseguire systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, correggere il problema di sintassi o di percorso segnalato, quindi ricaricare systemd. Se il servizio termina con un errore, l'output del journal spesso identifica un percorso PHP non valido, un utente errato, una condizione non riuscita o un errore di runtime di Nextcloud. Se il timer non ha una prossima esecuzione, verificare il nome esatto del file del timer, eseguire daemon-reloade confermare che sia stato abilitato con systemctl is-enabled nextcloudcron.timer.

Dopo la successiva attivazione del timer, controlla nuovamente lo stato dei processi in background di Nextcloud. Dovrebbe mostrare un orario di esecuzione recente anziché un avviso di attività obsolete. Se sia il timer che il servizio segnalano esecuzioni riuscite, ma la pagina di amministrazione continua a mostrare un orario obsoleto, controlla i log dell'istanza e la versione di PHP utilizzata dal server web; la versione di PHP da riga di comando potrebbe differire da quella del runtime web. Questa configurazione riguarda la pianificazione di systemd su un normale host Linux. Le installazioni containerizzate e appliance potrebbero gestire cron tramite il proprio supervisore dei servizi, quindi utilizza il metodo supportato da tale piattaforma anziché aggiungere unità host che non possono accedere ai file del container.

Lascia un commento

Attivare l'esecuzione automatica di Nextcloud Cron con un timer Systemd

Controlla la modalità cron di Nextcloud, ripara il servizio systemd e il timer e verifica che i processi in background vengano eseguiti dopo l'avvio e ogni cinque minuti.

Rimuovi l'avviso di blocco dei file di Nextcloud con Redis

Abilita il blocco affidabile dei file in Nextcloud, scegli il backend Redis o Valkey più adatto e verifica che l'avviso scompaia senza rischiare modifiche simultanee ai file.

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Risolvi i problemi più comuni riscontrati durante le scansioni di Nextcloud con gli aggiornamenti più recenti, HTTPS e HSTS, una configurazione precisa del proxy inverso e verifiche rispetto al server pubblico.

Abilita la crittografia lato server di Nextcloud con un impatto misurabile

Configura Nextcloud SSE per lo spazio di archiviazione che lo richiede, proteggi le chiavi di crittografia e misura l'impatto sul trasferimento dati e sulla CPU prima di crittografare i file esistenti.

Aggiungi la ricerca full-text di Elasticsearch a Nextcloud

Collega la ricerca file di Nextcloud a Elasticsearch, indicizza il contenuto dei documenti e scegli una configurazione adatta alle esigenze del tuo server e della tua sicurezza.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Configura Nextcloud per rimuovere i file eliminati dopo un periodo di conservazione definito, pianifica in modo affidabile le attività in background ed evita i comandi che svuotano il cestino di tutti gli utenti.

Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.

Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.

Esegui in modo sicuro la riparazione OCC di Nextcloud, visualizza in anteprima le modifiche al database e verifica il motivo per cui l'avviso potrebbe persistere.

Aumentare il limite di caricamento web di Nextcloud oltre i 2 GB

Aumentare il limite di caricamento web di Nextcloud oltre i 2 GB

Consenti il ​​caricamento di file di dimensioni maggiori nel browser Nextcloud allineando le impostazioni di PHP, Nginx o Apache, dello spazio di archiviazione temporaneo e del timeout, e verifica quale limite sta bloccando il file.

Rimuovi l'avviso di memoria PHP di Nextcloud sul server web

Imposta il limite di memoria PHP effettivamente utilizzato da Nextcloud, riavvia il servizio corretto e conferma l'impostazione di 512 MB nella Panoramica di amministrazione.

Collega un bucket compatibile con S3 allo storage esterno di Nextcloud.

Monta un bucket di object storage compatibile in Nextcloud utilizzando il suo backend S3, con l'endpoint, le credenziali, l'ambito di accesso e i passaggi di verifica corretti.