نظام تشغيل غير تقليدي لإدارة المختبرات المنزلية
أعتبر نفسي شخصاً متوسط المهارة عندما يتعلق الأمر بالاستضافة الذاتية وإدارة مختبر منزلي. مع توسع الإعدادات والتجارب التي أقوم بها، باتت الأمور أكثر تعقيداً وصعوبة في الإدارة. قد يكون السبب هو محدودية مهاراتي أو تعقيد الأدوات نفسها، أو كليهما. لكن هذه التحديات دفعتني للبحث عن طريقة تجعل النظام غير قابل للكسر، وسهل النسخ وإعادة التكوين.
أردت القدرة على إعادة بناء الخوادم بشكل متماثل على أي جهاز، تتبع كل تغيير، تجربة أشياء جديدة دون القلق من كسر شيء ما، والأهم من ذلك، إدارة وإضافة مزيد من العقد بسهولة مع توسع المختبر. قد يبدو ذلك طموحاً، لكن NixOS جعل كل هذا ممكناً.
تعريف النظام كرمز برمجي
نظام NixOS يعامل إعداد النظام وكأنه كود برمجي. يمكنك تعريف كل شيء — من الحزم والخدمات والمستخدمين إلى إعدادات الشبكة والنواة — داخل ملف واحد يسمى configuration.nix. عندها يصبح النظام قابلاً لإعادة البناء، وخاضعاً لإدارة الإصدارات، ويمكن التراجع عنه بسهولة.
ابدأ بتعريف كل شيء في Nix وفعّل Flakes
نقطة البداية كانت بتوثيق كل مكونات أجهزتي — من إعداد خادم Nginx إلى مفاتيح SSH ووحدات العتاد — وتحويلها إلى تعليمات برمجية محفوظة داخل مستودع Git. بمجرد الانتهاء من ذلك، أصبح بإمكاني إعادة إنتاج النظام في أي وقت وبنفس الشكل.
لاحقاً، فعّلت ميزة Flakes التي تسمح بإعدادات مغلقة قابلة للتكرار 100%. تتيح لك هذه الميزة تثبيت نسخة محددة من Nixpkgs، ما يضمن بناءات متطابقة دائماً، كما أنها تسهّل إدارة عدة أجهزة NixOS من مستودع واحد، وهو أمر مثالي للمختبرات المنزلية.
ولتجنب حدوث انحرافات في الإعدادات، أوقفت ما يُعرف بالتثبيتات الإمبريقية (imperative installs) التي تتم عبر:
nix-env -iA nixpkgs.package-name
فهي لا توثق ضمن ملفات النظام ولا تُخزَّن في سجل الإصدارات، مما ينسف فكرة “عدم القابلية للكسر”. بدلاً من ذلك، أقوم بتعريف كل الحزم المطلوبة ضمن ملفات التكوين.
اعتمد على nixos-rebuild لإجراء تغييرات آمنة
أداة nixos-rebuild هي طريقتي الوحيدة لتحديث النظام. تقوم هذه الأداة بتقييم إعداداتك، بناء جيل جديد من النظام، وتفعيله بطريقة ذرّية وآمنة. ما يعني أن كل التغييرات تُطبق دفعة واحدة، دون التأثير على النظام الحالي حتى يصبح الجيل الجديد جاهزاً، مع إنشاء نسخة احتياطية تلقائية يمكن الرجوع إليها عند الحاجة.
افصل حالة التشغيل عن إعداد النظام
من الخطوات الحاسمة لتحقيق بنية غير قابلة للكسر، فصل بيانات التشغيل (مثل قواعد البيانات والملفات المحفوظة) عن الإعدادات البرمجية. هذا الفصل يسمح لك بالتعامل مع النظام كبنية قابلة للاستبدال، يمكن حذفها وإعادة إنشائها في أي وقت دون فقدان البيانات.
في بيئة المختبر المنزلي، يعني ذلك إمكانية استعادة الخدمات بسهولة على جهاز جديد، الحفاظ على النسخ الاحتياطية بأمان، وتقليل تأثير الأخطاء أو التحديثات الفاشلة.
سهولة إدارة المختبرات المنزلية بفضل NixOS
لقد غير NixOS أسلوبي تماماً في إدارة مختبري المنزلي. لم أعد أُجري أي تعديل على النظام مباشرة، بل أقوم بتعديله عبر ملفات التكوين، ما يمنحني وثائق دقيقة لتتبع التغييرات عبر سجل Git، ويمنع الأخطاء الناتجة عن التعديلات العشوائية بين الأجهزة المختلفة.
فعلى سبيل المثال، عندما أردت تفعيل خدمة مثل Nextcloud أو إعداد خادم عكسي (Reverse Proxy)، كل ما فعلته هو إضافة التعليمات البرمجية المناسبة وتشغيل الأمر على كل الأجهزة مرة واحدة.
عند الحاجة إلى تحديث أمني، أقوم بتعديل إصدار الحزمة في تعبيرات Nix وأُعيد بناء إعدادات كل جهاز. لأن NixOS يعتمد على مبدأ التكرار والاتساق، فإن كل إعادة بناء تُنتج نفس النتيجة، بغض النظر عن الجهاز المستخدم.
توزيعة NixOS غيرت قواعد اللعبة
أعتبر NixOS من أفضل توزيعات لينكس التي استخدمتها خلال السنوات الأخيرة، بل إنها من القلائل التي ساعدتني فعلاً على التخلص من صداع التحديثات الدائمة. وإذا كنت تبحث عن توزيعة تساعدك على إعداد تحديثات تلقائية وتقليل الفوضى في أنظمة لينكس، فإن NixOS تستحق التجربة فعلاً.