الكمبيوتر في البيت عليه كل شيء: T3، وملاحظاتي، والمهام المجدولة. فإذا تعطل، يتوقف كل شيء. وعندي مواقع على Cloudflare، بعضها خاص ومغلق، ولو فتح أحدها للعامة بالخطأ، فلن أعرف إلا متأخرًا. لذلك أعددت مهمتين، وكلتاهما للقراءة فقط.
صحة الكمبيوتر: كل صباح
الساعة 6:45 صباحًا، يفحص سكربت صغير:
- المساحة والذاكرة.
- الخدمات: أي خدمة فشلت، وهل الخدمات التي يجب أن تعمل تعمل فعلًا.
- التحديثات: هل هناك تحديثات، أو هل يحتاج الجهاز إلى إعادة تشغيل.
- النسخ الاحتياطي: موعد آخر نسخة من الملاحظات والكود.
ويكتب النتيجة في ملف حالة صغير. يقرؤه ملخص الصباح بعد 45 دقيقة، وإذا كانت هناك مشكلة، يعرض لي بطاقة واحدة فيها كل المشاكل بكلام بسيط. وإذا كان كل شيء سليمًا، لا يقول شيئًا.
وإعادة التشغيل لا تحدث تلقائيًا أبدًا. يقترحها الملخص، ويعيد Claude تشغيل الجهاز بعد موافقتي، وعندما لا يكون هناك أي thread نشط.
الحارس
في 3 نوفمبر، عندما كنت أجهز هذا الموقع، نشره أمر واحد على رابط عام قبل أن أغلقه، وبقي مفتوحًا حوالي دقيقتين ونصف. كتبت عن هذا الخطأ في مقال قفل الموقع. وبسببه، أضفت الحارس في 8 نوفمبر.
يقرأ الحارس بانتظام الإعدادات التي تنشر مواقعي في Cloudflare، ويقارنها بقائمة وافقت عليها. وإذا حدث تغيير غير متوقع، يرسل لي رسالة، ويعرض بطاقة في ملخص الصباح. وهو يفحص الإعدادات، ولا يتحقق من أن كل قفل يمنع الزوار فعلًا، فهذا فحص آخر.
والسكربت يقرأ إعدادات Cloudflare فقط. أما الإصلاح فمسؤوليتي أنا.
كيف تبني مهمتين مثلهما
فحص الكمبيوتر
اكتب لي سكربت للقراءة فقط يفحص هذا الكمبيوتر: المساحة المتاحة، والذاكرة، والخدمات التي فشلت، وهل الخدمات في هذه القائمة تعمل: [القائمة]، وهل هناك تحديثات أو يحتاج الجهاز إلى إعادة تشغيل، وكم مضى على آخر نسخة احتياطية. ويكتب ملف حالة JSON فيه allOk وfinishedAt وproblems بكلام بسيط. ولا يغير أو يعيد تشغيل أي شيء. ثم أنشئ له systemd timer يشغله كل صباح.
الحارس
أولًا، أنشئ مفتاح API في Cloudflare بصلاحيات قراءة فقط.
اكتب لي حارسًا للقراءة فقط لحسابي في Cloudflare. يجمع من كل دومين: سجلات الـ DNS التي تشير إلى مكان، والـ Tunnels والروابط التي تمر فيها، وتطبيقات Access، وروابط الـ Workers والـ workers.dev. ويقارنها بملف approved.json أوافق عليه أنا. وإذا وجد شيئًا غير موجود فيه، أو أزيل تطبيق Access، أو تعذرت قراءة شيء، يكتب المشاكل في ملف حالة ويرسل لي تنبيهًا. لا يغير شيئًا في Cloudflare أبدًا. واكتب صلاحيات القراءة التي يحتاجها المفتاح، وشغله على timer.
في المرة الأولى، اجعله يعرض لك ما يجمعه الآن، وراجعه بنفسك قبل أن يصبح القائمة المعتمدة.
اجعل الملخص يراقبهما
أضف سطرًا في ملاحظة ملخص الصباح: اقرأ ملفي الحالة، واعرض بطاقة واحدة إذا كانت allOk خاطئة، أو إذا كان أحد الملفين غير موجود، أو تعذرت قراءته، أو كان أقدم مما يفترض.
ما تعلمته
- يجب أن يكون للصمت معنى. لا يقول الملخص شيئًا إذا كان كل شيء سليمًا، لكنه يخبرني إذا كان ملف الحالة نفسه قديمًا. لأن الفحص الذي لم يعمل لا يستطيع الإبلاغ عن مشكلة.
- الحارس لا يصلح. يقرأ ويخبرني فقط. القاعدة نفسها في فحص الـ homelab.
- الخطأ الصغير يستحق حارسًا. دقيقتان ونصف فقط، لكن بعدها أصبح عندي ما يفحص بانتظام بدلًا مني.
الأدوات
المقال التالي في السلسلة: مجلد التسليم.