תחילת העבודה¶
עמוד זה מוליך אותך מתיבת Unraid טרייה עד הגיבוי הראשון שלך.
דרישות¶
| דרישה | הערות |
|---|---|
| Unraid 6.12+ | גרסאות קודמות אינן נבדקות. Unraid הוא היעד העיקרי, אבל BombVault רצה גם על מארח Docker רגיל ועל TrueNAS Scale (ראה מארח Docker כללי). |
| מיקום מאגר restic | נתיב מקומי (מומלץ: המערך או הזיכרון המטמון שלך), SMB, NFS, או כל backend של rclone. |
| Docker socket | מעוגן על ידי התבנית אוטומטית (/var/run/docker.sock). |
Unraid flash (/boot) |
מעוגן במלואו על ידי התבנית אוטומטית (/boot אל /host/boot). מפעיל את גיבוי ה-flash ומאפשר ל-container משוחזר להופיע מחדש כאפליקציית Unraid רגילה וניתנת לעריכה. |
| KVM VMs (הצטרפות מרצון) | גיבוי VM מדבר עם libvirt דרך SSH, ללא עיגון libvirt. הגדר זאת בהגדרות (ראה הגדרות). |
| מערכי נתונים של ZFS (הצטרפות מרצון) | אותו חיבור SSH כמו בגיבויי VM, zfs במארח, ו-Host Data ממופה כ-/mnt עם מצב הגישה Read/Write - Slave, ברירת המחדל של התבנית. ראה מערכי נתונים של ZFS. |
| אפליקציית Android (אופציונלי) | Android 10 ומעלה, מצומדת לשרתים בגרסה 9.7.0 ומעלה. ראה אפליקציית Android. |
התקנה ב-Unraid¶
הדרך הקלה ביותר היא Community Applications.
- פתח את לשונית Apps ב-Unraid.
- חפש את BombVault.
- לחץ Install, קבע את המשתנים הנדרשים (למטה), והחל.
התקנת תבנית ידנית
אם אתה מעדיף להוסיף את התבנית באופן ידני:
- עבור אל Docker, Add Container, Template repositories והוסף:
- חפש את BombVault תחת Templates.
- קבע את המשתנים הנדרשים ולחץ Apply.
מארח Docker כללי¶
לא Unraid? BombVault רץ גם כמכולה רגילה על כל מארח Docker (זה גם מה שנושא את התמיכה במכולות ב-TrueNAS Scale, עוד לפני רשומה משלו בקטלוג היישומים שם).
- הורד מהמאגר את הקובץ
deploy/docker-compose.generic.yml, מוכן לעריכה. - הגדר את
APP_KEY(ראה להלן) וכוון את כרך Host Data אל שורש הנתונים האמיתי שלך: ההערות בקובץ מלוות את שניהם. docker compose up -d, ואז פתח אתhttps://<ip-מארח>:3443/.
מה שונה לעומת Unraid:
- אין תחום flash/USB. אין החסן אתחול שיש ללכוד או לשחזר, ולכן לתחום Flash שבהגדרות אין כאן מה לעשות. במקומו מציע תחום התיקיות הצעה בלחיצה אחת, הוסף ערכה: תצורת מערכת המארח (אוסף התחלתי של קבצי
/etcשאתה סוקר ועורך לפני השמירה), כמקבילה כללית ומעשית. - אין התראות מובנות של Unraid. ערוצי ההתראות של BombVault עצמו (webhook, התראות על כשל מחוץ לאתר וכדומה) פועלים כרגיל; מדולג רק המשלוח הייעודי למערכת ההתראות של Unraid, מכיוון שמערכת כזו אינה קיימת כאן.
- גיבוי מכונות וירטואליות הוא רשות ודורש מארח libvirtd נפרד הנגיש דרך SSH. ראה את הקטע המסומן כהערה בקובץ compose. למארח Docker כללי אין בעצמו מנהל מכונות וירטואליות.
- אין widget ל-Dashboard. BombVault Widget הוא תוסף של Unraid, ולכן גם השלב הזה מדולג.
- איתור הנתונים של container. בלי מוסכמת ה-
appdataשל Unraid, תיקיית הנתונים של container מאותרת לפי המקטעים שב-DATA_ROOT_SEGMENTS, לפי volumes בעלי שם של Docker, לפי תיקיית העבודה של פרויקט Compose ולפי התוויתbombvault.data(ראה זיהוי מקורות הגיבוי). volumes בעלי שם וערכת ה-/etcמגיעים רק לנתיבים בתוך העיגון של Host Data, ולכן כוון את Host Data לתיקיית אב משותפת שמכסה גם את תיקיית הנתונים הראשית של Docker. -
PLATFORM. הגדר אותו ל-genericאו ל-truenas. כשהוא לא מוגדר, BombVault מזהה את Unraid לפי הסמן שלו בעיגון ה-flash ומתייחסת לכל השאר כאל מארח כללי, והשלבים הייחודיים ל-Unraid מדולגים במקום לנסות אותם ולהיכשל.
TrueNAS Scale הולך באותה דרך של compose; רשומת קטלוג הוכנה במאגר אבל עדיין לא הוגשה. גיבוי VM שם צריך את LIBVIRT_URI, כי ה-libvirtd של TrueNAS מאזין על socket משלו (/run/truenas_libvirt/libvirt-sock) ששלושת משתני ה-LIBVIRT_* לא יכולים לבטא (ראה הגדרות). עד כמה זה הוכח: גיבוי ה-zvol הורץ על מכונת TrueNAS Scale אמיתית, על zvol שמחובר ל-VM רצה, ו-zfs snapshot, zfs send, restic ו-zfs receive העבירו אותו הלוך ושוב זהה בית אחר בית. שחזור מלא שמבצעת BombVault עצמה עדיין לא הורץ על חומרת TrueNAS, וה-zvol ההוא היה דליל (sparse), ולכן קצב ההעברה בהיקף של הרבה גיגה-בתים לא נבדק. בדוק שם שחזור לפני שאתה סומך עליו.
ההגדרה הנדרשת היחידה¶
המשתנה היחיד שעליך לקבוע הוא APP_KEY, סוד hex באורך 32 בתים (64 תווי hex) המשמש לגזירת סיסמת מאגר ה-restic.
צור אחד בכל מכונה:
הדבק את התוצאה בשדה APP_KEY של התבנית (Unraid), או במשתנה הסביבה APP_KEY בקובץ docker-compose.yml (מארח Docker כללי).
אל תאבד את ה-APP_KEY שלך
אובדן ה-APP_KEY הופך את הגיבויים המוצפנים שלך לבלתי ניתנים לשחזור. אחסן אותו במקום בטוח ונפרד מהשרת. ברגע ש-BombVault פועלת, השתמש בערכת שחזור מפתח ההצפנה בלחיצה אחת (ראה מחוץ לאתר והתאוששות) כדי לשמור את חבילת השחזור המלאה.
התבנית גם מעגנת עבורך את ה-Docker socket, את ה-flash (/boot) ואת שורש Host Data (/mnt). מקורות הגיבוי וגם היעדים חיים תחת Host Data. לעיון המלא במשתנים ולהגדרת מחוץ לאתר, ראה הגדרות.
הרצה ראשונה¶

לוח המחוונים אחרי גיבוי ראשון: מה מוגן, מה רץ בהמשך, ויומן חי.
- פתח את ממשק הווב בכתובת
https://<your-unraid-ip>:3443(אישור בחתימה עצמית מהקופסה). - בהגדרות, הפעל את דומייני הגיבוי שאתה רוצה (Containers, VMs, Flash, גיבוי עצמי, תיקיות, מערכי נתונים של ZFS) ובחר צבע הדגשה.
- בלשונית Containers, בחר container ולחץ גבה עכשיו כדי ליצור את נקודת השחזור הראשונה שלך. נתיבי המאגר מוגדרים כברירת מחדל ל-
/mnt/user/bombvault/{container,vms,flash,config,files,zfs}ונוצרים בגיבוי הראשון. - הגדר תזמון מהגדרות, תזמונים. יש כלול הכל בלוח הזמנים בלחיצה אחת עבור containers ו-VMs.
אופציונלי: בחר סדר גיבוי
אם כמה containers צריכים תמיד להיות מגובים לפני אחרים (למשל מסד נתונים לפני האפליקציה שמשתמשת בו), פתח את פאנל סדר הגיבויים בעמוד Containers וגרור אותם לרצף הרצוי. הרצות מתוזמנות ורב-בחירה עוקבות אחריו; כל מה שתשאיר לא מסודר מגובה לפי הכי-באיחור-קודם, כמו קודם.
בדיקת שילוב מארח
פתח את /spike בממשק הווב לאחר שה-container מתחיל. הוא בודק כל עיגון ו-CLI (Docker socket, libvirt, restic, qemu-img, rclone) ומדווח על כל חלק חסר, כך שתוכל לוודא שה-container מחווט נכון לפני שאתה מסתמך עליו.
פשוט מול מתקדם¶

בהגדרות אין כפתור שמירה: כל שינוי נכתב ברגע שאתה עושה אותו.
כברירת מחדל הממשק מציג רק את הדברים החיוניים (גיבוי, שחזור, תזמון). השתמש במתג תצוגה פשוטה / תצוגה מתקדמת בסרגל הצד כדי לחשוף את בקרות המומחה: שמירה, עותק מחוץ לאתר, hooks לפני/אחרי, שחזור ברמת הקובץ, התראות, מדדי Prometheus וכלי השלמות/תחזוקה. זוהי העדפה לכל דפדפן וכבויה כברירת מחדל, כך שמתחילים מקבלים ממשק נקי ומשתמשי-על מקבלים את הכול.
בנייה מקוד המקור¶
BombVault היא קובץ בינארי סטטי יחיד של Go, שמגיש JSON API וממשק React מוטמע. בנה קודם את הממשק, ואז הרץ את הקובץ הבינארי:
npm --prefix web ci
npm --prefix web run build # כותב את web/dist, שהקובץ הבינארי מטמיע
export APP_KEY=$(openssl rand -hex 32)
go test ./... # בדיקות יחידה ואינטגרציה, עם סבב הלוך ושוב אמיתי של restic
golangci-lint run ./...
go run ./cmd/bombvault # מגיש את https://localhost:3443 עם תעודה בחתימה עצמית
בניית הממשק נדרשת גם עבור go run. המאגר עוקב תחת web/dist רק אחרי קובץ סמן ריק, ולכן בלי npm --prefix web run build הקובץ הבינארי לא מטמיע כלום ועונה 500 SPA index not found, וזה צפוי. את Docker, libvirt ו-Unraid אי אפשר לבדוק ב-CI, ולכן לפני שאתה פותח pull request, בדוק את העיגונים, את restic ואת חיבור ה-SSH של ה-VM על מארח אמיתי בעזרת בדיקת שילוב מארח (/spike).
הצעדים הבאים¶
- עיין בכל התכונות.
- הבא את כל השרתים של הקבוצה שלך לטלפון עם אפליקציית Android.
- הוסף רפליקה אחת או יותר של מחוץ לאתר והתאוששות (כל דומיין יכול לשלוח למספר יעדים בבת אחת) ושמור את ערכת השחזור שלך.
- משכפל התקנה או עובר לתיבה חדשה? שא את כל התצורה שלך איתך עם כרטיס ייצוא / ייבוא הגדרות. ראה הגדרות.
- נתקלת בבעיה? ראה פתרון בעיות.