Διαμόρφωση¶
Αυτή η σελίδα καλύπτει τις μεταβλητές περιβάλλοντος του container, τις προσαρτήσεις που παρέχει το template, το αντίγραφο VM μέσω SSH, και τη ρύθμιση εκτός τόπου. Οι διαδρομές αποθετηρίου των αντιγράφων διαμορφώνονται μέσα στην εφαρμογή (Ρυθμίσεις, Αποθήκευση, Διαδρομές αντιγράφων), όχι μέσω μεταβλητών περιβάλλοντος.
Μεταβλητές περιβάλλοντος¶
| Μεταβλητή | Απαιτείται | Περιγραφή |
|---|---|---|
APP_KEY |
Ναι | Δεκαεξαδικό μυστικό 32 byte (64 δεκαεξαδικοί χαρακτήρες) που χρησιμοποιείται για την παραγωγή του κωδικού του αποθετηρίου restic. Δημιουργήστε το με openssl rand -hex 32. Κρατήστε το ασφαλές: η απώλειά του καθιστά τα κρυπτογραφημένα αντίγραφα μη ανακτήσιμα. |
LIBVIRT_HOST |
Για VMs και σύνολα δεδομένων ZFS | Ο host Unraid που προσεγγίζεται μέσω SSH για το αντίγραφο VM (προεπιλογή host.docker.internal· το template προσυμπληρώνει ένα placeholder LAN-IP). Χρησιμοποιήστε τη LAN IP του Unraid σας, απαιτείται σε ένα προσαρμοσμένο δίκτυο br0.x. Χρησιμοποιείται και για αντίγραφα συνόλων δεδομένων ZFS (πεδίο προτύπου Host SSH: Address)· η τιμή κράτησης θέσης 192.168.x.x θεωρείται μη ορισμένη. |
LIBVIRT_SSH_PORT |
Όχι | Η θύρα SSH του host για το αντίγραφο VM (προεπιλογή 22). Πεδίο προτύπου Host SSH: Port, και για σύνολα δεδομένων ZFS. |
LIBVIRT_SSH_USER |
Όχι | Ο χρήστης SSH στον host για το αντίγραφο VM (προεπιλογή root). Πεδίο προτύπου Host SSH: User, και για σύνολα δεδομένων ZFS. |
LIBVIRT_URI |
Όχι | Πλήρες URI σύνδεσης libvirt, που χρησιμοποιείται αυτούσιο αντί να κατασκευάζεται ένα από τις τρεις μεταβλητές LIBVIRT_* παραπάνω (οι οποίες τότε αγνοούνται για το connection string). Χωρίς προεπιλεγμένη τιμή. Απαιτείται στο TrueNAS Scale, του οποίου το libvirtd ακούει σε ένα μη τυπικό socket που η μορφή του κατασκευασμένου string δεν μπορεί να εκφράσει: qemu+ssh://<user>@<truenas-host>/system?socket=/run/truenas_libvirt/libvirt-sock. Δείτε την ενότητα TrueNAS Scale του docs/vm-backup-ssh-setup.md. Αν είναι URI qemu+ssh://, κάθε μία από τις LIBVIRT_HOST, LIBVIRT_SSH_USER και LIBVIRT_SSH_PORT που δεν έχει οριστεί λαμβάνεται από αυτό, και για τις δικές του εντολές SSH του BombVault (μεταφορά NVRAM, σύνολα δεδομένων ZFS). |
PORT |
Όχι | Θύρα HTTP (προεπιλογή 3000· χρησιμοποιείται μόνο με HTTP_ONLY=true). |
HTTPS_PORT |
Όχι | Θύρα HTTPS (προεπιλογή 3443· το template τη δημοσιεύει 1:1, οπότε το WebUI απαντά στο https://<ip>:3443). |
HTTP_ONLY |
Όχι | Ορίστε true για να απενεργοποιήσετε τον αυτο-υπογεγραμμένο listener HTTPS και να εξυπηρετείτε μόνο απλό HTTP (για χρήση πίσω από έναν reverse proxy που τερματίζει το TLS). |
BIND_HOST |
Όχι | Η διεύθυνση στην οποία ακούει το WebUI (προεπιλογή 0.0.0.0, όλες οι διεπαφές). Αφήστε την κενή στο container, του οποίου οι δημοσιευμένες θύρες χρειάζονται όλες τις διεπαφές· το 127.0.0.1 ταιριάζει σε εκτέλεση εκτός Docker. Το healthcheck ρωτά την ίδια διεύθυνση. |
TRUSTED_PROXY |
Όχι | Διευθύνσεις ή εύρη CIDR, χωρισμένα με κόμμα, του αντίστροφου διακομιστή μεσολάβησης μπροστά από το BombVault (για παράδειγμα 192.168.20.11 ή 10.0.0.0/8). Μόνο από αυτά τα άλματα γίνεται πιστευτή η κεφαλίδα X-Forwarded-For, και τότε το φρένο συνδέσεων μετρά τις αποτυχίες ανά πραγματικό πελάτη αντί να βάζει όλους πίσω από τον μεσολαβητή στον ίδιο κουβά. Χωρίς ορισμό (προεπιλογή) δεν πιστεύεται κανείς: μια κεφαλίδα που γίνεται δεκτή χωρίς όρους θα άφηνε τον καθένα να διαλέγει τον δικό του κουβά. |
HOST_SOURCE_ROOT |
Όχι | Η διαδρομή host που προσαρτάται ως Host Data (προεπιλογή /mnt). Το BombVault μεταφράζει τις πηγές bind-mount που αναφέρει το Docker σε διαδρομές κάτω από αυτή την προσάρτηση. Αλλάξτε το μόνο αν προσαρτήσατε διαφορετική ρίζα host. |
DATA_ROOT_SEGMENTS |
Όχι | Ονόματα τμημάτων διαδρομής, χωρισμένα με κόμμα, που χαρακτηρίζουν μια πηγή bind-mount ως δεδομένα προς αντίγραφο (προεπιλογή appdata, σύμφωνα με τη σύμβαση /mnt/user/appdata/<container> του Unraid). Ένα bind mount ενός container επιλέγεται αυτόματα για αντίγραφο όταν ΟΠΟΙΟΔΗΠΟΤΕ από τα αναφερόμενα τμήματα εμφανίζεται ως πλήρες τμήμα διαδρομής στην πηγή host του· για παράδειγμα το DATA_ROOT_SEGMENTS=appdata,config παίρνει επιπλέον και ένα bind .../config. Δείτε Εντοπισμός πηγής αντιγράφου για τους άλλους, πάντα ενεργούς τρόπους με τους οποίους εντοπίζεται ο φάκελος δεδομένων ενός container. |
PLATFORM |
Όχι | Επιβάλλει την πλατφόρμα στην οποία το BombVault θεωρεί ότι εκτελείται, αντί να την ανιχνεύει αυτόματα: unraid, generic ή truenas (χωρίς προεπιλεγμένη τιμή· ανιχνεύει αυτόματα το Unraid αναζητώντας το δείκτη dockerMan κάτω από την προσάρτηση flash, αλλιώς generic· μια μη αναγνωρίσιμη τιμή επίσης πέφτει πίσω σε generic, με καταγραφή). Ορίστε το ρητά σε έναν γενικό host Docker ή στο TrueNAS Scale αντί να βασίζεστε στην αυτόματη ανίχνευση που λειτουργεί μόνο για Unraid· το γενικό αρχείο compose το κάνει αυτό. Αλλάζει τη σύμβαση εναλλακτικής λύσης appdata, τις προεπιλογές προορισμού επαναφοράς μεταξύ instances, και το αν επιχειρούνται καθόλου τα βήματα ειδοποίησης/συνοδευτικού πρόσθετου που αφορούν μόνο το Unraid (δείτε internal/platform). |
BOMBVAULT_SELF_CONTAINER |
Όχι | Το όνομα του ίδιου του container BombVault, ώστε να μη δημιουργεί ποτέ αντίγραφο (και άρα να μη σταματά) τον εαυτό του. |
BACKUP_MAX_HOURS |
Όχι | Οι μέγιστες ώρες πραγματικού χρόνου που μια μεμονωμένη εκτέλεση αντιγράφου μπορεί να κρατά το κλείδωμα του τομέα της πριν ακυρωθεί με τη βία (μια δικλείδα ώστε μια κολλημένη εκτέλεση να μη μπορεί να μπλοκάρει τον τομέα για πάντα). Κενό (η προεπιλογή) χρησιμοποιεί 48. Ανεβάστε το για πολύ μεγάλα ή αργά αντίγραφα cloud (μια εκτέλεση που ακυρώνεται στο όριο αποτυγχάνει με context deadline exceeded). Ορίστε 0 για να απενεργοποιήσετε εντελώς το όριο. |
BACKUP_STALL_HOURS |
Όχι | Ώρες που ένα αντίγραφο μπορεί να μην κάνει καμία απολύτως πρόοδο πριν ακυρωθεί. Κενό (η προεπιλογή) χρησιμοποιεί 2· ορίστε 0 για να μην ακυρώνεται ποτέ λόγω στασιμότητας. Είναι η λεπτότερη από τις δύο δικλείδες και συνήθως αυτή που ενεργοποιείται: παρακολουθεί αν συμβαίνει ακόμη κάτι και όχι πόση ώρα κρατά η εκτέλεση, οπότε ένα αργό αλλά υγιές αντίγραφο πολλών terabyte μένει ανενόχλητο, ενώ ένα κολλημένο σε κοινόχρηστο πόρο που δεν αποκρίνεται σταματά σε ώρες αντί για μέρες. Μετά από 30 λεπτά σιωπής καταγράφεται μια προειδοποίηση, πριν ακυρωθεί οτιδήποτε. Η σάρωση μετρά ως πρόοδος: το restic δεν γράφει κανένα byte όσο διατρέχει ένα μεγάλο δέντρο, και αυτή η φάση παρακολουθείται μέσω των συνόλων αρχείων και byte του και όχι μέσω των byte που γράφτηκαν. Οι δύο μεταβλητές είναι ανεξάρτητες, και το BACKUP_MAX_HOURS εξακολουθεί να οριοθετεί τις φάσεις μετά το ίδιο το αντίγραφο (διατήρηση, στατιστικά, αντίγραφο εκτός τόπου), όπου δεν υπάρχουν μετρητές για παρακολούθηση. |
DB_DUMP_MAX_HOURS |
Όχι | Ώρες που μπορεί να τρέξει ένα αυτόματο dump βάσης δεδομένων πριν σταματήσει. Κενό (η προεπιλογή) σημαίνει 6· επιτρέπονται τιμές από 1 έως 48, και το όριο μένει μία ώρα κάτω από το BACKUP_MAX_HOURS (στο μισό του, όταν αυτό είναι κάτω από δύο ώρες), ώστε ένα μακρύ dump να κόβεται από το δικό του όριο και να αναφέρεται έτσι, αντί να παρασύρει μαζί του το αντίγραφο. Ένα dump που δεν προχωρά άλλο σταματά νωρίτερα, μετά από BACKUP_STALL_HOURS. Ένα σταματημένο dump αποτυγχάνει μόνο του και το αντίγραφο του container συνεχίζει. Στο Unraid προσθέτετε τη μεταβλητή στο container του BombVault με Add another Path, Port, Variable. |
TZ |
Όχι | Ζώνη ώρας για τον χρονοπρογραμματιστή (για παράδειγμα Europe/Berlin). Αν δεν οριστεί, όλα τα χρονοδιαγράμματα εκτελούνται σε UTC: ένα χρονοδιάγραμμα στις 02:30 ξεκινά τότε στις 02:30 UTC και όχι στην τοπική ώρα. Στο Unraid δεν το ορίζετε ποτέ μόνοι σας: το σύστημα περνά τη δική του ζώνη ώρας σε κάθε κοντέινερ. Το αρχείο καταγραφής εκκίνησης αναφέρει ποια ζώνη προέκυψε τελικά. Μια ζώνη με θερινή ώρα παραλείπει μία εκτέλεση την άνοιξη και εκτελεί μία δύο φορές το φθινόπωρο, ενώ η UTC δεν κάνει τίποτα από τα δύο, αλλά μετατοπίζεται κατά μία ώρα σε σχέση με το ρολόι σας δύο φορές τον χρόνο. |
Προσαρτήσεις¶
Προσαρτήστε το Docker socket, το flash (/boot) και τη ρίζα Host Data (/mnt) όπως φαίνεται στο template CA. Οι πηγές και οι προορισμοί των αντιγράφων βρίσκονται και οι δύο κάτω από το Host Data, και προσαρτάται slave ώστε ένας απομακρυσμένος κοινόχρηστος πόρος που προσαρτάται αφού ξεκινήσει το container (για παράδειγμα κάτω από το /mnt/remotes) να γίνεται ορατός χωρίς επανεκκίνηση.
Τα αντίγραφα συνόλων δεδομένων ZFS χρειάζονται κι αυτά αυτή τη λειτουργία: ο host προσαρτά το στιγμιότυπο ενός συνόλου μόνο αφού έχει ξεκινήσει το container. Δείτε Σύνολα δεδομένων ZFS.
Οι διαδρομές αποθετηρίου των αντιγράφων έχουν προεπιλογή /mnt/user/bombvault/{container,vms,flash,config,files,zfs}, που δημιουργούνται στο πρώτο αντίγραφο. Αλλάξτε την τοποθεσία οποιαδήποτε στιγμή στις Ρυθμίσεις, Αποθήκευση, Διαδρομές αντιγράφων. Κάθε πεδίο διαδρομής έχει επίσης έναν ενσωματωμένο διακόπτη Τοπικό / Απομακρυσμένο: μια διαδρομή μπορεί να είναι απομακρυσμένο αποθετήριο restic (s3:..., rest:..., sftp:..., rclone:...) αντί για τοπικό φάκελο, οπότε το αντίγραφο πηγαίνει κατευθείαν εκεί χωρίς ξεχωριστό τοπικό αντίγραφο· δείτε Απομακρυσμένα κύρια αποθετήρια.
Έλεγχος ενσωμάτωσης host
Ανοίξτε το /spike στο περιβάλλον ιστού αφού ξεκινήσει το container. Ανιχνεύει κάθε προσάρτηση και CLI (Docker socket, libvirt, restic, qemu-img, rclone) και αναφέρει τυχόν κομμάτια που λείπουν.
Αναγνώριση των πηγών αντιγράφου ασφαλείας¶
Για κάθε container το BombVault επιλέγει μόνο του ποιες προσαρτήσεις bind και ποιοι επώνυμοι τόμοι μπαίνουν στο αντίγραφο. Μια διαδρομή λαμβάνεται μόλις ισχύσει οποιοδήποτε από τα παρακάτω (το αποτέλεσμα μπορείτε πάντα να το παρακάμψετε ανά container στην ενότητα Φάκελοι αντιγράφων του):
- Ταύτιση με τμήμα της ρίζας δεδομένων: η πηγή του bind στον host περιέχει ένα από τα τμήματα του
DATA_ROOT_SEGMENTSως πλήρες συστατικό διαδρομής (εξ ορισμού μόνο τοappdata). - Οι επώνυμοι τόμοι του Docker περιλαμβάνονται πάντα, επειδή δεν έχουν αναλώσιμο αντίστοιχο και άρα δεν υπάρχει τίποτα να φιλτραριστεί, αλλά μόνο όταν η πραγματική διαδρομή αποθήκευσης του τόμου στον host είναι η ίδια προσβάσιμη μέσω της προσάρτησης Host Data, ακριβώς όπως κάθε άλλη διαδρομή host που κρατά το BombVault. Ο προεπιλεγμένος οδηγός τοπικών τόμων τοποθετεί έναν τόμο κάτω από τη ρίζα δεδομένων του ίδιου του δαίμονα, δηλαδή στο
/var/lib/docker/volumes/<όνομα>/_dataεφόσον δεν έχει αλλάξει (ελέγξτε μεdocker info -f '{{.DockerRootDir}}'). Αυτό το σημείο ΔΕΝ καλύπτεται από τη στενή προσάρτηση Host Data ενός μόνο καταλόγου που χρησιμοποιεί εξ ορισμού το γενικόdocker-compose.yml. Ένας μη προσβάσιμος τόμος παραλείπεται σιωπηλά, δεν είναι σφάλμα. Για να κρατηθούν πράγματι οι επώνυμοι τόμοι σε έναν γενικό host, στρέψτε το Host Data (και τοHOST_SOURCE_ROOT) σε έναν κοινό γονικό κατάλογο που καλύπτει και τη ρίζα δεδομένων του Docker: ο συμβιβασμός περιγράφεται στο σχόλιο Host Data του αρχείου compose (το Unraid το παρακάμπτει προσαρτώντας για τον ίδιο λόγο ολόκληρο το/mnt, τη δική του καθολική σύμβαση ανώτατου επιπέδου). - Κατάλογος έργου του Docker Compose: αν το container φέρει τη συνηθισμένη ετικέτα
com.docker.compose.project.working_dir(την βάζει αυτόματα τοdocker compose up), προστίθεται και αυτός ο κατάλογος, ανεξάρτητα από το αν κάποιο bind ταίριαξε με τμήμα της ρίζας δεδομένων. - Παράκαμψη με την ετικέτα
bombvault.data: βάλτε στο container την ετικέταbombvault.data=trueγια να συμπεριληφθούν ΟΛΕΣ οι προσαρτήσεις bind του, για μια διάταξη που δεν πιάνει καμία από τις δύο συμβάσεις παραπάνω (για παράδειγμα ένα μοναδικό bind/srv/plex/configχωρίς έργο Compose). Κάθε μη κενή τιμή εκτός τουfalseμετρά ως αληθής· απούσα ετικέτα ήbombvault.data=falseδεν αλλάζει τίποτα. - Ετικέτα
bombvault.dbdump: βάλτεbombvault.dbdump=falseσε ένα container για να κλείσετε το αυτόματο dump της βάσης του (0,noκαιoffκάνουν το ίδιο), ή ονομάστε τη μηχανή (postgres,mysql,mariadb) για να παίρνεται dump από ένα container που το BombVault δεν αναγνωρίζει από μόνο του. Η ετικέτα υπερισχύει του διακόπτη στην κάρτα του container, που στο Unraid είναι ο συνηθισμένος δρόμος.
Μοντέλο ασφαλείας¶
Έλεγχος του host ισοδύναμος με root
Μέσω του Docker socket το BombVault μπορεί να διακόψει, να αφαιρέσει και να αναδημιουργήσει containers και να διαβάσει/γράψει appdata, και για το αντίγραφο VM συνδέεται στον host μέσω SSH (qemu+ssh://, root εξ ορισμού) για να εκτελέσει virsh. Όποιος μπορεί να φτάσει στο περιβάλλον ιστού του έχει ουσιαστικά root στον host.
- Προαιρετική προστασία με συνθηματικό (Ρυθμίσεις, Ασφάλεια): ορίστε συνθηματικό για να απαιτείται σύνδεση, καθαρίστε το για απενεργοποίηση. Ανενεργή από προεπιλογή, για χρήση σε έμπιστο τοπικό δίκτυο. Το συνθηματικό αποθηκεύεται με Argon2id πάνω σε τιμή πιπερωμένη με το
APP_KEY, οπότε ένα αντιγραμμένο/configδεν αξίζει τίποτα χωρίς το κλειδί και είναι αργό να επιτεθεί κανείς με αυτό. Ένα νέο συνθηματικό χρειάζεται τουλάχιστον 12 χαρακτήρες· ένα υπάρχον μικρότερο συνεχίζει να λειτουργεί μέχρι να αλλάξει. Οι συνεδρίες υπογράφονται (HMAC από τοAPP_KEY) και η αλλαγή συνθηματικού τις ακυρώνει· οι συνδέσεις περιορίζονται σε πέντε αποτυχίες ανά λεπτό ανά πελάτη. - Ταυτοποίηση δύο παραγόντων (Ρυθμίσεις): χρονικός κωδικός από εφαρμογή ταυτοποίησης επιπλέον του συνθηματικού, μαζί με οκτώ κωδικούς ανάκτησης μιας χρήσης που δίνονται μία φορά κατά την ενεργοποίηση. Το κοινό μυστικό αποθηκεύεται κρυπτογραφημένο με το
APP_KEY, και η απενεργοποίηση απαιτεί τρέχοντα κωδικό. - Κλειδιά πρόσβασης (WebAuthn): έχουν δική τους κάρτα μόλις οριστεί συνθηματικό και λειτουργούν δίπλα στο συνθηματικό, ποτέ στη θέση του, οπότε η αφαίρεση όλων των κλειδιών πρόσβασης δεν κλειδώνει κανέναν έξω. Χρειάζονται πραγματικό όνομα domain και πιστοποιητικό που εμπιστεύεται το πρόγραμμα περιήγησης. Η προεπιλογή
https://<ip>:3443είναι ακριβώς αυτό που απορρίπτει το WebAuthn, και η κάρτα το λέει αντί να προσφέρει ένα κουμπί που θα αποτύχει. - Οι αλλαγές θέλουν JSON. Ένα αίτημα που αλλάζει κάτι πρέπει να στέλνει
Content-Type: application/jsonκαι δεν πρέπει να έχει σημανθεί από το πρόγραμμα περιήγησης ως cross-site, ώστε μια σελίδα άλλου ιστότοπου να μην μπορεί να βάλει το πρόγραμμα περιήγησής σας να αλλάξει ρυθμίσεις σε μια διεύθυνση του τοπικού δικτύου. Ένα script που χειρίζεται το API στέλνει αυτή την κεφαλίδα· οτιδήποτε άλλο απορρίπτεται με415. - Επειδή η πύλη είναι προαιρετική, όταν δεν έχει οριστεί όλο το περιβάλλον ιστού και το API (συμπεριλαμβανομένης της ρύθμισης εκτός τόπου, των διαδρομών tamper-test και του κιτ ανάκτησης) είναι προσβάσιμα από οποιονδήποτε μπορεί να φτάσει στη θύρα. Ενεργοποιήστε την πύλη μόλις χρησιμοποιηθούν εκτός τόπου, αμετάβλητα αντίγραφα ή κρυπτογράφηση.
- Εκτελείτε το BombVault μόνο σε ένα αξιόπιστο, μη εκτεθειμένο δίκτυο. Για απομακρυσμένη πρόσβαση τοποθετήστε το πίσω από έναν reverse proxy που προσθέτει αυθεντικοποίηση και TLS. Οι αποκρίσεις φέρουν βασικές κεφαλίδες ασφαλείας (CSP,
nosniff,X-Frame-Options,Referrer-Policy). - Πίσω από αντίστροφο μεσολαβητή κάθε αίτημα φέρει τη διεύθυνση του μεσολαβητή, οπότε χωρίς
TRUSTED_PROXYτο φρένο μετρά όλους τους πελάτες μαζί και οι αποτυχίες ενός επιτιθέμενου κλειδώνουν έξω κι εσάς. Δηλώστε τον μεσολαβητή στοTRUSTED_PROXYγια να επιστρέψει η μέτρηση ανά πελάτη. - Ένα reverse proxy μπροστά από το BombVault πρέπει να περνά την κεφαλίδα
AuthorizationήX-API-Keyστο/mcpκαι δεν πρέπει να κάνει buffering στις απαντήσεις, αλλιώς οι βοηθοί δεν μπορούν να συνδεθούν. Δείτε Διακομιστής MCP. - Το τελικό σημείο MCP
/mcpαπαντά404μέχρι να υπάρξει κλειδί ή να ενεργοποιηθεί η σύνδεση μέσω OAuth, και ζητά από κάθε πελάτη το κλειδί ή το token του ακόμη κι όταν το συνθηματικό σύνδεσης είναι ανενεργό· καμία διεύθυνση δεν εξαιρείται, ούτε καν τοlocalhost. Δεν έχει εργαλεία επαναφοράς ή διαγραφής, και η επαναφορά ενός αντιγράφου διαμόρφωσης ανακαλεί όλα τα κλειδιά. Δείτε Διακομιστής MCP. - Με
HTTP_ONLY=trueτο cookie συνεδρίας χάνει τη σημαίαSecureτου (αναγκαστικά, για να λειτουργεί μέσω απλού HTTP), οπότε ενεργοποιήστε τον κωδικό πίσω από έναν proxy που τερματίζει το TLS μόνο αν έχει σημασία η εμπιστευτικότητα. - Η σύνδεση SSH του αντιγράφου VM εμπιστεύεται το κλειδί host στην πρώτη σύνδεση (TOFU) και το καρφιτσώνει έκτοτε. Επαληθεύστε το κλειδί του host εκτός ζώνης αν η διαδρομή container-προς-host σας δεν είναι αξιόπιστη.
- Τα αντίγραφα κρυπτογραφούνται από το restic όταν η κρυπτογράφηση είναι ενεργή (Ρυθμίσεις· ενεργή εξ ορισμού), με το κλειδί παραγόμενο από το
APP_KEY.
Διακομιστής MCP¶
Ο διακομιστής MCP δεν χρειάζεται καμία μεταβλητή περιβάλλοντος. Τον ενεργοποιείτε δημιουργώντας ένα κλειδί στις Ρυθμίσεις, Ενσωματώσεις, Διακομιστής MCP, και απαντά στο /mcp στην ίδια θύρα με το web περιβάλλον (για παράδειγμα https://192.168.1.10:3443/mcp). Χωρίς ενεργό κλειδί, αυτή η διαδρομή απαντά 404. Πελάτες, πιστοποιητικά και όρια περιγράφονται στη σελίδα Διακομιστής MCP.
Αντίγραφο VM μέσω SSH¶
Το BombVault δημιουργεί αντίγραφα των KVM/libvirt VMs χωρίς να προσαρτά καμία διαδρομή libvirt. Εκτελεί virsh στον host μέσω SSH (qemu+ssh://), οπότε δεν μπορεί ποτέ να επηρεάσει τον VM Manager του host σας.
Η προσάρτηση του socket του libvirt του host μέσα σε ένα κοντέινερ είναι εύθραυστη στο Unraid: αυτές τις διαδρομές τις διαχειρίζεται ο VM Manager, και η εναλλαγή του "Enable VMs" μπορεί να αφήσει το libvirt σε κατάσταση που δεν μπορεί να ξεκινήσει. Το κλειδί SSH δίνει δικαιώματα root στον host, δηλαδή το ίδιο επίπεδο εμπιστοσύνης με το Docker socket που ήδη χρησιμοποιεί το BombVault.
Γρήγορη ρύθμιση:
- Ρυθμίσεις, Ενσωματώσεις, SSH κεντρικού συστήματος: αντιγράψτε το εμφανιζόμενο δημόσιο κλειδί.
- Προσαρτήστε το στο
/root/.ssh/authorized_keysτου Unraid (επίσης διατηρείται στο flash ώστε να επιβιώνει των επανεκκινήσεων). - Κάντε κλικ στο Δοκιμή σύνδεσης.
Το template προσθέτει --add-host=host.docker.internal:host-gateway ώστε το container να μπορεί να φτάσει τον host. Ορίστε το LIBVIRT_HOST στη LAN IP του Unraid σας αν αυτό το όνομα δεν επιλύεται (για παράδειγμα όταν το container εκτελείται σε ένα προσαρμοσμένο δίκτυο br0.x). Αν αλλάξατε τη θύρα SSH του Unraid, ορίστε το LIBVIRT_SSH_PORT αναλόγως. Τα ζωντανά στιγμιότυπα χρειάζονται επιπλέον τον qemu guest agent στη VM και τον δίσκο στο /mnt/cache (όχι στο /mnt/user).
Πλήρης οδηγός ρύθμισης VM και δικτύου
Ο πλήρης βήμα-προς-βήμα οδηγός (ενεργοποίηση SSH, μόνιμη εξουσιοδότηση κλειδιού, δρομολόγηση προσαρμοσμένου δικτύου και VLAN, μέθοδος ανά VM και αντιμετώπιση προβλημάτων από την πλευρά του host) βρίσκεται στο docs/vm-backup-ssh-setup.md στο GitHub.
Ρύθμιση εκτός τόπου¶
Ρυθμίστε ένα αντίγραφο εκτός τόπου στη σελίδα Ρυθμίσεις, Εκτός τόπου. Δείτε Εκτός τόπου & ανάκτηση για την πλήρη ροή εργασίας (αμετάβλητο/append-only, δοκιμή αλλοίωσης και δοκιμές DR). Εν συντομία:
- Backends: SMB/CIFS και NFS (προσαρτήστε τον κοινόχρηστο πόρο και κατευθύνετε μια διαδρομή αντιγράφων σε αυτόν), εγγενή backend του restic χωρίς rclone (
s3:...,rest:http://host:8000/repo,sftp:user@host:/repo), ή οποιοδήποτε remote rclone (rclone:<remote>:<bucket>/path). Το Backblaze B2 δεν έχει εγγενές backend εδώ: προσεγγίζεται μέσω του τελικού σημείου S3 του (s3:https://s3.<region>.backblazeb2.com/<bucket>/<path>), με το αναγνωριστικό κλειδιού και το κλειδί εφαρμογής ως διαπιστευτήρια S3. - Τα κοινόχρηστα διαπιστευτήρια cloud αποθηκεύονται κρυπτογραφημένα στις Ρυθμίσεις, Πρόσβαση cloud, Κοινόχρηστα διαπιστευτήρια cloud.
- Οι στόχοι SSH δεν χρειάζονται τίποτα εγκατεστημένο στην απέναντι πλευρά. Το
sftp:χρειάζεται μόνο έναν διακομιστή SSH. Προσθέστε το δημόσιο κλειδί από Ρυθμίσεις, Ενσωματώσεις, SSH κεντρικού συστήματος (επίσης στο/config/ssh/id_ed25519.pub) στο~/.ssh/authorized_keysτου χρήστη στόχου. - Αντίγραφο εκτός τόπου: το BombVault αναπαράγει νέα στιγμιότυπα με
restic copyσε βάση βέλτιστης προσπάθειας, επιπλέον ενός (συνήθως τοπικού) κύριου αποθετηρίου. Κάθε τομέας έχει το δικό του χρονοδιάγραμμα εκτός τόπου, συν ένα κουμπί Αναπαραγωγή τώρα. - Πολλαπλοί στόχοι εκτός τόπου ανά τομέα: κάθε τομέας μπορεί να αναπαράγει σε πολλούς προορισμούς εκτός τόπου ταυτόχρονα. Προσθέστε επιπλέον στόχους στις Ρυθμίσεις, Εκτός τόπου, τον καθένα με το δικό του αποθετήριο, κλάση αποθήκευσης S3, σημαία append-only, διατήρηση και προϋπολογισμό ανάπτυξης· όλοι αναπαράγουν στο χρονοδιάγραμμα εκτός τόπου εκείνου του τομέα. Μια υπάρχουσα μεμονωμένη ρύθμιση εκτός τόπου μεταφέρεται ως ο πρώτος στόχος.
- Προορισμοί: οι προορισμοί εκτός τόπου ρυθμίζονται μία φορά στις Ρυθμίσεις, Εκτός τόπου, Προορισμοί, μέσα από έναν οδηγό που παραθέτει κάθε υποστηριζόμενη υπηρεσία. Δείτε Προορισμοί.
- Τοποθέτηση ανά στοιχείο: κάθε κοντέινερ, VM και σύνολο φακέλων ανάβει το Τοπικό και τους στόχους που παίρνουν τα αντίγραφά του. Οι Ρυθμίσεις, Αποθήκευση, Προεπιλογές τοποθέτησης το ορίζουν ανά τομέα για τα στοιχεία χωρίς δική τους επιλογή. Δείτε Τοποθέτηση ανά στοιχείο.
- Διατήρηση ανά πηγή: τόσο η τοπική όσο και η πολιτική εκτός τόπου βρίσκονται στις Ρυθμίσεις, Διατήρηση (αφήστε την πολιτική εκτός τόπου ολόκληρη μηδέν για να μην κλαδεύονται ποτέ αυτόματα τα στιγμιότυπα εκτός τόπου). Οι κάρτες Τοπική διατήρηση και Διατήρηση εκτός τόπου έχουν η καθεμία Κανόνες διατήρησης ανά πηγή, που δίνουν σε κοντέινερ, VM, flash, φακέλους, ZFS ή στο αυτο-αντίγραφο δικούς τους κανόνες διατήρησης, για τα τοπικά τους αντίγραφα και για το repo τους εκτός τόπου. Μια πηγή χωρίς δικούς της κανόνες ακολουθεί τους κοινούς, και η διατήρηση μετά από κάθε αντίγραφο, η αντιγραφή εκτός τόπου, ο χειροκίνητος καθαρισμός και η προεπισκόπηση διατήρησης χρησιμοποιούν τους κανόνες της πηγής στην οποία δουλεύουν. Οι πρόσθετοι προορισμοί εκτός τόπου κρατούν τους κανόνες που έχουν οριστεί γι' αυτούς στις Ρυθμίσεις, Εκτός τόπου.
- Όρια εύρους ζώνης: περιορίστε τον ρυθμό αποστολής/λήψης του restic στις Ρυθμίσεις, Εκτός τόπου.
- Πρώτα το streaming: στις Ρυθμίσεις, Εκτός τόπου, επίλεξε τους διακομιστές πολυμέσων (τα Plex, Jellyfin και Emby προεπιλέγονται από το όνομα της εικόνας), τον ρυθμό αποστολής από τον οποίο ένας θεωρείται ότι κάνει streaming, το όριο αποστολής όσο κάνει streaming και πόσο μετά από ένα stream επιστρέφει το κανονικό όριο.
- Κλάση ψυχρής και αρχειακής αποθήκευσης (S3): για ένα εγγενές αποθετήριο S3 εκτός τόπου, επιλέξτε ένα επίπεδο αναγνώσιμο κατά την επαναφορά (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval). Τα remotes rclone ορίζουν την κλάση τους στη διαμόρφωση rclone.
- Απομακρυσμένο κύριο αντί για τοπικό: η ίδια η διαδρομή αντιγράφων ενός τομέα μπορεί να είναι ένα από τα παραπάνω backend, χωρίς τοπικό αντίγραφο και χωρίς βήμα αναπαραγωγής. Τον ενσωματωμένο διακόπτη Τοπικό/Απομακρυσμένο και τις ρυθμίσεις ασφαλείας του (εύρος ζώνης, append-only, προϋπολογισμός ανάπτυξης) τα περιγράφει η ενότητα Απομακρυσμένα κύρια αποθετήρια.
Ανωμαλίες¶
Η ανίχνευση ανωμαλιών ρυθμίζεται στην κάρτα Ανωμαλίες στο Ρυθμίσεις, Ακεραιότητα. Κάθε στοιχείο ελέγχου αποθηκεύεται μόλις το αλλάξετε, και τα τρία κάτω από τον διακόπτη κρύβονται όσο η ανίχνευση είναι απενεργοποιημένη.
| Ρύθμιση | Προεπιλογή | Τι κάνει |
|---|---|---|
| Εντοπισμός ανωμαλιών | Ενεργό | Συγκρίνει κάθε αντίγραφο με το ιστορικό του στοιχείου. Απενεργοποιημένο, δεν ελέγχεται τίποτα νέο και η καταχώριση Ανωμαλίες φεύγει από την πλαϊνή στήλη· η κάρτα εξακολουθεί να παραπέμπει σε παλαιότερα ευρήματα. |
| Ευαισθησία | Ισορροπημένη | Η Αυστηρή αναφέρει και μικρότερες αλλαγές, η Επιεικής μόνο μεγάλες. |
| Αποστολή ειδοποίησης για | Μόνο κρίσιμα ευρήματα | Η χαμηλότερη σοβαρότητα που στέλνει μήνυμα μέσω των καναλιών που ρυθμίστηκαν στο Ειδοποιήσεις. Οι επαναλαμβανόμενες αποτυχίες αντιγράφων και dump και οι αποτυχημένοι προγραμματισμένοι έλεγχοι επαναφοράς στέλνουν ήδη δικό τους μήνυμα και δεν στέλνονται δύο φορές. |
| Διατήρηση παλιών αντιγράφων όταν μια πηγή συρρικνώνεται απότομα ή ξαναγράφεται | Ενεργό | Όσο ένα στοιχείο έχει ανοιχτό εύρημα για σχεδόν άδεια πηγή, ισχυρή συρρίκνωση ή επαναποθήκευση των περισσότερων δεδομένων, η διατήρηση και ο καθαρισμός αφήνουν ήσυχα τα παλιά του αντίγραφα. Επιβεβαιώστε το εύρημα ή σημειώστε το ως αναμενόμενο για να τα απελευθερώσετε. |
Κάθε στοιχείο μπορεί να έχει δική του ευαισθησία και δικό του ελάχιστο ειδοποίησης. Ρυθμίστε τα στη σελίδα Ανωμαλίες, όπου ένα στοιχείο με ανοιχτά ευρήματα τα έχει στην Παρακολούθηση της κάρτας του και κάθε άλλο στοιχείο τα ανοίγει από την κάρτα Τίποτα ανοιχτό, ή στο πάνελ του ίδιου του στοιχείου: στην ενότητα φακέλων ενός container και στις ρυθμίσεις μιας VM (και τα δύο σε προχωρημένη λειτουργία), στον επεξεργαστή φακέλων ενός συνόλου φακέλων και στις σελίδες Flash και Αυτο-αντίγραφο. Για ένα στοιχείο ZFS βρίσκονται στον επεξεργαστή του στη σελίδα ZFS και ισχύουν για κάθε σύνολο δεδομένων του δέντρου του.
Φορητές ρυθμίσεις (εξαγωγή και εισαγωγή)¶
Η κάρτα Εξαγωγή / εισαγωγή ρυθμίσεων στη σελίδα Ρυθμίσεις, Σύστημα γράφει όλη τη διαμόρφωση BombVault σας (ρυθμίσεις τομέων, στόχους εκτός τόπου, χρονοδιαγράμματα, διατήρηση, ειδοποιήσεις) σε ένα φορητό αρχείο JSON που μπορείτε να εισάγετε σε μια άλλη εγκατάσταση, ώστε η μετακόμιση σε νέο μηχάνημα ή η κλωνοποίηση μιας εγκατάστασης να μη σημαίνει ότι πρέπει να τα εισάγετε όλα ξανά με το χέρι. Η εισαγωγή δείχνει μια προεπισκόπηση και ζητά επιβεβαίωση, και δεν αγγίζει ποτέ τα δεδομένα ή το ιστορικό των αντιγράφων σας.
Η εξαγωγή μπορεί να περιέχει διαπιστευτήρια
Επιλέγετε εσείς αν θα συμπεριλάβετε τα διαπιστευτήρια εκτός τόπου, ειδοποιήσεων και του διακομιστή MQTT στο αρχείο. Με τα διαπιστευτήρια συμπεριλαμβανόμενα, η εξαγωγή είναι εξίσου ευαίσθητη με το κιτ ανάκτησής σας, οπότε αποθηκεύστε την σε ασφαλές μέρος. Χωρίς αυτά, το αρχείο περιέχει μόνο μη-μυστικές ρυθμίσεις.