لماذا تستضيف Node-RED ذاتيًا على خادم VPS
يتألّق Node-RED في ربط التكاملات بسرعة: استقبال خطّاف ويب (webhook)، وتحويل حمولة (payload)، واستدعاء واجهة API، والكتابة في قاعدة بيانات، وإرسال إشعار — كل ذلك في محرّر بصري متاح من المتصفح. على جهاز محلي، تتوقّف هذه التدفّقات حالما يُطفأ الجهاز. أما على خادم VPS، فتعمل على مدار الساعة بعنوان IP ثابت، وهو أمر لا غنى عنه لاستقبال خطّافات ويب واردة أو استعلام واجهات API على فترات منتظمة. وتغطّي منظومة تضمّ أكثر من 4000 عُقدة مجتمعية (palette) بروتوكولات MQTT وHTTP وقواعد البيانات وTelegram وMQTT لإنترنت الأشياء، وغيرها. تحتفظ بمفاتيح API وبياناتك التجارية على خادمك الخاص، دون الاعتماد على منصّة أتمتة تابعة لطرف ثالث تُفوتَر لكل مهمة.
الفوائد الملموسة للاستضافة الذاتية
- توفّر على مدار الساعة بعنوان IP ثابت لاستقبال خطّافات ويب واردة.
- محرّر بصري قائم على التدفّق (flow): أتمتات تُبنى دون برمجة تطبيق كامل.
- palette تضمّ أكثر من 4000 عُقدة (MQTT وHTTP وSQL وTelegram وIoT) قابلة للتثبيت أثناء التشغيل.
- مفاتيح API والبيانات التجارية محفوظة على خادم VPS الخاص بك، لا لدى طرف ثالث.
- لا فوترة لكل مهمة ولا حصة تنفيذات شهرية.
- مثالي لإنترنت الأشياء IoT: مركزة MQTT ومعالجة المستشعرات في الزمن الحقيقي.
المتطلبات العتادية والبرمجية
Node-RED خفيف للغاية (مبني على Node.js). يكفي خادم VPS بنواة vCPU واحدة و1 غيغابايت من ذاكرة RAM للتدفّقات البسيطة؛ انتقل إلى نواتين vCPU و2 غيغابايت من ذاكرة RAM حالما تُكثِر التدفّقات، أو تضيف قاعدة بيانات، أو تعالج حركة MQTT كبيرة. احسب 5 إلى 10 غيغابايت من القرص لبيئة التشغيل ووحدات الـ palette والسجلّات. أما برمجيًا: فيلزم Ubuntu 22.04 وDocker (مُوصى به لعزل البيانات وإدامتها)، ونطاق فرعي من نوع flows.mydomain.com، ومن الأمثل جدار حماية ufw نشط. لا وحدة GPU، فالأمر تنسيق خالص.
النشر خطوة بخطوة
تحضير خادم VPS
عبر SSH، ثبّت Docker. أنشئ حجمًا مُسمّى لإدامة التدفّقات والتهيئة: docker volume create node_red_data. يضمن هذا الحجم بقاء أتمتاتك عبر تحديثات الحاوية.
تشغيل الحاوية
شغّل الصورة الرسمية: docker run -d -p 1880:1880 -v node_red_data:/data --name nodered --restart unless-stopped nodered/node-red. يستمع المحرّر على المنفذ 1880.
تأمين المحرّر
المحرّر مفتوح افتراضيًا. فعّل المصادقة في settings.js (قسم adminAuth) بكلمة مرور مُجزَّأة (hashed) عبر node-red-admin hash-pw، واحمِ أيضًا نقاط نهاية HTTP التي تعرِضها تدفّقاتك (httpNodeAuth).
تثبيت العُقَد اللازمة
من قائمة "Manage palette"، أضف العُقَد التي تحتاجها (مثل node-red-node-email وnode-red-contrib-telegrambot). تُثبَّت أثناء التشغيل دون إعادة تشغيل الخادم.
تهيئة الوكيل العكسي وSSL
ضع Caddy أو Nginx أمام المنفذ 1880 من أجل flows.mydomain.com. مهم: فعّل دعم WebSocket في تهيئة Nginx (proxy_set_header Upgrade / Connection)، وإلا فلن يتحدّث المحرّر في الزمن الحقيقي. أما Caddy فيتولّى ذلك أصليًا.
بناء أول تدفّق
أنشئ تدفّق اختبار: عُقدة http in على /webhook، وعُقدة function تحوّل الحمولة (payload)، ثم عُقدة http response. انشر بزرّ "Deploy" واختبر عنوان URL https://flows.mydomain.com/webhook.
أرشِف إصدارات تدفّقاتك بميزة "Projects" المدمجة في Node-RED (القابلة للتفعيل في settings.js) مقرونةً بمستودع Git: تحصل على سجلّ تاريخي وفروع وتراجع (rollback) نظيف لأتمتاتك، تمامًا كما هو الحال مع الكود. وللتدفّقات الحرجة، أضف عُقدة catch عامّة تلتقط الأخطاء وترسل تنبيهًا (بريد إلكتروني/Telegram): ستُنبَّه إلى واجهة API تتعطّل قبل أن تنكسر السلسلة بصمت.