الإعدادات¶
تغطي هذه الصفحة متغيرات بيئة الحاوية، ونقاط التركيب التي يوفرها القالب، ونسخ الـ VM الاحتياطي عبر SSH، وإعداد النسخ خارج الموقع. تُضبَط مسارات مستودع النسخ الاحتياطي داخل التطبيق (الإعدادات، مسارات النسخ الاحتياطي)، لا عبر متغيرات البيئة.
متغيرات البيئة¶
| المتغير | مطلوب | الوصف |
|---|---|---|
APP_KEY |
نعم | سر سداسي عشري بحجم 32 بايت (64 حرفاً سداسياً عشرياً) يُستخدم لاشتقاق كلمة مرور مستودع restic. أنشئه بـ openssl rand -hex 32. احفظه بأمان: فقدانه يجعل النسخ الاحتياطية المشفّرة غير قابلة للاسترداد. |
LIBVIRT_HOST |
للـ VMs | مضيف Unraid المُتصَل به عبر SSH لنسخ الـ VM الاحتياطي (افتراضياً host.docker.internal؛ يملأ القالب مسبقاً عنصراً نائباً بعنوان 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، فتجيب واجهة الويب على https://<ip>:3443). |
HTTP_ONLY |
لا | اضبط true لتعطيل مستمع HTTPS الموقّع ذاتياً وتقديم HTTP عادي فقط (للاستخدام خلف عاكس بروكسي ينهي TLS). |
HOST_SOURCE_ROOT |
لا | مسار المضيف المُركَّب كـ Host Data (افتراضياً /mnt). يترجم BombVault مصادر التركيب المرتبط التي يبلّغ عنها Docker إلى مسارات ضمن نقطة التركيب هذه. غيّره فقط إذا ركّبت جذر مضيف مختلفاً. |
BOMBVAULT_SELF_CONTAINER |
لا | اسم حاوية BombVault نفسها، حتى لا تنسخ نفسها احتياطياً (ومن ثم توقف نفسها) أبداً (افتراضياً BombVault؛ يُكتشَف تلقائياً عبر اسم المضيف على شبكة الجسر). |
BACKUP_MAX_HOURS |
لا | الحد الأقصى لساعات الوقت الفعلي التي قد تحتفظ فيها نسخة احتياطية واحدة بقفل نطاقها قبل إلغائها قسراً (حارس حتى لا يستطيع تشغيل عالق حجب النطاق إلى الأبد). الفارغ (الافتراضي) يستخدم 48. ارفعه للنسخ السحابية الكبيرة جداً أو البطيئة (تشغيل مُلغى عند الحد يفشل بـ context deadline exceeded). اضبط 0 لتعطيل الحد بالكامل. |
TZ |
لا | المنطقة الزمنية للمجدوِل (مثلاً Europe/Berlin). |
نقاط التركيب¶
ركّب مقبس Docker والفلاش (/boot) وجذر Host Data (/mnt) كما هو موضّح في قالب CA. تعيش مصادر النسخ الاحتياطي ووجهاته كلاهما ضمن Host Data، وهي مركَّبة rslave فتصبح مشاركة بعيدة تُركَّب بعد بدء الحاوية (مثلاً ضمن /mnt/remotes) مرئية دون إعادة تشغيل.
تُضبَط مسارات مستودع النسخ الاحتياطي افتراضياً على /mnt/user/bombvault/{container,vms,flash,config,files}، وتُنشَأ عند أول نسخة احتياطية. غيّر الموقع في أي وقت في Settings, Backup paths.
فحص تكامل المضيف
افتح /spike في واجهة الويب بعد بدء الحاوية. يستطلع كل نقطة تركيب وواجهة سطر أوامر (مقبس Docker، libvirt، restic، qemu-img، rclone) ويبلّغ عن أي أجزاء ناقصة.
نموذج الأمان¶
تحكّم بالمضيف يعادل صلاحيات root
عبر مقبس Docker يستطيع BombVault إيقاف الحاويات وإزالتها وإعادة إنشائها وقراءة/كتابة appdata، ولأجل نسخ الـ VM احتياطياً يسجّل الدخول إلى المضيف عبر SSH (qemu+ssh://، root افتراضياً) لتشغيل virsh. أي شخص يستطيع الوصول إلى واجهة الويب لديه فعلياً صلاحيات root على المضيف.
- حماية اختيارية بكلمة مرور (الإعدادات، الأمان): اضبط كلمة مرور لتتطلب تسجيل الدخول، وامسحها للتعطيل. معطَّلة افتراضياً للاستخدام على شبكة LAN موثوقة. تُوقَّع الجلسات (HMAC مشتق من
APP_KEY) ويُبطِل تغييرُ كلمة المرور صلاحيتها؛ وعمليات تسجيل الدخول مُحدَّدة المعدل. - لأن البوابة اختيارية، فحين تكون غير مضبوطة تكون الواجهة وواجهة API بالكامل (بما في ذلك إعداد النسخ خارج الموقع، ومسارات اختبار العبث، وحقيبة الاستعادة) قابلة للوصول من أي شخص يستطيع الوصول إلى المنفذ. فعّل البوابة بمجرد استخدام النسخ خارج الموقع أو النسخ غير القابلة للتغيير أو التشفير.
- شغّل BombVault فقط على شبكة موثوقة وغير معرّضة. للوصول عن بُعد ضعه خلف عاكس بروكسي يضيف المصادقة وTLS. تحمل الاستجابات ترويسات أمان أساسية (CSP،
nosniff،X-Frame-Options،Referrer-Policy). - مع
HTTP_ONLY=trueيفقد ملف تعريف ارتباط الجلسة علامةSecure(يجب ذلك، ليعمل عبر HTTP العادي)، لذا فعّل كلمة المرور فقط خلف بروكسي ينهي TLS إذا كانت السرّية مهمة. - يثق اتصال SSH لنسخ الـ VM بمفتاح المضيف عند أول اتصال (TOFU) ويثبّته بعد ذلك. تحقق من مفتاح المضيف خارج النطاق إذا كان مسار الحاوية إلى المضيف غير موثوق.
- تُشفَّر النسخ الاحتياطية بواسطة restic عند تفعيل التشفير (الإعدادات؛ مفعَّل افتراضياً)، بمفتاح مشتق من
APP_KEY.
نسخ الـ VM الاحتياطي عبر SSH¶
ينسخ BombVault أجهزة KVM/libvirt الافتراضية احتياطياً دون تركيب أي مسار libvirt. يشغّل virsh على المضيف عبر SSH (qemu+ssh://)، فلا يمكنه أبداً التأثير على مدير الأجهزة الافتراضية للمضيف.
إعداد سريع:
- الإعدادات، النظام، VM Backup over SSH: انسخ المفتاح العام المعروض.
- ألحِقه بـ
/root/.ssh/authorized_keysفي Unraid (يُحفَظ أيضاً إلى الفلاش فيبقى بعد إعادة التشغيل). - انقر Test connection.
يضيف القالب --add-host=host.docker.internal:host-gateway حتى تستطيع الحاوية الوصول إلى المضيف. اضبط LIBVIRT_HOST على عنوان LAN IP الخاص بـ Unraid إذا لم يُحَل ذلك الاسم (مثلاً عندما تعمل الحاوية على شبكة br0.x مخصصة). إذا غيّرت منفذ SSH في Unraid، اضبط LIBVIRT_SSH_PORT ليطابقه. تحتاج اللقطات الحية إضافةً إلى ذلك وكيل ضيف qemu في الـ VM والقرص على /mnt/cache (لا /mnt/user).
دليل إعداد الـ VM والشبكة الكامل
يوجد الدليل الكامل خطوة بخطوة (تفعيل SSH، تفويض المفتاح الدائم، توجيه الشبكة المخصصة وVLAN، الطريقة لكل VM واستكشاف الأخطاء من جانب المضيف) في docs/vm-backup-ssh-setup.md على GitHub.
إعداد النسخ خارج الموقع¶
أعدّ نسخة متماثلة خارج الموقع في تبويب Settings, Off-site. راجع النسخ خارج الموقع والتعافي لسير العمل الكامل (غير قابل للتغيير/append-only، واختبار العبث، وتمارين التعافي من الكوارث). باختصار:
- الخلفيات: SMB/CIFS وNFS (ركّب المشاركة ووجّه مسار نسخ احتياطي إليها)، أو خلفيات restic الأصلية دون rclone (
s3:...،rest:http://host:8000/repo،b2:...،sftp:user@host:/repo)، أو أي remote في rclone (rclone:<remote>:<bucket>/path). - بيانات اعتماد السحابة تُخزَّن مشفَّرة ضمن الإعدادات، Off-site، Cloud credentials.
- أهداف SSH لا تحتاج تثبيت أي شيء على الطرف البعيد. يحتاج
sftp:فقط خادم SSH. أضف المفتاح العام من Settings, System, VM Backup over SSH (أيضاً في/config/ssh/id_ed25519.pub) إلى~/.ssh/authorized_keysللمستخدم الهدف. - نسخة خارج الموقع: ينسخ BombVault اللقطات الجديدة بـ
restic copyعلى أساس بذل أفضل جهد. يبقى المستودع المحلي أساسياً. لكل نطاق جدوله الزمني الخاص خارج الموقع، إضافة إلى زر Replicate now. - أهداف متعددة خارج الموقع لكل نطاق: يمكن لكل نطاق النسخ إلى عدة وجهات خارج الموقع في آن واحد. أضف أهدافاً إضافية في الإعدادات، Off-site، لكلٍّ مستودعه الخاص وفئة تخزين S3 وعلامة append-only واحتفاظ وميزانية نمو؛ وكلها تُنسَخ وفق جدول ذلك النطاق خارج الموقع. يُنقَل إعداد خارج الموقع واحد موجود بوصفه الهدف الأول.
- الاحتفاظ لكل مصدر: تعيش السياسة المحلية في الإعدادات، Paths & Storage؛ وسياسة خارج الموقع في الإعدادات، Off-site (اتركها كلها صفراً لعدم تقليم اللقطات خارج الموقع تلقائياً أبداً).
- حدود النطاق: حُدّ معدل رفع/تنزيل restic ضمن الإعدادات، Off-site.
- فئة تخزين باردة وأرشيفية (S3): لمستودع S3 أصلي خارج الموقع، اختر مستوى قابلاً للقراءة عند الاستعادة (Standard، Standard-IA، One Zone-IA، Intelligent-Tiering، Glacier Instant Retrieval). أما remotes في rclone فتضبط فئتها في إعداد rclone.
إعدادات محمولة (تصدير واستيراد)¶
تكتب بطاقة تصدير الإعدادات واستيرادها في صفحة الإعدادات إعدادات BombVault بالكامل (إعدادات النطاقات، الأهداف خارج الموقع، الجداول الزمنية، الاحتفاظ، الإشعارات) إلى ملف JSON محمول يمكنك استيراده على نسخة أخرى، فلا يعني الانتقال إلى جهاز جديد أو استنساخ إعداد إعادة إدخال كل شيء يدوياً. يعرض الاستيراد معاينة ويطلب تأكيداً، ولا يمس بيانات نسخك الاحتياطية أو سجلها أبداً.
قد يحتوي التصدير على بيانات اعتماد
أنت تختار ما إذا كنت ستُضمّن بيانات اعتماد خارج الموقع والإشعارات في الملف. مع تضمين بيانات الاعتماد، يكون التصدير حساساً مثل حقيبة الاستعادة الخاصة بك، فاحفظه في مكان آمن. بدونها، يحمل الملف إعدادات غير سرّية فقط.