[{"data":1,"prerenderedAt":276},["ShallowReactive",2],{"seo-verification":3,"blog-تثبيت-temporal-على-خادم-vps-أتمتة-ذاتية-الاستضافة-ma-ar":6,"promo-bar-likely":275},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-تثبيت-temporal-على-خادم-vps-أتمتة-ذاتية-الاستضافة-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":216,"ctaBody":217,"ctaButton":218,"ctaUrl":219,"relatedPosts":220},30,"تثبيت-temporal-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":12,"en":13,"ar":10,"es":14},"installer-temporal-vps","installing-temporal-on-a-vps-self-hosted-automation","instalar-temporal-en-un-vps","تثبيت Temporal على خادم VPS: أتمتة ذاتية الاستضافة","انشر Temporal على خادم VPS الخاص بك: تنسيق دائم لسير عمل مقاوم للأعطال، مع SDK بلغات Go وJava وPython وTypeScript، بأتمتة ذاتية الاستضافة.",10,1,false,"2026-05-21T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Finstaller-temporal-vps-poster.svg","Temporal محرّك لتنسيق سير عمل دائم: تصمد عملياتك الطويلة أمام إعادة التشغيل والأعطال والأخطاء، لأن حالتها تُحفَظ عند كل خطوة. مُصمَّم للمطوّرين عبر حِزم SDK (Go وJava وPython وTypeScript)، وهو مثالي للمعاملات المعقّدة والـ sagas. إليك كيفية تثبيته بالاستضافة الذاتية على خادم VPS.",[34,44,54,64,103,111,145,171,182,192,212],{"type":35,"title":36,"body":37,"items":38},"h2","‏لماذا استضافة ‏Temporal‏ ذاتياً على ‏VPS","‏‏Temporal Cloud‏ متاح، لكن الاستضافة الذاتية تبقى وثيقة الصلة لأسباب عديدة: التكلفة المتوقعة ابتداءً من ‏99 درهم\u002Fشهر‏، وسيادة البيانات، والتحكم الكامل في الإصدار والسياسات.",[39,40,41,42,43],"‏تكلفة متوقعة: فوترة ‏VPS‏ ثابتة، لا رسوم إضافية لكل تنفيذ","‏البيانات على بنيتك التحتية: لا يغادر أي ‏workflow‏ أو ‏payload‏ شبكتك","‏تكامل الشبكة الخاصة: يصل ‏Workers‏ مباشرةً إلى قواعد البيانات والخدمات الداخلية","‏التحكم في الإصدار: اختر متى تنتقل إلى إصدار جديد من ‏Temporal","‏رؤية كاملة: السجلات والمقاييس والتتبعات تحت سيطرتك",{"type":35,"title":45,"body":46,"items":47},"‏حالات استخدام ‏Temporal","‏يتألق ‏Temporal‏ حيث تظهر حدود مهام ‏cron‏ وقوائم الانتظار البسيطة. فيما يلي أكثر حالات الاستخدام شيوعاً في بيئات الإنتاج.",[48,49,50,51,52,53],"‏سير عمل التجارة الإلكترونية: تسلسل الطلب ← الدفع ← التحقق من المخزون ← الشحن ← البريد الإلكتروني للتأكيد على مدى دقائق أو ساعات، مع إعادة المحاولة التلقائية في كل خطوة","‏نمط ‎Saga‎ للمعاملات الموزعة: التعويض التلقائي عن الخطوات السابقة عند فشل خطوة لاحقة (مثال: إلغاء الحجز إذا رُفض الدفع)","‏إعداد المستخدم الطويل: إرسال بريد إلكتروني في اليوم 0، الانتظار 48 ساعة، إرسال تذكير، انتظار التحقق من ‎KYC‎، إلغاء قفل الوصول — كل ذلك في سير عمل واحد مقروء","‏المزامنة الدورية للبيانات مع الاستئناف: استيراد ملفات ‎CSV‎ كبيرة، والاستئناف من آخر سجل تمت معالجته عند الانقطاع","‏إعادة المحاولة التلقائية مع ‎backoff‎ أسي: استدعاءات نحو ‎APIs‎ خارجية غير مستقرة دون كتابة منطق إعادة المحاولة في كودك","‏خطوط أنابيب ‎ETL‎ و‎ML‎: تنسيق تحويلات البيانات التي قد تستغرق بعض خطواتها عدة ساعات",{"type":35,"title":55,"body":56,"items":57},"‏معمارية ‏Temporal ‏المستضاف ذاتياً","‏إن فهم المكونات الداخلية يساعدك على تحديد مواصفات ‏VPS ‏الخاص بك وتشخيص المشكلات. يتكون ‏Temporal ‏من أربعة خدمات رئيسية يمكن تشغيلها في نفس العملية (`‏temporalio\u002Fauto-setup`) أو نشرها بشكل منفصل على نطاق واسع.",[58,59,60,61,62,63],"‎Frontend Service‎: نقطة الدخول ‎gRPC‎ للـ ‎Workers‎ وعملاء الـ ‎SDK‎. يستقبل طلبات بدء سير العمل والإشارات وطلبات الـ ‎UI‎. المنفذ الافتراضي: 7233","‎History Service‎: قلب المحرك. يحفظ السجل الثابت لكل سير عمل في ‎PostgreSQL‎ (أو ‎MySQL‎). هو الذي يضمن الاستمرارية — حتى بعد الانهيار، يظل السجل سليمًا","‎Matching Service‎: يوزع المهام (‎Activity Tasks‎، ‎Workflow Tasks‎) على الـ ‎Workers‎ المتاحين عبر نظام قوائم داخلية. يدير التوجيه بحسب ‎task queue‎","‎Worker Service‎ (داخلي): يُنفّذ سير عمل ‎Temporal‎ النظامية (النسخ المتماثل، الأرشفة). لا يُخلط بينه وبين ‎Workers‎ التطبيق الخاصة بك","‎PostgreSQL‎: التخزين الرئيسي للسجل والرؤية. على ‎VPS‎ منفرد، تكفي نسخة ‎PostgreSQL‎ محلية واحدة","‎Elasticsearch‎ (اختياري): يُثري البحث في الـ ‎UI‎ — تصفية سير العمل بحسب الخصائص المخصصة والبحث النصي الكامل. غير مطلوب للبدء",{"type":65,"title":66,"headers":67,"rows":72},"comparison","‏Temporal ‏مقابل ‏BullMQ ‏مقابل ‏Celery",[68,69,70,71],"‏المعيار","‏Temporal","‏BullMQ","‏Celery",[73,78,83,88,93,98],[74,75,76,77],"استدامة الحالة","سجل كامل محفوظ في قاعدة البيانات — يستأنف سير العمل المنقطع من حيث توقف تماماً","‏الحالة في ‏Redis — ‏فقدان ‏Redis ‏يعني فقدان المهام (قابل للتخفيف باستخدام ‏AOF\u002FRDB)","‏نتائج اختيارية في الواجهة الخلفية (‏Redis، قاعدة البيانات) — لا يوجد سجل تنفيذ أصلي",[79,80,81,82],"الإعادة والحتمية","‏إعادة تشغيل تلقائية من السجل — يجب أن يكون كود سير العمل حتمياً، و‏Temporal ‏يتكفل بالباقي","‏لا إعادة تشغيل أصلية — إعادة محاولة بسيطة عند الفشل، دون إعادة الخطوات السابقة","إعادة المحاولة قابلة للتخصيص لكل مهمة، لا إعادة تشغيل لسير عمل متعدد الخطوات",[84,85,86,87],"واجهة المراقبة","واجهة مستخدم غنية مدمجة: قائمة سير العمل، تفاصيل كل خطوة، البحث، الإجراءات اليدوية","‏Bull Board ‏كإضافة خارجية — وظيفي لكن محدود","‏Flower ‏كأداة منفصلة — مقاييس أساسية، لا سجل للخطوات",[89,90,91,92],"اللغات المدعومة","‏Go، ‏TypeScript\u002FJavaScript، ‏Python، ‏Java، ‏‎.NET، ‏PHP ‏(SDKs ‏رسمية)","‏Node.js ‏فقط","‏Python ‏فقط (تكاملات خفيفة للغات أخرى)",[94,95,96,97],"تعقيد التثبيت","‏مجموعة من 4 خدمات + ‏PostgreSQL + ‏Worker — أثقل من ‏Redis، مبرر لسير العمل الطويلة","‏نسخة ‏Redis ‏واحدة — سهل الانطلاق جداً","‏وسيط (‏Redis ‏أو ‏RabbitMQ) + واجهة خلفية اختيارية — في حده الأدنى",[99,100,101,102],"حالة الاستخدام المثالية","سير العمل الطويلة، متعددة الخطوات، مع إعادة المحاولة والتعويض — المدفوعات، الإعداد، خطوط معالجة البيانات","المهام القصيرة والمتوازية — إرسال البريد الإلكتروني، تغيير حجم الصور، الإشعارات","‏مهام ‏Python ‏الدُفعية — التعلم الآلي، الاستخراج، معالجة الملفات",{"type":35,"title":104,"items":105},"‏المتطلبات التقنية",[106,107,108,109,110],"‏‏VPS‏ يعمل بـ ‏Ubuntu 22.04‏ أو ‏Debian 12‏ مع 2 ‏vCPU‏ و4 ‏GB‏ ‏RAM‏ على الأقل","‏‏Docker 24+‏ و‏Docker Compose v2‏ مثبتان","‏اسم نطاق يشير إلى ‏VPS‏ الخاص بك","‏المنافذ 7233 (‏gRPC Frontend‏) و8080 (‏UI‏) مفتوحة في جدار الحماية","‏‏Go 1.21+‏ أو ‏Node.js 20+‏ حسب لغة ‏Worker",{"type":112,"title":113,"steps":114},"steps","‏نشر ‏Temporal‏ باستخدام ‏Docker Compose",[115,118,121,124,127,130,133,136,139,142],{"title":116,"body":117},"‏إنشاء دليل العمل","‏أنشئ دليلًا مخصصًا وانتقل إليه.\n\n```bash\nmkdir -p \u002Fopt\u002Ftemporal && cd \u002Fopt\u002Ftemporal\n```",{"title":119,"body":120},"‏تنزيل ملف ‏Docker Compose‏ الرسمي","‏يوفّر ‏Temporal ملف ‏Compose مرجعيًا في مستودعه على ‏GitHub. نزّل نسخة ‏PostgreSQL مع تعطيل ‏Elasticsearch لبداية بسيطة.\n\n```bash\ncurl -L https:\u002F\u002Fraw.githubusercontent.com\u002Ftemporalio\u002Fdocker-compose\u002Fmain\u002Fdocker-compose-postgres.yml -o docker-compose.yml\n```",{"title":122,"body":123},"‏إنشاء ملف متغيرات البيئة","أنشئ ملف `.env` لتخصيص ‏credentials الخاصة بـ‏PostgreSQL. لا تترك كلمات مرور افتراضية أبدًا في بيئة الإنتاج.\n\n```bash\ncat > .env \u003C\u003C 'EOF'\nDB=postgresql\nDB_PORT=5432\nPOSTGRES_USER=temporal\nPOSTGRES_PWD=changeme_strong_password\nPOSTGRES_SEEDS=postgresql\nTEMPORAL_ADDRESS=temporal:7233\nEOF\n```",{"title":125,"body":126},"‏تقييد صلاحيات ملف ‏‎.env","‏ملف ‏`.env` يحتوي على ‏credentials — قيّد الوصول إليه.\n\n```bash\nchmod 600 .env\n```",{"title":128,"body":129},"‏تشغيل المكدس","‏شغّل جميع الخدمات في الخلفية. يستغرق التشغيل الأول بضع دقائق: تهيّئ `auto-setup` مخطط ‏PostgreSQL تلقائيًا.\n\n```bash\ndocker compose up -d\n```",{"title":131,"body":132},"‏التحقق من صحة الخدمات","‏انتظر من 60 إلى 90 ثانية، ثم تحقّق من أن الحاويات في حالة `healthy` أو `running`.\n\n```bash\ndocker compose ps\n```",{"title":134,"body":135},"‏التحقق من الاتصال بـ‏Frontend Service","‏استخدم ‏`temporal` CLI للتأكد من أن الخادم يستجيب على منفذ ‏gRPC.\n\n```bash\ndocker exec temporal-admin-tools temporal operator cluster health\n```",{"title":137,"body":138},"‏إنشاء ‏namespace‏ الإنتاج","‏يستخدم ‏Temporal مساحات أسماء (namespaces) لعزل ‏workflows. أنشئ مساحة أسماء مخصصة لتطبيقك مع مدة احتفاظ تبلغ 30 يومًا.\n\n```bash\ndocker exec temporal-admin-tools temporal operator namespace create --retention 30d myapp\n```",{"title":140,"body":141},"‏الوصول إلى واجهة ‏Temporal","‏واجهة الويب متاحة على المنفذ 8080. في الإنتاج، ضع ‏reverse proxy ‏nginx مع ‏HTTPS أمام هذا المنفذ.\n\n```bash\ncurl -s http:\u002F\u002Flocalhost:8080 | grep -o '\u003Ctitle>[^\u003C]*\u003C\u002Ftitle>'\n```",{"title":143,"body":144},"‏تهيئة التشغيل التلقائي","‏فعّل تشغيل ‏Docker عند إقلاع ‏VPS. لا تعود الحاويات معه إلا إذا منحها ملف ‏Compose سياسة `restart` (مثل `restart: unless-stopped`): تحقّق منها بالأمر `grep -n restart docker-compose.yml`.\n\n```bash\nsystemctl enable docker\n```",{"type":35,"title":146,"body":147,"subsections":148,"tip":170},"‏تهيئة ‏Worker ‏بسيط بـ‏Go ‏أو ‏TypeScript","‏Worker ‏هو العملية التي تنفذ فعلياً كود الأعمال الخاص بك. يتصل بـ‏Frontend Service، ويستطلع ‏task queue ‏وينفذ سير العمل والأنشطة التي يوزعها عليه ‏Temporal. ‏إليك مثال بسيط بأكثر لغتين استخداماً.",[149,161],{"lang":150,"body":151,"code_inline":152},"Go","‏ثبّت ‏SDK ‏الخاص بـ‏Go ‏ثم أنشئ ‏Worker ‏الخاص بك:",[153,154,155,156,157,158,159,160],"go get go.temporal.io\u002Fsdk","\u002F\u002F main.go","c, _ := client.Dial(client.Options{HostPort: \"votre-domaine.com:7233\", Namespace: \"myapp\"})","defer c.Close()","w := worker.New(c, \"my-task-queue\", worker.Options{})","w.RegisterWorkflow(MyWorkflow)","w.RegisterActivity(MyActivity)","w.Run(worker.InterruptCh())",{"lang":162,"body":163,"code_inline":164},"TypeScript","‏ثبّت ‏SDK ‏الخاص بـ‏TypeScript ‏ثم أنشئ ‏Worker ‏الخاص بك:",[165,166,167,168,169],"npm install @temporalio\u002Fworker @temporalio\u002Fclient","\u002F\u002F worker.ts","import { Worker } from '@temporalio\u002Fworker';","const worker = await Worker.create({ workflowsPath: require.resolve('.\u002Fworkflows'), activities, taskQueue: 'my-task-queue', connection: { address: 'votre-domaine.com:7233' } });","await worker.run();","‏يجب أن يكون ‏Worker ‏حتمياً على مستوى ‏Workflow: ‏تجنب استدعاءات الشبكة وتواريخ النظام والأرقام العشوائية في كود ‏Workflow — ضعها داخل ‏Activities.",{"type":35,"title":172,"body":173,"items":174,"tip":181},"‏واجهة مستخدم ‎Temporal‎ — مراقبة سير العمل وتصحيحه","‏واجهة مستخدم ‎Temporal‎ (متاحة على المنفذ 8080) هي الأداة الأساسية لمراقبة سير عملك في الإنتاج. تتيح لك:",[175,176,177,178,179,180],"‏سرد جميع سير العمل لـ ‎namespace‎ ما، مصفاةً حسب الحالة (جارٍ، مكتمل، فاشل، موقوف)","‏فحص السجل الكامل لكل سير عمل: كل حدث (بدء سير العمل، جدولة النشاط، اكتماله…) مع طابعه الزمني وبياناته","‏إعادة تشغيل سير عمل فاشل يدوياً من الواجهة دون إعادة نشر كودك","‏إرسال ‎Signal‎ أو ‎Query‎ إلى سير عمل جارٍ لإلغاء إيقافه أو الاستعلام عن حالته","‏تنزيل البيانات الكاملة لخطوة ما لتصحيح مشكلات التسلسل","‏مراجعة ‎Workers‎ النشطين وقوائم انتظار المهام للتحقق من اتصال ‎Worker‎ قبل بدء سير عمل","‏في الإنتاج، ضع مصادقة أمام الواجهة (انظر قسم الأمان). تكشف الواجهة عن البيانات الكاملة للخطوات، والتي قد تحتوي على بيانات حساسة.",{"type":35,"title":183,"body":184,"items":185},"‎نسخ احتياطي لـ PostgreSQL والاستمرارية","تعتمد متانة ‎Temporal‎ كليًا على ‎PostgreSQL‎. نسخة بلا نسخ احتياطي تعني خسارة كاملة لسجل سير العمل عند أي عطل في الـ ‎VPS‎.",[186,187,188,189,190,191],"نسخ احتياطي يومي بـ `‎pg_dump‎`: `docker exec temporal-postgresql pg_dump -U temporal temporal | gzip > \u002Fbackups\u002Ftemporal-$(date +%F).sql.gz`","تدوير النسخ الاحتياطية: احتفظ بحد أدنى 7 أيام من النسخ الاحتياطية، ويُفضّل 30 يومًا","التخزين خارج الموقع: انقل الـ dumps إلى تخزين كائنات (‎S3‎، Scaleway Object Storage) أو ‎VPS‎ آخر","اختبر الاستعادة بانتظام: الـ dump غير المختبر ليس نسخة احتياطية حقيقية","حجم ‎Docker‎ مسمّى: تحقق من أن حجم ‎PostgreSQL‎ هو حجم مسمّى فعلًا (`docker volume ls`) وليس وحدة تثبيت مؤقتة","احتجاز سير العمل: اضبط احتجازًا معقولًا لكل ‎namespace‎ (`temporal operator namespace update --retention 30d myapp`) لتفادي نمو قاعدة البيانات بصورة غير محدودة",{"type":35,"title":193,"body":194,"errors":195},"استكشاف الأخطاء — الأخطاء الشائعة","فيما يلي الأخطاء الأربعة الأكثر شيوعًا عند تثبيت ‎Temporal‎ على ‎VPS‎ وطريقة معالجتها.",[196,200,204,208],{"message":197,"cause":198,"fix":199},"context deadline exceeded (code = DeadlineExceeded)","الـ ‎Worker‎ لا يستطيع الوصول إلى ‎Frontend Service‎. تحقق من أن المنفذ 7233 مفتوح في جدار الحماية الخاص بالـ ‎VPS‎ (`ufw allow 7233\u002Ftcp`) وأن العنوان المضبوط في الـ ‎SDK‎ الخاص بك صحيح.","اختبر الاتصال من خادم الـ ‎Worker‎: `nc -zv votre-domaine.com 7233`",{"message":201,"cause":202,"fix":203},"Namespace 'default' is not found","الـ ‎namespace‎ الذي يستخدمه الـ ‎Worker‎ الخاص بك غير موجود على خادم ‎Temporal‎. بشكل افتراضي، يُنشئ `‎auto-setup‎` الـ ‎namespace‎ باسم `default`، لكن إذا أنشأت ‎namespace‎ مخصصًا، فتأكد من تحديده في خيارات الـ ‎SDK‎.","أدرج الـ ‎namespace‎ المتاحة: `docker exec temporal-admin-tools temporal operator namespace list`",{"message":205,"cause":206,"fix":207},"FATAL: database 'temporal' does not exist","لم يُهيَّأ مخطط ‎PostgreSQL‎، في الغالب لأن حاوية `‎auto-setup‎` فشلت أثناء التشغيل الأول.","راجع السجلات: `docker compose logs temporal-auto-setup`. إذا كانت قاعدة البيانات مفقودة، احذف الحجم وأعد التشغيل: `docker compose down -v && docker compose up -d`",{"message":209,"cause":210,"fix":211},"Worker versioning mismatch","تغيّر كود الـ ‎Workflow‎ الخاص بك بطريقة غير حتمية (فرع جديد، استدعاء نشاط أُضيف دون `workflow.GetVersion`) ويحاول ‎Temporal‎ إعادة تشغيل السجل القديم مع الكود الجديد.","استخدم `workflow.GetVersion` (‎Go‎) أو `patched` (‎TypeScript SDK‎) لإدارة ترحيل كود الـ ‎Workflow‎ دون كسر الحتمية.",{"type":213,"title":214,"body":215},"tip","‏الأمان: لا تعرض ‏Frontend Service‏ بدون مصادقة","يجب ألا يُعرَّض المنفذ 7233 (‎gRPC Frontend‎) والمنفذ 8080 (‎UI‎) مباشرةً للإنترنت دون حماية. لا يتضمن ‎Frontend Service‎ أي مصادقة أصلية في الإصدارات مفتوحة المصدر: كل من يستطيع الاتصال به يمكنه بدء سير العمل وإيقافها وقراءة جميع بياناتها. الإجراءات الموصى بها: (1) أغلق المنفذ 7233 في ‎ufw‎ وأتِح الوصول فقط لعناوين ‎IP‎ الخاصة بـ ‎Workers‎ (`ufw allow from 10.0.0.0\u002F8 to any port 7233`)؛ (2) ضع الـ ‎UI‎ خلف ‎proxy‎ عكسي ‎nginx‎ مع مصادقة ‎HTTP‎ أساسية أو ‎SSO‎؛ (3) استخدم ‎VPN‎ أو شبكة خاصة بين ‎VPS‎ الخاص بـ ‎Temporal‎ و‎VPS‎ الخاصة بـ ‎Workers‎. في بيئة الإنتاج، فكّر في استخدام ‎mTLS‎ (متاح في ‎Temporal‎ الإصدار 1.x) لتشفير اتصال ‎gRPC‎ والتحقق منه.","بنية تحتية من خادم VPS لـ Temporal","يتطلّب Temporal موارد قوية: يوفّر خادم VPS Cloud من ServOrbit ما يلزم من vCPU وRAM وقرص سريع، مع Docker جاهز للاستخدام وSSL تلقائي لتأمين الـ Web UI. أطلق تنسيقك الدائم بالاستضافة الذاتية.","انشر خادم VPS Cloud الخاص بي","\u002Fvps-cloud",[221,241,258],{"id":222,"slug":223,"slugs":224,"title":228,"excerpt":229,"readTime":230,"views":231,"isPinned":19,"noindex":19,"publishedAt":232,"updatedAt":233,"category":234,"categories":235,"featuredImage":29,"bgImage":30,"posterImage":237,"relatedSolution":238},3,"تثبيت-n8n-على-vps-مع-docker-دليل-شامل-2026",{"fr":225,"en":226,"ar":223,"es":227},"installer-n8n-vps","install-n8n-on-vps-with-docker-complete-2026-guide","instalar-n8n-en-vps-con-docker","تثبيت n8n على VPS مع Docker: دليل شامل 2026","انشر n8n على VPS مع Docker والوكيل العكسي وHTTPS. يشمل عطل V8، خطأ 502، الانتقال من npm وأمان التنفيذ (تنبيه GHSA-vrv8-j27g-g7cr، أغسطس 2026).",19,4,"2026-06-05T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[236],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-n8n-vps-poster.svg",{"categorySlug":239,"appSlug":240},"الأتمتة-وسير-العمل","n8n",{"id":242,"slug":243,"slugs":244,"title":248,"excerpt":249,"readTime":231,"views":18,"isPinned":19,"noindex":19,"publishedAt":250,"updatedAt":251,"category":252,"categories":253,"featuredImage":29,"bgImage":30,"posterImage":255,"relatedSolution":256},24,"تثبيت-node-red-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":245,"en":246,"ar":243,"es":247},"installer-node-red-vps","installing-node-red-on-a-vps-self-hosted-automation","instalar-node-red-en-un-vps","تثبيت Node-RED على خادم VPS: أتمتة ذاتية الاستضافة","ثبّت Node-RED على خادم VPS لأتمتة مسارات عملك القائمة على التدفّق (flow)، وربط واجهات API وأجهزة إنترنت الأشياء IoT، كل ذلك ذاتي الاستضافة وآمن.","2026-05-27T00:00:00+00:00","2026-11-04T16:30:24+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[254],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-node-red-vps-poster.svg",{"categorySlug":239,"appSlug":257},"node-red",{"id":259,"slug":260,"slugs":261,"title":265,"excerpt":266,"readTime":222,"views":267,"isPinned":19,"noindex":19,"publishedAt":268,"updatedAt":251,"category":269,"categories":270,"featuredImage":29,"bgImage":30,"posterImage":272,"relatedSolution":273},25,"تثبيت-huginn-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":262,"en":263,"ar":260,"es":264},"installer-huginn-vps","installing-huginn-on-a-vps-self-hosted-automation","instalar-huginn-en-un-vps","تثبيت Huginn على خادم VPS: أتمتة ذاتية الاستضافة","ثبّت Huginn على خادم VPS لإنشاء وكلاء يراقبون الويب ويستخرجون محتوى الصفحات ويطلقون إجراءات، بأتمتة ذاتية الاستضافة بالكامل.",0,"2026-05-26T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[271],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-huginn-vps-poster.svg",{"categorySlug":239,"appSlug":274},"huginn",true,1794270270689]