Το Ιστολόγιό Μου

Backups & ο Κανόνας 3-2-1: Το Home Lab που Επιζεί

~11 λεπτά ανάγνωση Επίπεδο: Μέσο Κρίσιμο

Υπάρχουν δύο είδη ανθρώπων στο home lab world: αυτοί που κάνουν backups και αυτοί που θα κάνουν backups — μετά από το πρώτο δίσκο που πεθαίνει. Αυτό το άρθρο σου βάζει το σύστημα που δεν σε προδίδει: απλό, αυτόματο, και τεσταμένο.

3αντίγραφα των δεδομένων σου
(το original + 2 backups)
2σε διαφορετικά μέσα
(π.χ. SSD + εξωτερικός HDD)
1εκτός σπιτιού
(offsite — φίλος/γονείς/cloud)

Τι κάνεις backup (και τι όχι)

Στο Docker home lab τα πολύτιμα είναι tiny: τα volumes/configs, όχι τα images (αυτά ξανακατεβαίνουν). Τυπικά:

  • /opt/stacks/* — όλα τα compose αρχεία + .env
  • App data volumes — Nextcloud data, Immich photos/library + database dumps (Postgres/MariaDB των apps — dump πρώτα, μετά backup το dump)
  • Configs συστήματος — /etc (π.χ. wireguard, cron, fstab), έλεγχος πινάκων DNS του Pi-hole
  • Δεν χρειάζεται: το OS (ξαναβάζεις σε 20'), τα Docker images, τα media αρχεία αν έχεις τα originals αλλού (π.χ. τα δικά σου DVD rips σε κουτί)
DB dump > raw volume backup Το Postgres/MySQL που αντιγράφεις «ζωντανό» με cp μπορεί να βγει διεφθαρμένο. Πρώτα pg_dump/mysqldump μέσα στο container, μετά backup το dump. Για τα under fire Immich/Nextcloud αυτό είναι το βήμα που δεν κάνει ο κόσμος — και μετά θρηνεί.

Snapshot ≠ Sync ≠ Archive

ΤύποςΤι κάνειΠροστατεύει απόΕργαλεία
SyncΚαθρεφτίζει τις αλλαγέςΑπώλεια δίσκου — όχι από λάθος διαγραφή (διαγράφεται κι εκεί!)Syncthing, rsync
Snapshot/Versioned backupΚρατά ιστορικό σημείων στο χρόνο, dedupe, encryptedΛάθος διαγραφή, ransomware, corrupt αρχείαRestic, Borg, Kopia
ArchiveΚρύα αντίγραφα που δεν αγγίζειςΌλα τα παραπάνω μαζίΕξωτερικός δίσκος σε συρτάρι

Θέλεις versioned backup ως κύριο εργαλείο — η sync είναι συμπλήρωμα. Γιατί; Δοκίμασε να διαγράψεις κατά λάθος τον φάκελο «Φωτογραφίες 2019» σε ένα sync setup και θα καταλάβεις.

Restic σε 5 γραμμές (η καρδιά του συστήματος)

# /opt/scripts/backup.sh — τρέχει cron κάθε βράδυ 03:00 export RESTIC_REPOSITORY=/mnt/backupdisk/homelab export RESTIC_PASSWORD_FILE=/opt/scripts/.restic_pass # 1. DB dumps πρώτα docker exec immich-db pg_dumpall -U postgres > /tmp/immich.sql # 2. Versioned, encrypted, deduped backup restic backup /opt/stacks /tmp/immich.sql /etc/wireguard --tag nightly # 3. Διατήρηση: κράτα 7 ημερήσια, 4 εβδομαδιαία, 6 μηνιαία restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Μετά cron: 0 3 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1 — και ένα σενάριο ειδοποίησης στο Uptime Kuma/healthchecks.io όταν αποτύχει.

Το «1» εκτός σπιτιού

  • Δεύτερο σπίτι (φίλοι/γονείς): ένα Raspberry/mini PC ή απλά ένας USB δίσκος + Tailscale — ο Restic pull από το offsite μηχάνημα. Φτηνότερο και πιο γρήγορο από cloud για πρώτη πλήρη επαναφορά.
  • Encrypted cloud (π.χ. B2/Wasabi): το Restic κρυπτογραφεί πριν ανέβει — ο πάροχος δεν βλέπει τίποτα. Κόστος για ~200 GB: λίγα €/μήνα.
  • Προσοχή: δεν στέλνεις unencrypted δίσκο «στον πατέρα» με φωτογραφίες — κρυπτογραφημένο repo πάντα.
Ransomware & immutability Ένα ransomware που τρέχει ως εσύ μπορεί να κρυπτογραφήσει και τα sync targets. Λύσεις: versioned repo με append-only mode (Restic/Borg το υποστηρίζουν από ξεχωριστό host), ή απλά offsite copy που «δεν βλέπει» το κεντρικό μηχάνημα παρά μόνο την ώρα του backup. Το κλασικό «ο δίσκος είναι πάντα συνδεδεμένος» είναι το χειρότερο σενάριο.

Το βήμα που ξεχωρίζει τους ενήλικες: RE-STORE TEST

  1. Κάθε 3-6 μήνες, σε δοκιμαστικό μηχάνημα/VM: restic restore latest --target /tmp/test
  2. Βεβαίωσου ότι ένα Nextcloud volume + ένα Immich dump αναβιώνουν πραγματικά (ξηκώσε προσωρινά τα containers με τα restored volumes)
  3. Κράτα σημείωση «restore πήγαινε καλά, διάρκεια X λεπτά» — όταν έρθει η ώρα (και θα έρθει), θα ξέρεις τι να περιμένεις

Un-tested backup = αγγελτήριο ελπίδας. Μόνο η δοκιμασμένη επαναφορά μετράει.

🔗 Σχετικά Άρθρα

← Home Lab Όλα τα Άρθρα →