הגדרות¶
עמוד זה מכסה את משתני הסביבה של ה-container, את העיגונים שהתבנית מספקת, גיבוי VM דרך SSH, ואת הגדרת מחוץ לאתר. נתיבי מאגר הגיבוי מוגדרים בתוך האפליקציה (הגדרות, נתיבי גיבוי), לא דרך משתני סביבה.
משתני סביבה¶
| משתנה | נדרש | תיאור |
|---|---|---|
APP_KEY |
כן | סוד hex באורך 32 בתים (64 תווי hex) המשמש לגזירת סיסמת מאגר ה-restic. צור עם openssl rand -hex 32. שמור עליו: אובדנו הופך את הגיבויים המוצפנים לבלתי ניתנים לשחזור. |
LIBVIRT_HOST |
ל-VMs | מארח Unraid שאליו מגיעים דרך SSH לגיבוי VM (ברירת מחדל host.docker.internal; התבנית ממלאה מראש placeholder של LAN-IP). השתמש בכתובת ה-LAN IP של Unraid שלך, נדרש ברשת br0.x מותאמת אישית. |
LIBVIRT_SSH_PORT |
לא | פורט ה-SSH של המארח לגיבוי VM (ברירת מחדל 22). |
LIBVIRT_SSH_USER |
לא | משתמש ה-SSH במארח לגיבוי VM (ברירת מחדל root). |
PORT |
לא | פורט HTTP (ברירת מחדל 3000; בשימוש רק עם HTTP_ONLY=true). |
HTTPS_PORT |
לא | פורט HTTPS (ברירת מחדל 3443; התבנית מפרסמת אותו 1:1, כך שה-WebUI עונה על https://<ip>:3443). |
HTTP_ONLY |
לא | קבע true כדי להשבית את מאזין ה-HTTPS בחתימה עצמית ולהגיש HTTP פשוט בלבד (לשימוש מאחורי reverse proxy מסיים-TLS). |
HOST_SOURCE_ROOT |
לא | נתיב המארח המעוגן כHost Data (ברירת מחדל /mnt). BombVault מתרגמת את מקורות ה-bind-mount ש-Docker מדווח עליהם לנתיבים תחת עיגון זה. שנה רק אם עיגנת שורש מארח שונה. |
BOMBVAULT_SELF_CONTAINER |
לא | שם ה-container של BombVault עצמה, כך שהיא לעולם אינה מגבה (ולכן עוצרת) את עצמה (ברירת מחדל BombVault; מזוהה אוטומטית דרך ה-hostname ברשת bridge). |
BACKUP_MAX_HOURS |
לא | מספר שעות השעון המקסימלי שהרצת גיבוי בודדת רשאית להחזיק את נעילת הדומיין שלה לפני שהיא מבוטלת בכוח (שמירה כך שהרצה תקועה אינה יכולה לחסום את הדומיין לנצח). ריק (ברירת המחדל) משתמש ב-48. הגדל אותו לגיבויי ענן גדולים או איטיים מאוד (הרצה שמבוטלת בתקרה נכשלת עם context deadline exceeded). קבע 0 כדי להשבית את התקרה לחלוטין. |
TZ |
לא | אזור זמן למתזמן (למשל Europe/Berlin). |
עיגונים¶
עגן את ה-Docker socket, את ה-flash (/boot) ואת שורש Host Data (/mnt) כפי שמוצג בתבנית ה-CA. מקורות הגיבוי וגם היעדים חיים תחת Host Data, והוא מעוגן rslave כך ששיתוף מרוחק שמתעגן לאחר שה-container מתחיל (למשל תחת /mnt/remotes) הופך גלוי ללא הפעלה מחדש.
נתיבי מאגר הגיבוי מוגדרים כברירת מחדל ל-/mnt/user/bombvault/{container,vms,flash,config,files}, נוצרים בגיבוי הראשון. שנה את המיקום בכל עת בהגדרות, נתיבי גיבוי.
בדיקת שילוב מארח
פתח את /spike בממשק הווב לאחר שה-container מתחיל. הוא בודק כל עיגון ו-CLI (Docker socket, libvirt, restic, qemu-img, rclone) ומדווח על כל חלק חסר.
מודל האבטחה¶
שליטה שוות-ערך ל-root על המארח
דרך ה-Docker socket, BombVault יכולה לעצור, להסיר וליצור מחדש containers ולקרוא/לכתוב appdata, ולגיבוי VM היא מתחברת למארח דרך SSH (qemu+ssh://, root כברירת מחדל) כדי להריץ virsh. כל מי שיכול להגיע לממשק הווב שלה שולט למעשה כ-root על המארח.
- הגנת סיסמה אופציונלית (הגדרות, אבטחה): קבע סיסמה כדי לדרוש כניסה, נקה אותה כדי להשבית. כבוי כברירת מחדל לשימוש ב-LAN מהימן. Sessions חתומים (HMAC נגזר מ-
APP_KEY) ושינוי הסיסמה מבטל אותם; כניסות מוגבלות-קצב. - מכיוון שהשער הוא הצטרפות מרצון, כשאינו מוגדר כל הממשק וה-API (כולל הגדרת מחוץ לאתר, נתיבי בדיקת החבלה וערכת השחזור) נגישים לכל מי שיכול להגיע לפורט. הפעל את השער ברגע שמחוץ לאתר, גיבויים בלתי-ניתנים-לשינוי או הצפנה נמצאים בשימוש.
- הרץ את BombVault רק ברשת מהימנה ולא חשופה. לגישה מרחוק הצב אותה מאחורי reverse proxy שמוסיף אימות ו-TLS. התגובות נושאות כותרות אבטחה בסיסיות (CSP,
nosniff,X-Frame-Options,Referrer-Policy). - עם
HTTP_ONLY=trueעוגיית ה-session מאבדת את דגל ה-Secureשלה (היא חייבת, כדי לעבוד מעל HTTP פשוט), כך שהפעל את הסיסמה מאחורי proxy מסיים-TLS רק אם סודיות חשובה. - חיבור ה-SSH של גיבוי ה-VM נותן אמון במפתח המארח בחיבור הראשון (TOFU) ומצמיד אותו לאחר מכן. אמת את מפתח המארח מחוץ-לפס אם הנתיב מה-container למארח שלך אינו מהימן.
- הגיבויים מוצפנים על ידי restic כשההצפנה מופעלת (הגדרות; מופעלת כברירת מחדל), עם המפתח נגזר מ-
APP_KEY.
גיבוי VM דרך SSH¶
BombVault מגבה מכונות KVM/libvirt מבלי לעגן שום נתיב libvirt. היא מריצה virsh במארח דרך SSH (qemu+ssh://), כך שהיא לעולם אינה יכולה להשפיע על ה-VM Manager של המארח שלך.
הגדרה מהירה:
- הגדרות, מערכת, גיבוי VM דרך SSH: העתק את המפתח הציבורי המוצג.
- הוסף אותו אל
/root/.ssh/authorized_keysשל Unraid (גם נשמר ל-flash כך שהוא שורד אתחולים). - לחץ בדוק חיבור.
התבנית מוסיפה --add-host=host.docker.internal:host-gateway כך שה-container יכול להגיע למארח. קבע את 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 ופתרון בעיות בצד המארח) נמצא בכתובת docs/vm-backup-ssh-setup.md ב-GitHub.
הגדרת מחוץ לאתר¶
הגדר רפליקה מחוץ לאתר בלשונית הגדרות, מחוץ לאתר. ראה מחוץ לאתר והתאוששות לזרימת העבודה המלאה (בלתי-ניתן-לשינוי/append-only, בדיקת חבלה ותרגולי DR). בקצרה:
- Backends: SMB/CIFS ו-NFS (עגן את השיתוף והפנה אליו נתיב גיבוי), backends מקוריים של restic ללא rclone (
s3:...,rest:http://host:8000/repo,b2:...,sftp:user@host:/repo), או כל remote של rclone (rclone:<remote>:<bucket>/path). - פרטי התחברות לענן נשמרים מוצפנים תחת הגדרות, מחוץ לאתר, פרטי התחברות לענן.
- יעדי SSH אינם דורשים דבר מותקן בצד השני.
sftp:דורש רק שרת SSH. הוסף את המפתח הציבורי מ-הגדרות, מערכת, גיבוי VM דרך SSH (גם ב-/config/ssh/id_ed25519.pub) אל ה-~/.ssh/authorized_keysשל משתמש היעד. - עותק מחוץ לאתר: BombVault משכפלת תמונות מצב חדשות עם
restic copyעל בסיס מאמץ-מיטבי. המאגר המקומי נשאר הראשי. לכל דומיין יש לוח זמנים משלו מחוץ לאתר, בתוספת כפתור שכפל עכשיו. - מספר יעדים מחוץ לאתר לכל דומיין: כל דומיין יכול לשכפל למספר יעדים מחוץ לאתר בבת אחת. הוסף יעדים נוספים ב-הגדרות, מחוץ לאתר, כל אחד עם מאגר משלו, מחלקת אחסון S3, דגל append-only, שמירה ותקציב גדילה; כולם משוכפלים בלוח הזמנים מחוץ לאתר של אותו דומיין. הגדרת מחוץ לאתר יחידה קיימת מועברת כיעד הראשון.
- שמירה לכל מקור: המדיניות המקומית חיה ב-הגדרות, נתיבים ואחסון; המדיניות מחוץ לאתר ב-הגדרות, מחוץ לאתר (השאר אותה אפס-לגמרי כדי לעולם לא לגזום אוטומטית תמונות מצב מחוץ לאתר).
- מגבלות רוחב פס: הגבל את קצב ההעלאה/הורדה של restic תחת הגדרות, מחוץ לאתר.
- מחלקת אחסון קרה וארכיונית (S3): למאגר S3 מקורי מחוץ לאתר, בחר שכבה שקריאה-לשחזור (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval). remotes של rclone קובעים את המחלקה שלהם בתצורת ה-rclone.
הגדרות ניידות (ייצוא וייבוא)¶
כרטיס ייצוא וייבוא הגדרות בעמוד ההגדרות כותב את כל תצורת BombVault שלך (הגדרות דומיין, יעדים מחוץ לאתר, לוחות זמנים, שמירה, התראות) לקובץ JSON נייד שאתה יכול לייבא במופע אחר, כך שמעבר לתיבה חדשה או שכפול התקנה אינו אומר להזין הכול מחדש ביד. הייבוא מציג תצוגה מקדימה ומבקש אישור, והוא לעולם אינו נוגע בנתוני הגיבוי או ההיסטוריה שלך.
הייצוא יכול להכיל פרטי התחברות
אתה בוחר האם לכלול את פרטי ההתחברות מחוץ לאתר וההתראות בקובץ. עם פרטי התחברות כלולים, הייצוא רגיש כמו ערכת השחזור שלך, אז אחסן אותו במקום בטוח. בלעדיהם, הקובץ מחזיק רק הגדרות שאינן סודיות.