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.
Per un backup affidabile di Nextcloud, metti in pausa l'attività degli utenti, esporta il database e usa Restic per acquisire l'esportazione insieme alle directory dell'applicazione e dei dati. Inserisci l'operazione in uno script con privilegi di root e pianificala con cron; verifica gli snapshot ed esegui un ripristino di prova prima di affidarti alla pianificazione.
Questo esempio presuppone un server Debian o Ubuntu, un'installazione diretta di Nextcloud in /var/www/nextcloud, una directory dati separata in /srv/nextcloud-datae MariaDB. Sostituisci questi valori con i percorsi e il nome del database effettivi. I passaggi sono stati verificati rispetto al Manuale di amministrazione di Nextcloud 35 e alla documentazione di Restic 0.19.1 nell'ottobre 2026.

Le linee guida di Nextcloud per il backup elencano la configurazione, i dati, il database, il tema e le eventuali app personalizzate come le parti importanti da conservare. Il backup dell'intera directory dell'applicazione di solito include la configurazione e le app incluse, ma verifica se le app personalizzate, i temi o la directory dei dati si trovano altrove sul tuo server. Includi ogni singolo percorso nel comando Restic.
La modalità di manutenzione blocca le sessioni esistenti e impedisce nuovi accessi durante l'esecuzione del backup. In questo modo si riduce la probabilità che il database e i file vengano modificati in momenti diversi, ma Nextcloud non sarà disponibile per tutta la durata dell'operazione. Per un archivio dati di grandi dimensioni, è consigliabile pianificare l'operazione in un momento di minore attività del server. Se il server dispone di processi o script esterni che scrivono direttamente nella directory dei dati, è opportuno sospenderli.
Le istruzioni ufficiali di backup di Nextcloud illustrano i componenti e le opzioni di esportazione del database. Questa procedura utilizza MariaDB; per PostgreSQL, MySQL o SQLite, utilizzare i comandi di dump e ripristino corrispondenti nella sezione relativa al database del manuale .
Installa Restic e il client MariaDB utilizzando la fonte di pacchetti attendibile della tua distribuzione. Scegli un repository su un disco diverso o una destinazione di backup remota. Un repository archiviato solo sul server Nextcloud non protegge dalla perdita di tale server o del suo spazio di archiviazione. Non posizionare il repository all'interno di nessuna delle directory di cui si effettua il backup.
Restic crittografa i dati del repository, ma è necessaria la password del repository per ripristinarlo. Crea un file per la password e conservane una copia protetta al di fuori del server, ad esempio in un gestore di password approvato. Se la password viene persa, il repository crittografato non potrà essere letto. Evita di inserire la password direttamente nella riga di comando, in crontab o in uno script.
sudo install -d -m 700 /root/.config/restic
sudo install -m 600 /dev/null /root/.config/restic/nextcloud-password
sudo install -m 600 /dev/null /root/.config/restic/nextcloud.env
Inserisci in modo sicuro la password di Restic scelta nel file delle password. Inserisci il percorso del repository e il percorso del file delle password nel file di ambiente:
RESTIC_REPOSITORY=/mnt/backup/nextcloud
RESTIC_PASSWORD_FILE=/root/.config/restic/nextcloud-password
Per un backend remoto, utilizzare l'URL del repository e le credenziali documentate di tale backend, archiviate con autorizzazioni limitate. Restic documenta la configurazione del repository e la variabile d'ambiente supportata per il file delle password nella sua guida alla preparazione del repository . Inizializzare un nuovo repository una sola volta, non a ogni esecuzione:
set -a
. /root/.config/restic/nextcloud.env
set +a
restic init

Anche le credenziali di MariaDB necessitano di protezione. Configura un file di opzioni client leggibile da root, ad esempio /root/.my.cnfcon l'utente del database, la password e l'host, quindi imposta i suoi permessi su 600. Lo script seguente passa quel file a mariadb-dump, in modo che la password del database non appaia negli argomenti del processo.
Salvare quanto segue come /usr/local/sbin/nextcloud-restic-backup. Modificare NC_DATA_DIRe DB_NAMEin modo che corrispondano a config/config.php. Lo script abilita la modalità di manutenzione, esporta MariaDB, esegue il backup dell'applicazione, dei dati e del dump SQL temporaneo, quindi disabilita la modalità di manutenzione anche se un comando successivo fallisce.
#!/usr/bin/env bash
set -Eeuo pipefail
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NC_DIR=/var/www/nextcloud
NC_DATA_DIR=/srv/nextcloud-data
DB_NAME=nextcloud
RESTIC_ENV=/root/.config/restic/nextcloud.env
DB_CNF=/root/.my.cnf
set -a
source "$RESTIC_ENV"
set +a
exec 9>/run/lock/nextcloud-restic.lock
flock -n 9 || exit 0
mountpoint -q /mnt/backup || {
echo "Backup target is not mounted" >&2
exit 1
}
install -d -m 700 /var/backups/nextcloud
STAGE_DIR=$(mktemp -d /var/backups/nextcloud/db.XXXXXX)
maintenance_on=0
cleanup() {
if [[ "$maintenance_on" -eq 1 ]]; then
sudo -u www-data php "$NC_DIR/occ" maintenance:mode --off ||
logger -t nextcloud-restic "Could not disable maintenance mode"
fi
rm -rf "$STAGE_DIR"
}
trap cleanup EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
sudo -u www-data php "$NC_DIR/occ" maintenance:mode --on
maintenance_on=1
mariadb-dump --defaults-extra-file="$DB_CNF" --single-transaction --default-character-set=utf8mb4 "$DB_NAME" > "$STAGE_DIR/nextcloud.sql"
test -s "$STAGE_DIR/nextcloud.sql"
restic backup "$NC_DIR" "$NC_DATA_DIR" "$STAGE_DIR" --tag nextcloud
Imposta la proprietà e i permessi in modo che solo l'utente root possa modificare o eseguire lo script, quindi testalo manualmente durante una finestra di manutenzione. Il mountpointcontrollo impedisce che un disco di backup mancante invii silenziosamente un repository di grandi dimensioni nel filesystem locale del server. Se il repository è remoto anziché montato localmente, sostituisci questo controllo con un controllo affidabile per il tuo backend.
Prima della prima esecuzione, rivedi i percorsi. Se la cartella dei dati è già presente /var/www/nextcloud, non dare per scontato che il percorso di esempio sia corretto; utilizza la directory dei dati effettiva configurata in Nextcloud. Verifica inoltre che le app o i temi personalizzati archiviati al di fuori della directory dell'applicazione siano inclusi esplicitamente.

Dopo un'esecuzione manuale riuscita, aggiungi una voce crontab di root con sudo crontab -e. Questo esempio avvia il job ogni giorno alle 2:30 utilizzando il percorso completo dello script e registra l'output per la risoluzione dei problemi:
30 2 * * * /usr/local/sbin/nextcloud-restic-backup >> /var/log/nextcloud-restic.log 2>&1
Cron fornisce un ambiente limitato, quindi lo script imposta un orario esplicito PATHe carica direttamente le impostazioni di Restic. Verifica che cron sia abilitato sulla tua distribuzione e che questo orario non si sovrapponga all'esecuzione dei processi in background di Nextcloud o ad altre attività di manutenzione. Il manuale di crontab per Linux descrive il formato della pianificazione e l'ambiente fornito da cron.
Conferma l'esecuzione del processo controllando /var/log/nextcloud-restic.logl'uscita avvenuta con successo e visualizzando gli screenshot recenti:
sudo bash -lc 'set -a; source /root/.config/restic/nextcloud.env; set +a; restic snapshots'
sudo bash -lc 'set -a; source /root/.config/restic/nextcloud.env; set +a; restic check'
La normale procedura di Restic checkverifica la struttura del repository. Una lettura completa dei dati richiede più tempo e potrebbe utilizzare una larghezza di banda significativa per un repository remoto; si consiglia di pianificarla restic check --read-dataperiodicamente o di utilizzarla --read-data-subsetper controllare porzioni di dati nel tempo. Consultare la documentazione di Restic sull'integrità del repository .
Un elenco di snapshot non è un test di ripristino. Ripristina uno snapshot recente in una directory temporanea separata , quindi verifica che i file dell'app, la directory dei dati e il dump SQL siano presenti. Non eseguire il ripristino su un'installazione attiva a scopo di test. Per un ripristino effettivo, ripristina i file e il database come un unico set corrispondente; le istruzioni di ripristinorestic restore latest --target /tmp/nextcloud-restore-test di Nextcloud includono considerazioni sulla ricreazione del database e sulla sincronizzazione del client.
Questa configurazione fornisce snapshot crittografati ripetibili, ma cron non monitora i propri errori e Restic non decide la tua politica di conservazione. Esamina il log o configura gli avvisi per le esecuzioni non riuscite, conserva una copia separata delle credenziali del repository e testa il ripristino a intervalli regolari. Se la finestra di manutenzione è troppo lunga, utilizza snapshot coordinati del filesystem e un'esportazione coerente con il database progettata per la tua piattaforma di archiviazione, anziché eseguire il backup dei file in tempo reale.

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