البدء¶
تأخذك هذه الصفحة من جهاز Unraid جديد إلى أول نسخة احتياطية لك.
المتطلبات¶
| المتطلب | ملاحظات |
|---|---|
| Unraid 6.12+ | الإصدارات الأقدم غير مُختبَرة. Unraid هو الهدف الأساسي، لكن BombVault يعمل أيضًا على مضيف Docker عادي وعلى TrueNAS Scale (راجع مضيف Docker عام). |
| موقع مستودع restic | مسار محلي (يُنصح به: مصفوفتك أو الكاش)، أو SMB، أو NFS، أو أي خلفية rclone. |
| مقبس Docker | يركّبه القالب تلقائياً (/var/run/docker.sock). |
Unraid flash (/boot) |
يركّبه القالب بالكامل تلقائياً (/boot إلى /host/boot). يشغّل نسخ الفلاش الاحتياطي ويتيح لحاوية مُستعادة أن تظهر من جديد كتطبيق 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. المضيف العام لا يحمل في ذاته أي مدير للأجهزة الافتراضية.
- لا توجد أداة للوحة Dashboard. BombVault Widget إضافة لـ Unraid، لذا تُتخطّى هذه الخطوة أيضًا.
- العثور على بيانات الحاوية. من دون اصطلاح
appdataفي Unraid، يُعثر على مجلد بيانات الحاوية من المقاطع الواردة فيDATA_ROOT_SEGMENTS، ومن وحدات Docker المسمّاة، ومن مجلد العمل لمشروع Compose، ومن التسميةbombvault.data(راجع اكتشاف مصادر النسخ الاحتياطي). لا تصل الوحدات المسمّاة والإعداد المسبق/etcإلا إلى المسارات داخل تركيب Host Data، لذا وجّه Host Data إلى مجلد أب مشترك يشمل أيضًا جذر بيانات Docker. PLATFORM. اضبطه علىgenericأوtruenas. إن تُرك غير مضبوط، يتعرّف BombVault على Unraid من علامته الخاصة على تركيب الفلاش ويعامل أي شيء آخر كمضيف عام، وتُتخطّى الخطوات الخاصة بـ Unraid بدلًا من تجربتها وفشلها.
يسلك TrueNAS Scale طريق compose نفسه؛ وقد أُعدّ إدخال للكتالوج في المستودع لكنه لم يُقدَّم بعد. يحتاج نسخ الـ VM الاحتياطي هناك إلى LIBVIRT_URI، لأن libvirtd في TrueNAS يستمع على مقبس خاص به (/run/truenas_libvirt/libvirt-sock) لا تستطيع متغيرات LIBVIRT_* الثلاثة التعبير عنه (راجع الإعدادات). إلى أي مدى ثبت ذلك: جرى نسخ zvol احتياطيًا على جهاز TrueNAS Scale حقيقي، على zvol متصل بـ VM عامل، ونقلته zfs snapshot وzfs send وrestic وzfs receive ذهابًا وإيابًا فعاد مطابقًا بايتًا ببايت. لم تُجرَ بعد استعادة كاملة يقودها BombVault نفسه على عتاد TrueNAS، وكان ذلك الـ zvol متناثرًا (sparse)، لذا لم تُختبر الإنتاجية مع حجم كبير من الجيجابايتات. جرّب استعادة هناك قبل أن تعتمد عليه.
الإعداد المطلوب الوحيد¶
المتغير الوحيد الذي يجب عليك ضبطه هو APP_KEY، وهو سر سداسي عشري بحجم 32 بايت (64 حرفاً سداسياً عشرياً) يُستخدم لاشتقاق كلمة مرور مستودع restic.
أنشئ واحداً على أي جهاز:
الصق النتيجة في حقل APP_KEY في القالب (Unraid)، أو في متغير البيئة APP_KEY في docker-compose.yml (مضيف Docker عام).
لا تفقد APP_KEY الخاص بك
فقدان APP_KEY يجعل نسخك الاحتياطية المشفّرة غير قابلة للاسترداد. احفظه في مكان آمن ومنفصل عن الخادم. بمجرد تشغيل BombVault، استخدم حقيبة استعادة مفتاح التشفير بنقرة واحدة (راجع النسخ خارج الموقع والتعافي) لحفظ حزمة الاستعادة الكاملة.
يركّب القالب أيضاً مقبس Docker والفلاش (/boot) وجذر Host Data (/mnt) نيابةً عنك. تعيش مصادر النسخ الاحتياطي ووجهاته كلاهما ضمن Host Data. للمرجع الكامل للمتغيرات وإعداد النسخ خارج الموقع، راجع الإعدادات.
التشغيل الأول¶

لوحة المعلومات بعد أول نسخة: ما المحمي، وما الذي يعمل تاليًا، وسجل حي.
- افتح واجهة الويب على
https://<your-unraid-ip>:3443(شهادة موقّعة ذاتياً افتراضياً). - في الإعدادات، فعّل نطاقات النسخ الاحتياطي التي تريدها (Containers, VMs, Flash, النسخ الذاتي, المجلدات, مجموعات بيانات ZFS) واختر لون تمييز.
- في تبويب Containers، اختر حاوية وانقر نسخ احتياطي الآن لإنشاء أول نقطة استعادة لك. تُضبط مسارات المستودع افتراضياً على
/mnt/user/bombvault/{container,vms,flash,config,files,zfs}وتُنشَأ عند أول نسخة احتياطية. - أعدّ الجدولة من الإعدادات، الجداول. توجد خاصية تضمين الكل في الجدول بنقرة واحدة للـ containers والـ VMs.
اختياري: اختر ترتيب النسخ الاحتياطي
إذا كان يجب دائماً نسخ بعض الحاويات احتياطياً قبل غيرها (مثلاً قاعدة بيانات قبل التطبيق الذي يستخدمها)، افتح لوحة ترتيب النسخ الاحتياطي في صفحة Containers واسحبها إلى التسلسل الذي تريده. تتبع عندئذٍ عمليات التشغيل المجدولة ومتعددة التحديد ذلك؛ وأي شيء تتركه غير مرتَّب يُنسخ احتياطياً بالأكثر تأخّراً أولاً كما في السابق.
فحص تكامل المضيف
افتح /spike في واجهة الويب بعد بدء الحاوية. يستطلع كل نقطة تركيب وواجهة سطر أوامر (مقبس Docker، libvirt، restic، qemu-img، rclone) ويبلّغ عن أي أجزاء ناقصة، حتى تتأكد من أن الحاوية موصولة بشكل صحيح قبل أن تعتمد عليها.
بسيط مقابل متقدم¶

الإعدادات بلا زر حفظ: كل تغيير يُكتب لحظة إجرائه.
افتراضياً تُظهر الواجهة الأساسيات فقط (النسخ الاحتياطي، الاستعادة، الجدولة). استخدم مفتاح عرض بسيط / عرض متقدم في الشريط الجانبي للكشف عن أدوات التحكم للخبراء: الاحتفاظ، النسخ خارج الموقع، خطافات ما قبل/بعد، الاستعادة على مستوى الملفات، الإشعارات، مقاييس 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، لذا افحص نقاط التركيب وrestic واتصال SSH الخاص بالـ VM على مضيف حقيقي باستخدام فحص تكامل المضيف (/spike) قبل أن تفتح pull request.
الخطوات التالية¶
- تصفّح كامل الميزات.
- ضع كل خوادم مجموعتك على هاتفك مع تطبيق Android.
- أضف نسخة متماثلة أو أكثر من النسخ خارج الموقع والتعافي (يمكن لكل نطاق الإرسال إلى عدة وجهات في آن واحد) واحفظ حقيبة الاستعادة الخاصة بك.
- تستنسخ إعداداً أو تنتقل إلى جهاز جديد؟ انقل إعداداتك بالكامل ببطاقة تصدير / استيراد الإعدادات. راجع الإعدادات.
- واجهت عقبة؟ راجع استكشاف الأخطاء وإصلاحها.