الإعدادات¶
تغطي هذه الصفحة متغيرات بيئة الحاوية، ونقاط التركيب التي يوفرها القالب، ونسخ الـ 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 مخصصة. يُستخدم أيضًا لنسخ مجموعات بيانات ZFS (حقل القالب Host SSH: Address)؛ والقيمة المؤقتة 192.168.x.x تُعدّ غير مضبوطة. |
LIBVIRT_SSH_PORT |
لا | منفذ SSH للمضيف لنسخ الـ VM الاحتياطي (افتراضياً 22). حقل القالب Host SSH: Port، ويُستخدم أيضًا لمجموعات بيانات ZFS. |
LIBVIRT_SSH_USER |
لا | مستخدم SSH على المضيف لنسخ الـ VM الاحتياطي (افتراضياً root). حقل القالب Host SSH: User، ويُستخدم أيضًا لمجموعات بيانات ZFS. |
LIBVIRT_URI |
لا | رابط اتصال libvirt الكامل، يُستخدَم حرفياً بدلاً من بنائه من متغيرات LIBVIRT_* الثلاثة أعلاه (التي تُتجاهَل حينئذٍ في سلسلة الاتصال). غير مضبوط افتراضياً. مطلوب على TrueNAS Scale، حيث يستمع libvirtd فيه على مقبس غير قياسي لا تستطيع الصيغة المبنية تلقائياً التعبير عنه: qemu+ssh://<user>@<truenas-host>/system?socket=/run/truenas_libvirt/libvirt-sock. راجع قسم TrueNAS Scale في docs/vm-backup-ssh-setup.md. إذا كان رابط qemu+ssh:// فإن كل متغير من LIBVIRT_HOST وLIBVIRT_SSH_USER وLIBVIRT_SSH_PORT غير مضبوط يُؤخذ منه، وكذلك لأوامر SSH الخاصة بـ BombVault (نقل NVRAM ومجموعات بيانات ZFS). |
PORT |
لا | منفذ HTTP (افتراضياً 3000؛ يُستخدَم فقط مع HTTP_ONLY=true). |
HTTPS_PORT |
لا | منفذ HTTPS (افتراضياً 3443؛ ينشره القالب 1:1، فتجيب واجهة الويب على https://<ip>:3443). |
HTTP_ONLY |
لا | اضبط true لتعطيل مستمع HTTPS الموقّع ذاتياً وتقديم HTTP عادي فقط (للاستخدام خلف عاكس بروكسي ينهي TLS). |
BIND_HOST |
لا | العنوان الذي تستمع عليه واجهة الويب (افتراضياً 0.0.0.0، كل الواجهات). اتركه غير مضبوط داخل الحاوية، لأن منافذها المنشورة تحتاج كل الواجهات؛ ويناسب 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 Data (افتراضياً /mnt). يترجم BombVault مصادر التركيب المرتبط التي يبلّغ عنها Docker إلى مسارات ضمن نقطة التركيب هذه. غيّره فقط إذا ركّبت جذر مضيف مختلفاً. |
DATA_ROOT_SEGMENTS |
لا | أسماء أجزاء مسار مفصولة بفواصل تُعلِّم مصدر تركيب مرتبط بوصفه بيانات نسخ احتياطي (افتراضياً appdata، مطابقةً لاصطلاح Unraid في /mnt/user/appdata/<container>). يُختار تركيب الحاوية المرتبط تلقائياً للنسخ الاحتياطي عندما يظهر أي جزء مُدرَج كجزء مسار كامل في مصدره على المضيف؛ فمثلاً DATA_ROOT_SEGMENTS=appdata,config يلتقط أيضاً تركيباً بـ .../config. راجع كشف مصدر النسخ الاحتياطي للطرق الأخرى الفعّالة دائماً التي يُعثَر بها على مجلد بيانات الحاوية. |
PLATFORM |
لا | يفرض المنصة التي يعتبر BombVault نفسه يعمل عليها بدلاً من اكتشافها تلقائياً: unraid أو generic أو truenas (غير مضبوط افتراضياً؛ يكتشف Unraid تلقائياً باستطلاع علامة dockerMan الخاصة به تحت تركيب الفلاش، وإلا فـ generic؛ وأي قيمة غير معروفة تتراجع أيضاً إلى generic، مع تسجيل ذلك). اضبطه صراحةً على مضيف Docker عام أو TrueNAS Scale بدلاً من الاعتماد على الاستطلاع التلقائي الخاص بـ Unraid وحده؛ وهذا ما يفعله ملف compose العام. يغيّر اصطلاح appdata الاحتياطي، والوجهات الافتراضية للاستعادة عبر النسخ، وما إذا كانت خطوات الإشعارات/الإضافة المرافقة الخاصة بـ Unraid فقط تُحاوَل من الأساس (راجع internal/platform). |
BOMBVAULT_SELF_CONTAINER |
لا | اسم حاوية BombVault نفسها، حتى لا تنسخ نفسها احتياطياً (ومن ثم توقف نفسها) أبداً. |
BACKUP_MAX_HOURS |
لا | الحد الأقصى لساعات الوقت الفعلي التي قد تحتفظ فيها نسخة احتياطية واحدة بقفل نطاقها قبل إلغائها قسراً (حارس حتى لا يستطيع تشغيل عالق حجب النطاق إلى الأبد). الفارغ (الافتراضي) يستخدم 48. ارفعه للنسخ السحابية الكبيرة جداً أو البطيئة (تشغيل مُلغى عند الحد يفشل بـ context deadline exceeded). اضبط 0 لتعطيل الحد بالكامل. |
BACKUP_STALL_HOURS |
لا | عدد الساعات التي قد تمضيها نسخة احتياطية دون أي تقدم على الإطلاق قبل إلغائها. الفارغ (الافتراضي) يستخدم 2؛ اضبط 0 لعدم الإلغاء أبداً بسبب التوقف. هذا هو الأدق بين الحارسين وعادة هو الذي ينطلق: فهو يراقب هل ما زال شيء يحدث، لا كم استغرق التشغيل، فتُترَك نسخة احتياطية بطيئة لكنها سليمة بحجم عدة تيرابايت وشأنها، بينما تُوقَف نسخة عالقة على مشاركة لا تستجيب خلال ساعات بدلاً من أيام. يُسجَّل تحذير بعد 30 دقيقة من السكون، قبل إلغاء أي شيء. يُحتسَب الفحص تقدماً: لا يكتب restic أي بايت بينما يجتاز شجرة كبيرة، وتُراقَب هذه المرحلة عبر مجاميع الملفات والبايتات لديه لا عبر البايتات المكتوبة. المتغيران مستقلان، وما زال BACKUP_MAX_HOURS يحدّ المراحل التي تلي النسخة الاحتياطية نفسها (الاحتفاظ، والإحصاءات، والنسخ خارج الموقع)، حيث لا توجد عدّادات لمراقبتها. |
DB_DUMP_MAX_HOURS |
لا | عدد الساعات التي يُسمح فيها لتفريغ قاعدة بيانات تلقائي واحد بالعمل قبل إيقافه. الفراغ (الافتراضي) يعني 6؛ والقيم المسموح بها من 1 إلى 48، ويبقى الحد أقل بساعة من BACKUP_MAX_HOURS (وعند نصفه إذا كان أقل من ساعتين)، حتى يُقطع التفريغ الطويل بحدّه هو ويُبلَّغ عنه كذلك بدل أن يجرّ النسخة الاحتياطية معه. أما التفريغ الذي يتوقف عن التقدم فيُوقَف قبل ذلك، بعد BACKUP_STALL_HOURS. التفريغ المُوقَف يفشل بذاته وتستمر نسخة الحاوية الاحتياطية. في Unraid تضيف المتغير إلى حاوية BombVault عبر Add another Path, Port, Variable. |
TZ |
لا | المنطقة الزمنية للمجدوِل (مثلاً Europe/Berlin). إذا تُرك غير مضبوط فستعمل كل الجداول بتوقيت UTC: الجدول المضبوط على 02:30 ينطلق عندئذ في 02:30 بتوقيت UTC وليس بالتوقيت المحلي. على Unraid لا تضبط هذا بنفسك أبدًا: يمرر النظام منطقته الزمنية إلى كل حاوية. ويذكر سجل الإقلاع المنطقة التي اعتمدها. المنطقة التي تطبّق التوقيت الصيفي تتخطى تشغيلًا واحدًا في الربيع وتشغّل واحدًا مرتين في الخريف، أما UTC فلا يفعل هذا ولا ذاك، لكنه ينزاح ساعة عن ساعتك مرتين في السنة. |
نقاط التركيب¶
ركّب مقبس Docker والفلاش (/boot) وجذر Host Data (/mnt) كما هو موضّح في قالب CA. تعيش مصادر النسخ الاحتياطي ووجهاته كلاهما ضمن Host Data، وهي مركَّبة slave فتصبح مشاركة بعيدة تُركَّب بعد بدء الحاوية (مثلاً ضمن /mnt/remotes) مرئية دون إعادة تشغيل.
نسخ مجموعات بيانات ZFS يحتاج هذا الوضع أيضًا: المضيف لا يركّب لقطة مجموعة البيانات إلا بعد أن تبدأ الحاوية. راجع مجموعات بيانات ZFS.
تُضبَط مسارات مستودع النسخ الاحتياطي افتراضياً على /mnt/user/bombvault/{container,vms,flash,config,files,zfs}، وتُنشَأ عند أول نسخة احتياطية. غيّر الموقع في أي وقت في الإعدادات، التخزين، مسارات النسخ الاحتياطي. ولكل حقل مسار أيضاً مفتاح محلي / عن بُعد مدمج: يمكن أن يكون المسار remote لـ restic (s3:...، rest:...، sftp:...، rclone:...) بدلاً من مجلد محلي، فيُنسَخ احتياطياً إليه مباشرة دون نسخة محلية منفصلة؛ راجع المستودعات الأساسية البعيدة.
فحص تكامل المضيف
افتح /spike في واجهة الويب بعد بدء الحاوية. يستطلع كل نقطة تركيب وواجهة سطر أوامر (مقبس Docker، libvirt، restic، qemu-img، rclone) ويبلّغ عن أي أجزاء ناقصة.
اكتشاف مصادر النسخ الاحتياطي¶
لكل حاوية يختار BombVault بنفسه أي ارتباطات bind وأي وحدات تخزين مُسمّاة تدخل في النسخة. يُؤخذ المسار متى انطبق أي مما يلي (يمكنك دائمًا تجاوز النتيجة لكل حاوية في مجلدات النسخ الاحتياطي الخاصة بها):
- تطابق مع جزء من جذر البيانات: يحتوي مصدر الارتباط على المضيف على أحد أجزاء
DATA_ROOT_SEGMENTSكمكوّن كامل من المسار (افتراضيًاappdataفقط). - وحدات تخزين Docker المُسمّاة تُدرج دائمًا، لأنه لا يوجد لها مقابل قابل للاستغناء ومن ثم لا شيء لتصفيته، لكن فقط عندما يكون مسار التخزين الحقيقي للوحدة على المضيف نفسه قابلًا للوصول عبر ضم Host Data، تمامًا كأي مسار مضيف آخر ينسخه BombVault. يضع مشغّل الوحدات المحلية الافتراضي الوحدة تحت جذر بيانات الخفي نفسه، أي
/var/lib/docker/volumes/<الاسم>/_dataما لم تُغيّره (تحقق بالأمرdocker info -f '{{.DockerRootDir}}'). هذا الموقع غير مشمول بضم Host Data الضيق ذي المجلد الواحد الذي يستخدمه ملفdocker-compose.ymlالعام افتراضيًا. الوحدة غير القابلة للوصول تُتخطّى بصمت، وليست خطأ. ولكي تُنسخ الوحدات المُسمّاة فعليًا على مضيف عام، وجّه Host Data (وHOST_SOURCE_ROOT) إلى مجلد أب مشترك يغطي أيضًا جذر بيانات Docker: المفاضلة موضحة في تعليق Host Data داخل ملف compose (يتفادى Unraid ذلك بضم/mntكاملًا، وهو عرفه الشامل في المستوى الأعلى، للسبب نفسه). - مجلد مشروع Docker Compose: إذا حملت الحاوية الوسم المعتاد
com.docker.compose.project.working_dir(يضعهdocker compose upتلقائيًا)، أُضيف ذلك المجلد أيضًا، بغض النظر عن مطابقة أي ارتباط لجزء من جذر البيانات. - التجاوز عبر الوسم
bombvault.data: ضع على الحاوية الوسمbombvault.data=trueلإدراج كل ارتباطات bind الخاصة بها، من أجل ترتيب لا يلتقطه أي من العُرفين أعلاه (مثل ارتباط واحد/srv/plex/configبلا مشروع Compose). أي قيمة غير فارغة عداfalseتُحتسب صحيحة؛ وغياب الوسم أوbombvault.data=falseلا يغيّر شيئًا. - اللصيقة
bombvault.dbdump: ضع على الحاويةbombvault.dbdump=falseلإطفاء تفريغ قاعدة بياناتها التلقائي (و0وnoوoffتفعل الشيء نفسه)، أو سمِّ المحرك (postgresأوmysqlأوmariadb) لتفريغ حاوية لا يتعرّف عليها BombVault من تلقاء نفسه. تَغلِب اللصيقةُ المفتاحَ الموجود في بطاقة الحاوية، وهو الطريق المعتاد في Unraid.
نموذج الأمان¶
تحكّم بالمضيف يعادل صلاحيات root
عبر مقبس Docker يستطيع BombVault إيقاف الحاويات وإزالتها وإعادة إنشائها وقراءة/كتابة appdata، ولأجل نسخ الـ VM احتياطياً يسجّل الدخول إلى المضيف عبر SSH (qemu+ssh://، root افتراضياً) لتشغيل virsh. أي شخص يستطيع الوصول إلى واجهة الويب لديه فعلياً صلاحيات root على المضيف.
- حماية اختيارية بكلمة مرور (الإعدادات، الأمان): عيّن كلمة مرور لطلب تسجيل الدخول، وامسحها للتعطيل. معطّلة افتراضيًا للاستخدام في شبكة محلية موثوقة. تُخزَّن كلمة المرور باستخدام Argon2id فوق قيمة مُتبَّلة بـ
APP_KEY، فنسخة مقلَّدة من/configلا قيمة لها بدون المفتاح وبطيئة الاختراق معه. تحتاج كلمة المرور الجديدة إلى 12 حرفًا على الأقل؛ وتظل كلمة مرور أقصر موجودة مسبقًا تعمل حتى تُغيَّر. الجلسات موقّعة (HMAC مشتق منAPP_KEY) وتغيير كلمة المرور يبطلها؛ وتسجيلات الدخول محدودة بخمسة إخفاقات في الدقيقة لكل عميل. - المصادقة بخطوتين (الإعدادات): رمز زمني من تطبيق مصادقة إضافة إلى كلمة المرور، مع ثمانية رموز استرداد تُستخدم مرة واحدة وتُسلَّم مرة واحدة عند التفعيل. يُخزَّن السر المشترك مشفَّرًا بـ
APP_KEY، ويتطلب التعطيل رمزًا حاليًا. - مفاتيح المرور (WebAuthn) لها بطاقتها الخاصة بمجرد ضبط كلمة مرور، وتعمل إلى جانب كلمة المرور لا بدلًا منها أبدًا، فإزالة كل مفاتيح المرور لا تُقفل الباب أمام أحد. وتحتاج إلى اسم نطاق حقيقي وشهادة يثق بها المتصفح. والعنوان الافتراضي
https://<ip>:3443هو بالضبط ما يرفضه WebAuthn، والبطاقة تقول ذلك بدلًا من أن تعرض زرًا سيفشل. - التغييرات تحتاج إلى JSON. يجب على الطلب الذي يغيّر شيئًا أن يرسل
Content-Type: application/jsonوألا يعلّمه المتصفح بأنه عابر للمواقع، فلا تستطيع صفحة على موقع آخر أن تجعل متصفحك يغيّر الإعدادات على عنوان في الشبكة المحلية. السكربت الذي يتعامل مع API يرسل هذه الترويسة؛ وكل ما عدا ذلك يُرفض بـ415. - لأن البوابة اختيارية، فحين تكون غير مضبوطة تكون الواجهة وواجهة API بالكامل (بما في ذلك إعداد النسخ خارج الموقع، ومسارات اختبار العبث، وحقيبة الاستعادة) قابلة للوصول من أي شخص يستطيع الوصول إلى المنفذ. فعّل البوابة بمجرد استخدام النسخ خارج الموقع أو النسخ غير القابلة للتغيير أو التشفير.
- شغّل BombVault فقط على شبكة موثوقة وغير معرّضة. للوصول عن بُعد ضعه خلف عاكس بروكسي يضيف المصادقة وTLS. تحمل الاستجابات ترويسات أمان أساسية (CSP،
nosniff،X-Frame-Options،Referrer-Policy). - خلف وكيل عكسي يحمل كل طلب عنوان الوكيل، لذا بدون
TRUSTED_PROXYيحسب المكبح كل العملاء في سلة واحدة وتُقفل إخفاقات المهاجم الباب أمامك أنت أيضًا. اذكر الوكيل فيTRUSTED_PROXYليعود العد لكل عميل على حدة. - يجب على الوكيل العكسي أمام BombVault أن يمرر ترويسة
AuthorizationأوX-API-Keyإلى/mcpوألا يخزّن الردود مؤقتًا، وإلا فلن يتمكن المساعدون من الاتصال. انظر خادم MCP. - تجيب نقطة نهاية MCP
/mcpبـ404إلى أن يوجد مفتاح أو يُفعَّل تسجيل الدخول عبر OAuth، وتطلب من كل عميل مفتاحه أو رمزه حتى مع تعطيل كلمة مرور تسجيل الدخول؛ ولا يُستثنى أي عنوان، ولا حتىlocalhost. ليست لها أدوات استعادة أو حذف، واستعادة نسخة احتياطية للإعدادات تبطل كل المفاتيح. انظر خادم MCP. - مع
HTTP_ONLY=trueيفقد ملف تعريف ارتباط الجلسة علامةSecure(يجب ذلك، ليعمل عبر HTTP العادي)، لذا فعّل كلمة المرور فقط خلف بروكسي ينهي TLS إذا كانت السرّية مهمة. - يثق اتصال SSH لنسخ الـ VM بمفتاح المضيف عند أول اتصال (TOFU) ويثبّته بعد ذلك. تحقق من مفتاح المضيف خارج النطاق إذا كان مسار الحاوية إلى المضيف غير موثوق.
- تُشفَّر النسخ الاحتياطية بواسطة restic عند تفعيل التشفير (الإعدادات؛ مفعَّل افتراضياً)، بمفتاح مشتق من
APP_KEY.
خادم MCP¶
لا يحتاج خادم MCP إلى أي متغير بيئة. تفعّله بإنشاء مفتاح في الإعدادات، التكاملات، خادم MCP، ويجيب على /mcp على المنفذ نفسه الذي تستخدمه واجهة الويب (مثل https://192.168.1.10:3443/mcp). ومن دون مفتاح نشط يجيب هذا المسار بـ 404. العملاء والشهادات والحدود موصوفة في صفحة خادم MCP.
نسخ الـ VM الاحتياطي عبر SSH¶
ينسخ BombVault أجهزة KVM/libvirt الافتراضية احتياطياً دون تركيب أي مسار libvirt. يشغّل virsh على المضيف عبر SSH (qemu+ssh://)، فلا يمكنه أبداً التأثير على مدير الأجهزة الافتراضية للمضيف.
تركيب مقبس libvirt الخاص بالمضيف داخل حاوية أمر هش على Unraid: فهذه المسارات يملكها مدير الأجهزة الافتراضية، وتبديل "Enable VMs" قد يترك libvirt عاجزًا عن البدء. أما مفتاح SSH فيمنح صلاحيات root على المضيف، وهو مستوى الثقة نفسه الذي يمنحه مقبس Docker الذي يستخدمه BombVault أصلًا.
إعداد سريع:
- الإعدادات، التكاملات، SSH المضيف: انسخ المفتاح العام المعروض.
- ألحِقه بـ
/root/.ssh/authorized_keysفي Unraid (يُحفَظ أيضاً إلى الفلاش فيبقى بعد إعادة التشغيل). - انقر اختبار الاتصال.
يضيف القالب --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.
إعداد النسخ خارج الموقع¶
أعدّ نسخة متماثلة خارج الموقع في صفحة الإعدادات، خارج الموقع. راجع النسخ خارج الموقع والتعافي لسير العمل الكامل (غير قابل للتغيير/append-only، واختبار العبث، وتمارين التعافي من الكوارث). باختصار:
- الخلفيات: SMB/CIFS وNFS (ركّب المشاركة ووجّه مسار نسخ احتياطي إليها)، أو خلفيات restic الأصلية دون rclone (
s3:...،rest:http://host:8000/repo،sftp:user@host:/repo)، أو أي remote في rclone (rclone:<remote>:<bucket>/path). لا تملك Backblaze B2 واجهة خلفية أصلية هنا: يُوصَل إليها عبر نقطة نهاية S3 الخاصة بها (s3:https://s3.<region>.backblazeb2.com/<bucket>/<path>)، بإدخال معرّف المفتاح ومفتاح التطبيق كبيانات اعتماد S3. - بيانات اعتماد السحابة المشتركة تُخزَّن مشفَّرة ضمن الإعدادات، الوصول السحابي، بيانات اعتماد السحابة المشتركة.
- أهداف SSH لا تحتاج تثبيت أي شيء على الطرف البعيد. يحتاج
sftp:فقط خادم SSH. أضف المفتاح العام من الإعدادات، التكاملات، SSH المضيف (أيضاً في/config/ssh/id_ed25519.pub) إلى~/.ssh/authorized_keysللمستخدم الهدف. - نسخة خارج الموقع: ينسخ BombVault اللقطات الجديدة بـ
restic copyعلى أساس بذل أفضل جهد، فوق مستودع أساسي (محلي عادةً). لكل نطاق جدوله الزمني الخاص خارج الموقع، إضافة إلى زر نسخ الآن. - أهداف متعددة خارج الموقع لكل نطاق: يمكن لكل نطاق النسخ إلى عدة وجهات خارج الموقع في آن واحد. أضف أهدافاً إضافية في الإعدادات، خارج الموقع، لكلٍّ مستودعه الخاص وفئة تخزين S3 وعلامة append-only واحتفاظ وميزانية نمو؛ وكلها تُنسَخ وفق جدول ذلك النطاق خارج الموقع. يُنقَل إعداد خارج الموقع واحد موجود بوصفه الهدف الأول.
- الوجهات: تُعَدّ الوجهات خارج الموقع مرة واحدة تحت الإعدادات، خارج الموقع، الوجهات، عبر معالج يسرد كل خدمة مدعومة. راجع الوجهات.
- الموضع لكل عنصر: تُضيء كل حاوية وVM ومجموعة مجلدات محلي والأهداف التي تحصل على نسخها الاحتياطية. ويضبط الإعدادات، التخزين، افتراضيات الموضع ذلك لكل نطاق للعناصر التي ليس لها اختيار خاص بها. راجع الموضع لكل عنصر.
- الاحتفاظ لكل مصدر: تعيش السياسة المحلية وسياسة خارج الموقع معاً في الإعدادات، الاحتفاظ (اترك سياسة خارج الموقع صفراً بالكامل لعدم تقليم اللقطات خارج الموقع تلقائياً أبداً). في كل من البطاقتين الاحتفاظ المحلي والاحتفاظ خارج الموقع تمنح قواعد الاحتفاظ لكل مصدر الحاويات والأجهزة الافتراضية وflash والمجلدات وZFS والنسخ الذاتي قواعد احتفاظ خاصة بها، لنسخها المحلية ولمستودعها خارج الموقع. المصدر الذي ليست له قواعد خاصة يتبع القواعد المشتركة، ويستخدم الاحتفاظ بعد كل نسخ احتياطي والنسخ إلى خارج الموقع والتنظيف اليدوي ومعاينة الاحتفاظ قواعد المصدر الذي تعمل عليه. الأهداف الإضافية خارج الموقع تحتفظ بالقواعد المضبوطة لها في الإعدادات، خارج الموقع.
- حدود النطاق: حُدّ معدل رفع/تنزيل restic ضمن الإعدادات، خارج الموقع.
- البث أولًا: في الإعدادات، خارج الموقع، اختر خوادم الوسائط (يُختار Plex وJellyfin وEmby مسبقًا حسب اسم الصورة)، ومعدل الإرسال الذي يُعد عنده الخادم في حالة بث، وحد الرفع أثناء البث، والمدة بعد البث قبل عودة الحد العادي.
- فئة تخزين باردة وأرشيفية (S3): لمستودع S3 أصلي خارج الموقع، اختر مستوى قابلاً للقراءة عند الاستعادة (Standard، Standard-IA، One Zone-IA، Intelligent-Tiering، Glacier Instant Retrieval). أما remotes في rclone فتضبط فئتها في إعداد rclone.
- أساسي بعيد بدلاً من المحلي: يمكن أن يكون مسار النسخ الاحتياطي لنطاق ما نفسه واحداً من الخلفيات أعلاه، دون نسخة محلية ودون خطوة نسخ متماثل؛ راجع المستودعات الأساسية البعيدة لمعرفة مفتاح محلي/عن بُعد المدمج وإعدادات الأمان الخاصة به (عرض النطاق، وappend-only، وميزانية النمو).
الحالات الشاذة¶
يُضبط اكتشاف الشذوذ في بطاقة الحالات الشاذة ضمن الإعدادات، السلامة. يُحفظ كل عنصر تحكم فور تغييره، وتُخفى العناصر الثلاثة أسفل المفتاح ما دام الاكتشاف متوقفًا.
| الإعداد | الافتراضي | ما يفعله |
|---|---|---|
| اكتشاف الحالات الشاذة | مفعّل | يقارن كل نسخة بسجل العنصر نفسه. عند إيقافه لا يُفحص شيء جديد ويختفي إدخال الحالات الشاذة من الشريط الجانبي، وتظل البطاقة ترتبط بالنتائج السابقة. |
| الحساسية | متوازنة | الحساسية صارمة تبلّغ عن التغييرات الأصغر أيضًا، ومتساهلة عن الكبيرة فقط. |
| إرسال إشعار عند | النتائج الحرجة فقط | أدنى درجة خطورة ترسل رسالة عبر القنوات المضبوطة في الإشعارات. الإخفاقات المتكررة للنسخ والتفريغات وفحوص الاستعادة المجدولة الفاشلة ترسل رسالتها الخاصة أصلًا ولا تُرسل مرتين. |
| الاحتفاظ بالنسخ القديمة عندما يتقلص المصدر بشدة أو تُعاد كتابته | مفعّل | ما دامت للعنصر نتيجة مفتوحة عن مصدر شبه فارغ أو تقلّص شديد أو إعادة حفظ معظم البيانات، لا يمس الاستبقاء والتنظيف نسخه القديمة. أكّد النتيجة أو علّمها كمتوقَّعة لتحريرها. |
يمكن لكل عنصر أن تكون له حساسية خاصة وحد أدنى خاص للإشعارات. اضبطهما في صفحة الحالات الشاذة، حيث تجدهما للعنصر الذي له ملاحظات مفتوحة تحت المراقبة في بطاقته، ولكل عنصر آخر في بطاقة لا شيء مفتوح، أو في لوحة العنصر نفسه: قسم المجلدات في الحاوية وإعدادات الآلة الافتراضية (كلاهما في الوضع المتقدم)، ومحرر المجلدات لمجموعة المجلدات، وصفحتي Flash والنسخ الذاتي. في عنصر ZFS تجدها في محرر العنصر في صفحة ZFS، وهي تسري على كل مجموعة بيانات في شجرته.
إعدادات محمولة (تصدير واستيراد)¶
تكتب بطاقة تصدير / استيراد الإعدادات في صفحة الإعدادات، النظام إعدادات BombVault بالكامل (إعدادات النطاقات، الأهداف خارج الموقع، الجداول الزمنية، الاحتفاظ، الإشعارات) إلى ملف JSON محمول يمكنك استيراده على نسخة أخرى، فلا يعني الانتقال إلى جهاز جديد أو استنساخ إعداد إعادة إدخال كل شيء يدوياً. يعرض الاستيراد معاينة ويطلب تأكيداً، ولا يمس بيانات نسخك الاحتياطية أو سجلها أبداً.
قد يحتوي التصدير على بيانات اعتماد
أنت تختار ما إذا كنت ستُضمّن بيانات اعتماد خارج الموقع والإشعارات ووسيط MQTT في الملف. مع تضمين بيانات الاعتماد، يكون التصدير حساساً مثل حقيبة الاستعادة الخاصة بك، فاحفظه في مكان آمن. بدونها، يحمل الملف إعدادات غير سرّية فقط.