تخطَّ إلى المحتوى

عقدة في المنزل

أي جهاز Linux تستطيع الوصول إليه عبر SSH يمكن أن يكون مضيف العقدة: خادم في المنزل، أو خادم لدى مزوّد لا يملك casty سكربتًا له. عندها لا تنشئ الخطوة 0 شيئًا وتكتفي بفحص الجهاز.

نافذة طرفيّة
./scripts/0-provision.sh --host you@192.168.1.20
./scripts/1-node.sh
./scripts/2-client.sh

يطلب Snapchain ذاكرة 16 GB و4 vCPU و2 TB من القرص الحر وعنوان IP عامًا. تفحص الخطوتان 0 و1 الجهاز عبر SSH وتتوقفان برمز الخروج 5 حين لا يفي بالمطلوب:

  • ذاكرة 15 GiB على الأقل؛
  • مساحة حرة 1.8 TiB حيث ستوجد قاعدة البيانات. وضع CASTY_MIN_FREE_GIB=1700 قبل الأمر يطلب أقل من ذلك، على مسؤوليتك: حين تملأ قاعدة البيانات القرص، تتوقف العقدة؛
  • خادم Docker يستطيع مستخدم SSH التحدث إليه، لذا يجب أن يكون المستخدم root أو في مجموعة docker؛
  • ساعة لا يتجاوز فرقها عن ساعتك 60 ثانية. ترفض العقد الرسائل التي يتقدم طابعها الزمني أكثر من 15 دقيقة في المستقبل، لذا أبقِ NTP يعمل على المضيف.

يحصل الخادم المستأجر على Docker وchrony وحد أعلى للملفات المفتوحة من cloud-init. أما على جهازك الخاص فهذه مسؤوليتك.

يسجّل casty الدخول بمفتاحك ولا يستخدم كلمة سر أبدًا: يشغّل SSH مع BatchMode=yes. المفتاح هو ~/.ssh/id_ed25519 ما لم تمرر --ssh-pubkey، والنصف الخاص يقع بجانب النصف العام. يقبل الاتصال الأول مفتاح المضيف ويسجله؛ وتتحقق منه الاتصالات اللاحقة.

تعيش العقدة في ~/snapchain لمستخدم SSH، ويقيس فحص المساحة الحرة نظام ملفات المجلد المنزلي لذلك المستخدم. لإبقاء قاعدة البيانات على قرص آخر، اربطه (mount)، واجعل ~/snapchain رابطًا إلى مجلد عليه، واضبط NODE_DATA_DIR في node.env على نقطة الربط، لكي يقيس الفحص ذلك القرص بدلًا من ذلك.

المنافذ والجدار الناري

Section titled “المنافذ والجدار الناري”

لا ينشئ casty جدارًا ناريًا لجهاز لم يستأجره. تصل العقد الأخرى إلى عقدتك على 3382/udp، وهو منفذ gossip الوحيد الذي ينشره ملف compose الخاص بـ Snapchain، لذا وجّهه من الموجّه لديك. أبقِ 3381 (واجهة HTTP) و3383 (gRPC) مغلقين أمام الإنترنت: يصل casty إليهما عبر نفق SSH. ينشر ملف compose الخاص بـ Snapchain خدمة statsd على 8125/udp و8126/tcp على كل واجهة ما لم يُطلب غير ذلك؛ ويضبط 1-node.sh المتغيرين STATSD_PUBLISH وSTATSD_ADMIN_PUBLISH في ملف .env الخاص به على loopback على أي مضيف يعمل عليه، وهذا منها، فلا يجيب statsd وGrafana إلا على 127.0.0.1.

لا ينطبق 0-provision.sh --destroy هنا، إذ لم يُنشأ شيء. يوقف ./scripts/1-node.sh down العقدة؛ وتبقى قاعدة البيانات في ~/snapchain حتى تحذفها.