Automatiseer consistente Nextcloud-backups met Restic en Cron.

Voor een betrouwbare Nextcloud-back-up pauzeert u de gebruikersactiviteit, exporteert u de database en gebruikt u Restic om die export samen met de applicatie- en datadirectory's vast te leggen. Plaats de taak in een script met root-rechten en plan deze in met cron; controleer de snapshots en voer een testherstel uit voordat u op de planning vertrouwt.

Dit voorbeeld gaat uit van een Debian- of Ubuntu-server, een directe Nextcloud-installatie op /var/www/nextcloud, een aparte data-directory op /srv/nextcloud-data, en MariaDB. Vervang deze waarden door uw daadwerkelijke paden en databasenaam. De stappen zijn gecontroleerd aan de hand van de Nextcloud 35-beheerhandleiding en de Restic 0.19.1-documentatie in oktober 2026.

Een donkere terminalillustratie toont het inschakelen van de Nextcloud-onderhoudsmodus vóór een MariaDB-database-export.
Een illustratie in terminalstijl van de twee acties die nodig zijn om een ​​consistente back-up te starten: het inschakelen van de onderhoudsmodus en het exporteren van de database.

Wat moet een Nextcloud-back-up bevatten?

De back-uprichtlijnen van Nextcloud vermelden de configuratie, data, database, thema en eventuele aangepaste apps als de belangrijkste onderdelen om te behouden. Het maken van een back-up van de volledige applicatiemap omvat meestal de configuratie en de meegeleverde apps, maar controleer of aangepaste apps, thema's of de datamap zich elders op uw server bevinden. Voeg elk afzonderlijk pad toe aan de Restic-opdracht.

De onderhoudsmodus vergrendelt bestaande sessies en voorkomt nieuwe aanmeldingen terwijl de back-up wordt uitgevoerd. Hierdoor is de kans kleiner dat de database en bestanden op verschillende momenten wijzigen, maar Nextcloud is gedurende deze tijd ook niet beschikbaar. Plan de taak voor een grote dataopslag in een rustig tijdsvenster. Als uw server externe processen of scripts heeft die rechtstreeks naar de datamap schrijven, pauzeer deze dan ook.

De officiële back-upinstructies van Nextcloud leggen de componenten en de exportopties voor de database uit. Deze procedure maakt gebruik van MariaDB; voor PostgreSQL, MySQL of SQLite gebruikt u de bijbehorende dump- en restore-opdrachten in het databasegedeelte van die handleiding .

Bereid Restic voor en bescherm de inloggegevens.

Installeer Restic en de MariaDB-client via de vertrouwde pakketbron van uw distributie. Kies een repository op een andere schijf of een externe back-uplocatie. Een repository die alleen op de Nextcloud-server is opgeslagen, biedt geen bescherming tegen verlies van die server of de bijbehorende opslag. Plaats de repository niet in een van de mappen waarvan een back-up wordt gemaakt.

Restic versleutelt de gegevens in de repository, maar u hebt het wachtwoord van de repository nodig om deze te herstellen. Maak een wachtwoordbestand aan en bewaar een beveiligde kopie buiten de server, bijvoorbeeld in een goedgekeurd wachtwoordbeheerprogramma. Als het wachtwoord verloren gaat, kan de versleutelde repository niet worden gelezen. Vermijd het rechtstreeks invoeren van het wachtwoord in een opdrachtregel, crontab of 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

Bewaar het gekozen Restic-wachtwoord veilig in het wachtwoordbestand. Voeg de locatie van de repository en het pad naar het wachtwoordbestand toe aan het omgevingsbestand:

RESTIC_REPOSITORY=/mnt/backup/nextcloud
RESTIC_PASSWORD_FILE=/root/.config/restic/nextcloud-password

Gebruik voor een externe backend de gedocumenteerde repository-URL en inloggegevens van die backend, opgeslagen met beperkte machtigingen. Restic beschrijft de configuratie van de repository en de ondersteunde omgevingsvariabele voor wachtwoordbestanden in de handleiding voor repositoryvoorbereiding . Initialiseer een nieuwe repository eenmalig, niet bij elke uitvoering:

set -a
. /root/.config/restic/nextcloud.env
set +a
restic init
Een terminalillustratie toont het pad naar de Restic-repository, het pad naar het wachtwoordbestand en het commando restic init.
Voorbeeldinstellingen voor een versleutelde Restic-repository; het wachtwoord zelf blijft in een apart, beveiligd bestand.

Ook MariaDB-referenties moeten worden beschermd. Configureer een clientoptiebestand dat door root kan worden gelezen, bijvoorbeeld /root/.my.cnfmet de databasegebruiker, het wachtwoord en de host, en stel de machtigingen in op 600. Het onderstaande script geeft dat bestand door aan mariadb-dump, zodat een databasewachtwoord niet in de procesargumenten verschijnt.

Maak een back-upscript dat Nextcloud weer in gebruik neemt.

Sla het volgende op als /usr/local/sbin/nextcloud-restic-backup. Pas NC_DATA_DIRen DB_NAMEaan zodat ze overeenkomen met config/config.php. Het script schakelt de onderhoudsmodus in, exporteert MariaDB, maakt een back-up van de applicatie, de gegevens en een tijdelijke SQL-dump, en schakelt vervolgens de onderhoudsmodus weer uit, zelfs als een latere opdracht mislukt.

#!/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

Stel eigenaarschap en machtigingen zo in dat alleen root het script kan bewerken of uitvoeren, en test het vervolgens handmatig tijdens een onderhoudsvenster. Deze mountpointcontrole voorkomt dat een ontbrekende back-upschijf stilletjes een grote repository naar het lokale bestandssysteem van de server stuurt. Als uw repository zich op afstand bevindt in plaats van lokaal te zijn gekoppeld, vervang deze controle dan door een betrouwbare controle voor uw backend.

Controleer je paden vóór de eerste keer opstarten. Als de datafolder zich al in de map bevindt /var/www/nextcloud, ga er dan niet vanuit dat het voorbeeldpad correct is; gebruik de daadwerkelijke datafolder uit de Nextcloud-configuratie. Controleer ook of aangepaste apps of thema's die buiten de applicatiemap zijn opgeslagen, expliciet zijn opgenomen.

Een terminalillustratie laat zien hoe Restic een back-up maakt van de Nextcloud-applicatiemap, een aparte gegevensmap en een stagingmap voor de SQL-dump.
De Restic-back-up bevat de applicatie, gebruikersbestanden en de database-dump die voor deze back-upsessie is gemaakt.

Plan de cron-taak in en controleer het resultaat.

Voeg na een succesvolle handmatige uitvoering een crontab-item toe aan de rootmap met sudo crontab -e. Dit voorbeeld start de taak dagelijks om 2:30 uur 's nachts met het volledige pad naar het script en registreert de uitvoer voor het oplossen van problemen:

30 2 * * * /usr/local/sbin/nextcloud-restic-backup >> /var/log/nextcloud-restic.log 2>&1

Cron biedt een beperkte omgeving, dus het script stelt een expliciete tijd in PATHen laadt zelf de Restic-instellingen. Controleer of cron is ingeschakeld op uw distributie en of deze tijd niet overlapt met de achtergrondtaak van Nextcloud of een andere onderhoudstaak. De Linux crontab-handleiding beschrijft de indeling van het schema en de omgeving die cron biedt.

Controleer of de taak /var/log/nextcloud-restic.logsuccesvol is afgerond door te kijken of de taak is voltooid en door recente momentopnamen weer te geven:

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'

Restic checkcontroleert standaard de structuur van de repository. Het volledig uitlezen van de gegevens duurt langer en kan aanzienlijke bandbreedte in beslag nemen voor een externe repository; plan dit restic check --read-dataperiodiek in of gebruik het --read-data-subsetom gedeeltes over een bepaalde periode te controleren. Zie de documentatie van Restic over de integriteit van repositories .

Een overzicht van snapshots is geen hersteltest. Herstel een recente snapshot naar een aparte tijdelijke map met de opdracht `npm install` restic restore latest --target /tmp/nextcloud-restore-testen controleer vervolgens of de app-bestanden, de gegevensmap en de SQL-dump aanwezig zijn. Herstel niet over een actieve installatie als test. Voor een daadwerkelijk herstel moet u de bestanden en de database als één geheel herstellen; de herstelinstructies van Nextcloud behandelen het opnieuw aanmaken van de database en de synchronisatie met de client.

Deze configuratie biedt herhaalbare, versleutelde snapshots, maar cron controleert zijn eigen fouten niet en Restic bepaalt uw bewaarbeleid niet. Controleer het logboek of configureer waarschuwingen voor mislukte uitvoeringen, bewaar een aparte kopie van de repository-referenties en test het herstel regelmatig. Als het onderhoudsvenster te lang is, gebruik dan gecoördineerde bestandssysteemsnapshots en een databaseconsistente export die is ontworpen voor uw opslagplatform in plaats van live back-ups te maken van veranderende bestanden.

Een terminalillustratie toont een dagelijkse cron-taak voor het Nextcloud Restic-script naast de restic snapshots-opdracht.
Het schema voert het door root beheerde script dagelijks uit; de momentopname toont een snelle controle of de uitgevoerde scripts zijn geregistreerd.

Laat een reactie achter

Synchroniseer Active Directory-gebruikers met ONLYOFFICE DocSpace via LDAP.

Synchroniseer Active Directory-gebruikers met ONLYOFFICE DocSpace via LDAP.

Verbind ONLYOFFICE DocSpace met Active Directory of OpenLDAP, importeer gebruikers en groepen veilig, koppel accountvelden en plan betrouwbare synchronisatie.

Automatiseer consistente Nextcloud-backups met Restic en Cron.

Automatiseer consistente Nextcloud-backups met Restic en Cron.

Maak een back-up van Nextcloud-bestanden en MariaDB, plan versleutelde Restic-snapshots met cron en controleer het herstel zonder de live server in gevaar te brengen.

Een Zimbra CE-mailbox back-uppen en herstellen met behulp van TGZ-exports.

Een Zimbra CE-mailbox back-uppen en herstellen met behulp van TGZ-exports.

Exporteer een individuele Zimbra Community Edition-mailbox, valideer de TGZ-back-up ervan en herstel ontbrekende items zonder bestaande e-mails te overschrijven.

Debian 12 op een VPS met weinig RAM: Hoe MySQL OOM-crashes te verminderen

Debian 12 op een VPS met weinig RAM: Hoe MySQL OOM-crashes te verminderen

Diagnoseer MySQL OOM-kills op Debian 12, controleer de geheugenlimieten van de VPS, configureer swap en optimaliseer het databasegeheugen en de gelijktijdigheid, zonder een universele oplossing te beloven.

Sta geautoriseerde gebruikers toe om Jitsi-rooms aan te maken met Keycloak-aanmelding.

Sta geautoriseerde gebruikers toe om Jitsi-rooms aan te maken met Keycloak-aanmelding.

Sta alleen goedgekeurde accounts toe om Jitsi Meet-rooms te starten met Keycloak en tokenverificatie, terwijl de mogelijkheid voor gasten om deel te nemen beschikbaar blijft wanneer nodig.

Hoe koppel je automatisch een externe SSHFS-directory bij het opstarten in Debian?

Hoe koppel je automatisch een externe SSHFS-directory bij het opstarten in Debian?

Configureer een SSHFS-opstartmount in Debian met SSH-sleutels, fstab en systemd automount. Inclusief controles op herstarten, machtigingen, time-outs en probleemoplossing.

Plaats ONLYOFFICE-documenten achter HAProxy zonder dat bewerken wordt onderbroken.

Plaats ONLYOFFICE-documenten achter HAProxy zonder dat bewerken wordt onderbroken.

Configureer HAProxy HTTPS, het doorsturen van headers, WebSocket-time-outs en health checks voor ONLYOFFICE Docs en controleer vervolgens of het bewerken en opslaan werkt.

Lettertypen toevoegen aan ONLYOFFICE Document Server: Docker versus Linux

Lettertypen toevoegen aan ONLYOFFICE Document Server: Docker versus Linux

Installeer aangepaste lettertypen in ONLYOFFICE Document Server, vergelijk permanente Docker-koppelingen met directe kopieën, herbouw de lettertypenlijst en controleer het resultaat.

Aangepaste kernelmodules installeren en ondertekenen op SLES 15 Secure Boot

Aangepaste kernelmodules installeren en ondertekenen op SLES 15 Secure Boot

Laad een aangepaste SLES 15-kernelmodule zonder Secure Boot uit te schakelen. Stem de module af op de actieve kernel, onderteken het .ko-bestand, registreer een MOK-sleutel en verifieer het laden.

Beveiligde SLES Syslog-doorsturing met rsyslog en Mutual TLS

Beveiligde SLES Syslog-doorsturing met rsyslog en Mutual TLS

Verzend SLES-systeemlogboeken naar een externe rsyslog-collector via geauthenticeerde TLS, met certificaatcontroles, buffering bij storingen en afleveringstests.