يتعامل نشر حاوية Home Assistant القابلة للاستعادة مع صورة الحاوية باعتبارها قابلة للتخلص منها، بينما تكون الحالة والإعدادات والأسرار وتعيينات الأجهزة وسلوك الشبكة وإجراء الاستعادة هي النظام الحقيقي.
الهدف ليس مجرد جعل Docker يعيد تشغيل Home Assistant، بل إعادة بناء الخدمة على مضيف نظيف بعد فشل تحديث أو فقدان قرص أو استبدال المضيف، واستعادة المستخدمين وعمليات التكامل والأتمتة وأجهزة الراديو وحالة قاعدة البيانات والهوية الشبكية نفسها خلال مدة زمنية معروفة.
احتفظ بالحالة المستمرة خارج صورة الحاوية
اربط دليل إعداد Home Assistant بالكامل بوحدة تخزين مستمرة على المضيف، وانسخ كل ما بداخله احتياطيًا، بما في ذلك الأدلة المخفية. تفشل عمليات الترحيل المجتمعية مرارًا عندما ينسخ المشغلون ملفات YAML الظاهرة ويفوّتون .storage، حيث تُحفظ الكيانات وعمليات التكامل والحالات الأخرى المُدارة عبر الواجهة. يوضح أحد أمثلة فشل ترحيل الحاويات كيف يمكن لتوسيع الأنماط في الصدفة أن يحذف هذه الملفات المخفية بصمت.
احتفظ بملف Compose وقالب متغيرات البيئة والمنطقة الزمنية ووضع الشبكة وتعيينات الأجهزة ومسارات الربط وأي أذونات مجموعات مطلوبة في ملاحظات بنية تحتية مُدارة بالإصدارات. لا تضع حالة المنزل الفريدة داخل صورة مخصصة إلا إذا كان لديك أيضًا بناء قابل لإعادة الإنتاج ونسخة استرداد منفصلة.
يوفر الطوبولوجيا الكاملة لخادم Home Assistant من ZimaSpace النمط الأوسع: أبقِ مسار التحكم صغيرًا، وافصل الحالة المستمرة عن التخزين الضخم، وضع الاسترداد خارج نطاق العطل النشط قبل إضافة مزيد من تبعيات الخدمة.
انسخ الحالة احتياطيًا باتساق، لا بتكرار فحسب
لا يكون النسخ الاحتياطي مفيدًا إلا إذا مثّلت ملفاته نقطة زمنية متماسكة. في عملية نشر SQLite محلية بسيطة، يكون إيقاف الخدمة والنسخ أثناء نافذة صيانة لوحدة تخزين الإعدادات المستمرة أمرًا سهل الفهم. أما عند استخدام قاعدة بيانات خارجية، فانسخ قاعدة البيانات باستخدام طريقة متوافقة مع قاعدة البيانات، وسجّل نسخة إعدادات Home Assistant التي ينتمي إليها هذا النسخ.
يؤكد سير عمل نسخ وحدات Docker احتياطيًا حديث أهمية استعادة النسخة بدل افتراض أن نجاح أمر الأرشفة يعني قابلية الاستعادة. احتفظ بجيل واحد على الأقل خارج مضيف Docker حتى لا يؤدي فشل SSD أو نظام الملفات أو حذف غير مقصود إلى إزالة الخدمة والنسخة الاحتياطية معًا.
سجّل عمر النسخة الاحتياطية وإصدار التطبيق وإصدار قاعدة البيانات والحجم والمجموع الاختباري وموقع مفتاح التشفير وخطوات الاستعادة على مضيف نظيف. فالاحتفاظ بالنسخ دون بيانات وصفية للاستعادة ينشئ كومة من الأرشيفات بدلًا من نظام استرداد.
نمذج التبعيات والجاهزية في Compose
عندما يعتمد Home Assistant على MQTT أو قاعدة بيانات خارجية أو وكيل أو خدمة محلية أخرى، لا يساوي ترتيب بدء الحاويات جاهزية الخدمة. فقد تكون العملية قيد التشغيل بينما لا تزال واجهة الاتصال أو المخطط أو نقطة فحص الصحة غير متاحة. يوضح دليل جاهزية Compose كيف تقلل فحوصات الصحة وشروط التبعية من حالات تعارض بدء التشغيل.
امنح كل تبعية إشارة صحة وسلوك فشل خاصين بها. ينبغي أن يعيد Home Assistant محاولة الاتصال بقاعدة بيانات قيد البدء، لكن يجب أن تظهر قاعدة البيانات غير السليمة باستمرار كعطل واضح بدل إخفائها خلف عمليات إعادة تشغيل لا تنتهي. استخدم سياسات إعادة التشغيل للتعافي من خروج العمليات، واستخدم فحوصات الصحة والمراقبة لتحديد ما إذا كانت الخدمة جاهزة فعليًا.
أبقِ الخدمات الاختيارية خارج سلسلة بدء التشغيل الحرجة كلما أمكن. فلا ينبغي لعارض لوحة معلومات معطّل أو أداة وسائط أو مُصدّر مقاييس أن يبقي وحدة التحكم في الأتمتة غير متاحة.
ثبّت حدود التغيير واحتفظ بزوج قابل للتراجع
قبل التحديث، سجّل وسم صورة Home Assistant الحالي وتعريف Compose وإصدار قاعدة البيانات ونسخة إعدادات احتياطية وأي إصدارات للخدمات المرافقة المشاركة في بدء التشغيل. غيّر طبقة واحدة في كل مرة. وإذا فشل التحديث، فقد يكون التراجع عن صورة الحاوية وحدها غير آمن بعد تغيّر الإعدادات أو ترحيلات قاعدة البيانات للحالة المستمرة.
استخدم استعادة تجريبية أو دليل استرداد مستنسخًا لاختبار الإصدار المستهدف قبل إجراء ترحيل رئيسي للمضيف أو قاعدة البيانات. احتفظ بالصورة السابقة المعروفة بسلامتها ولقطة الحالة المنشأة مباشرة قبل التحديث كزوج واحد. احذف هذا الزوج فقط بعد اجتياز الإصدار الجديد اختبارات الأتمتة والسجل وأجهزة الراديو ولوحات المعلومات والإشعارات وإعادة التشغيل.
تتعامل مقالة تصميم Home Assistant Docker Compose الحديثة مع الشبكات والتخزين المستمر والنسخ الاحتياطية باعتبارها قرارات نشر صريحة. وهذا هو النموذج الصحيح للتراجع: احتفظ بالحالة وتعريف النشر اللذين تحتاج إليهما الحاوية البديلة، لا بنظام ملفات الحاوية القابل للتخلص منه.
أعد البناء على مضيف نظيف قبل اعتبار النشر قابلًا للاستعادة
اختر جهازًا احتياطيًا أو آلة افتراضية أو دليل اختبار معزولًا، ونفّذ الاسترداد دون قراءة الملفات من نظام ملفات الحاوية الحية. ثبّت بيئة تشغيل الحاويات، وضع تعريف Compose، واستعد الحالة المستمرة، وأعد إنشاء الأسرار، ووصل أجهزة الراديو عبر مسارات أجهزة ثابتة، وشغّل التبعيات المطلوبة، ثم ابدأ Home Assistant.
تحقق من ملكية الملفات وأذوناتها قبل افتراض أن النسخة الاحتياطية تالفة. فقد تؤدي اختلافات الأذونات بعد الترحيل إلى ظهور شاشة إعداد أولي جديدة حتى عندما تكون البيانات موجودة. توضح حالة استرداد لترحيل Docker كيف يمكن للأذونات والحالة المخفية أن تمنعا بشكل مستقل ظهور التثبيت المستعاد.
- سجّل الدخول باستخدام حساب المسؤول الحالي.
- تحقق من عمليات التكامل والكيانات والأتمتة ولوحات المعلومات والسجل.
- تأكد من ملكية Zigbee أو Z-Wave أو Thread أو Bluetooth أو أي أجهزة راديو أخرى.
- افصل الإنترنت وشغّل أتمتة محلية حرجة.
- أعد تشغيل المضيف وكل تبعية مطلوبة.
- قِس إجمالي وقت الاستعادة من مضيف فارغ إلى تحكم منزلي عامل.
استخدم عقد استرداد لكل تبعية تعمل داخل حاوية
| المكوّن | الكائن المستمر | دليل الاسترداد |
|---|---|---|
| Home Assistant | حالة /config الكاملة |
عودة الحساب الحالي والأتمتة |
| قاعدة البيانات | نسخة احتياطية متسقة لقاعدة البيانات | نجاح استعلامات السجل وعمليات كتابة Recorder |
| MQTT/الوسيط | الإعدادات وبيانات الاعتماد والحالة المحتفظ بها عند الحاجة | إعادة اتصال الأجهزة ونشرها |
| أجهزة الراديو | هوية الجهاز ومفاتيح الشبكة والتعيين | إعادة اتصال المنسق دون إعادة الاقتران |
| الشبكة/الوكيل | المنافذ والأسماء والشهادات والمسارات | إعادة اتصال العملاء المحليين والبعيدين المقصودين |
يملك النشر القابل للاستعادة تعريفًا مُدارًا بالإصدارات وحالة خارج المضيف وجاهزية للتبعيات وزوجًا قابلًا للتراجع واستعادة مُوقّتة على مضيف نظيف. وبمجرد اجتياز هذه الاختبارات، تصبح الحاويات كما يُفترض أن تكون: وحدات تشغيل قابلة للاستبدال بدلًا من خدمات لا يمكن الاستغناء عنها.
إعداد التخزين الشبكي والخادم
المزيد للقراءة

إعداد RAG محلي للأبحاث والملاحظات والوثائق الخاصة
اجعل المستندات الأصلية المرجع المعتمد، واجعل الفهرسة قابلة للتكرار، واشترط الاستشهادات، وافصل النماذج القابلة للاستبدال عن بيانات المصدر الخاصة.

لماذا يستخدم المطورون عقدة بوابة لنظام DNS الخاص وشبكات VPN والتطبيقات التجريبية؟
تمنح عقدة البوابة التطبيقات الخاصة اسمًا واحدًا ومسار وصول مُتحكَّمًا فيه، بينما تظل عقد الحوسبة غير مكشوفة وقابلة للاستبدال.

كيفية بناء حزمة تطبيقات قابلة لإعادة الإنتاج باستخدام ملفات Compose والأسرار والبيانات المستمرة المفصولة
حافظ على قابلية نقل تعريفات Compose، واحمِ الأسرار، وأنشئ نسخًا احتياطية مستقلة لبيانات التطبيقات حتى يمكن إعادة بناء المكدس على مضيف نظيف.

