−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS

Een VPS back-uppen met restic (versleuteld, extern)

Versleutelde, gededupliceerde VPS-back-ups met restic: een repository op S3-compatibele opslag of een andere server, een systemd-timer, retentie en een hersteltest.

Iedereen heeft back-ups tot hij er een probeert terug te zetten. De map blijkt leeg, de cronjob is in maart gestorven, of het archief staat op dezelfde schijf die net is uitgevallen. restic lost het meeste daarvan op: het versleutelt aan jouw kant, slaat elk stuk data één keer op en maakt het terugzetten van één bestand net zo makkelijk als het back-uppen van de hele server.

Dit is een opzet die wij echt zouden vertrouwen, op Ubuntu of Debian.

1. Installeer restic

apt update && apt install -y restic
restic self-update

Distributiepakketten lopen achter; self-update haalt de actuele release op.

2. Kies een plek voor de repository

De repository mag niet op de server staan die je beschermt. Twee gangbare keuzes:

3. Sla de inloggegevens op

Houd alles in één bestand dat alleen root kan lezen, zodat de timer en je shell dezelfde instellingen gebruiken:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

Kopieer nu de inhoud van /root/.restic-pass naar je wachtwoordmanager. Zonder dat wachtwoord kunnen de back-ups niet worden ontsleuteld — niet door jou en door niemand anders.

4. Initialiseer en maak de eerste back-up

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

Pas de paden aan naar waar je data echt staat. Docker-volumes staan onder /var/lib/docker/volumes; applicatiedata vaak in /srv of /opt.

5. Databases: eerst dumpen, dan back-uppen

Back-up niet de ruwe bestanden van een draaiende database. Maak vlak voor de back-up een dump:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

Voeg /var/backups/db toe aan de back-uppaden. Onze PostgreSQL-handleiding gaat dieper in op dumps.

6. Plan het met systemd

Een timer is hier beter dan cron: hij logt naar het journal en haalt een gemiste run in als de server op dat moment uit stond.

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune bewaart 7 dagelijkse, 4 wekelijkse en 6 maandelijkse snapshots en verwijdert de rest. Heb je een stap voor een databasedump, zet die dan in een regel ExecStartPre=.

7. Zet echt iets terug

Dit is de stap die "we hebben back-ups" tot een feit maakt. Haal één map terug naar een tijdelijke map en bekijk hem:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

Doe dit nu één keer en daarna om de paar maanden. restic check controleert de structuur van de repository; het terugzetten bewijst dat de data er echt is.

restic en Managed Backups

Ze concurreren niet. Managed Backups maken dagelijks een herstelpunt van de hele server dat je vanuit het paneel terugzet — de snelle oplossing na een mislukte upgrade. Ze kosten $2 per maand en zitten gratis bij elk jaarplan. restic geeft je externe kopieën op bestandsniveau in opslag die jij beheert, en dat telt als het probleem een bestand is dat vorige dinsdag is verwijderd, of als je een kopie volledig buiten onze infrastructuur wilt.

Bewaar je gevoelige data, combineer dit dan met volledige schijfversleuteling, of bekijk de toepassing versleutelde opslag om je eigen back-upbestemming te draaien. Een Micro-plan is genoeg voor de meeste kleine servers plus hun back-uptaken.

FAQ

Wat gebeurt er als ik het restic-wachtwoord kwijtraak?

Dan zijn de back-ups voorgoed weg. restic versleutelt alles aan de clientkant en er is geen herstelsleutel. Bewaar het wachtwoord in een wachtwoordmanager, niet alleen op de server die je back-upt.

Waar moet de repository staan?

Overal behalve op de server zelf: S3-compatibele objectopslag, een andere VPS via SFTP of een machine thuis. Een back-up op dezelfde schijf gaat samen met die schijf verloren.

Hoe back-up ik een database met restic?

Maak eerst een dump en back-up die dump — voor PostgreSQL 'pg_dump -Fc', voor MySQL 'mysqldump --single-transaction'. Het kopiëren van bestanden van een draaiende database kan een back-up opleveren die niet start.

Hoeveel ruimte nemen de back-ups in?

Minder dan je denkt. restic knipt bestanden in stukken en slaat elk stuk één keer op, dus dagelijkse snapshots van een server die weinig verandert voegen alleen de gewijzigde data toe.

Heb ik Managed Backups dan nog nodig?

Ze lossen verschillende problemen op. Managed Backups geven je dagelijkse herstelpunten van de hele server, die je vanuit het paneel terugzet. restic geeft je externe kopieën op bestandsniveau die jij beheert. Veel mensen gebruiken beide.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.