[{"data":1,"prerenderedAt":207},["ShallowReactive",2],{"seo-verification":3,"blog-تثبيت-apache-airflow-على-خادم-vps-أتمتة-ذاتية-الاستضافة-ma-ar":6,"promo-bar-likely":206},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-تثبيت-apache-airflow-على-خادم-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":32,"intro":35,"sections":36,"ctaTitle":148,"ctaBody":149,"ctaButton":150,"ctaUrl":151,"relatedPosts":152},31,"تثبيت-apache-airflow-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":12,"en":13,"ar":10,"es":14},"installer-apache-airflow-vps","installing-apache-airflow-on-a-vps-self-hosted-automation","instalar-apache-airflow-en-un-vps","تثبيت Apache Airflow على VPS: Docker Compose وPostgreSQL","تثبيت Apache Airflow على VPS باستخدام Docker Compose: قاعدة بيانات PostgreSQL للبيانات الوصفية، CeleryExecutor متعدد العمال، الاتصالات المشفرة واستكشاف الأخطاء — دليل شامل 2026.",12,1,false,"2026-05-20T00:00:00+00:00","2026-11-04T16:30:25+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-apache-airflow-vps-poster.svg",{"categorySlug":33,"appSlug":34},"الأتمتة-وسير-العمل","airflow","Apache Airflow هو المعيار مفتوح المصدر لتنسيق خطوط أنابيب البيانات وسير عمل ETL ومهام التعلم الآلي بلغة Python. استضافته ذاتياً على VPS يحررك من تكلفة الخدمة المُدارة (Cloud Composer, MWAA) مع الحفاظ على التحكم الكامل في بياناتك ومكتباتك. يغطي هذا الدليل كل شيء من الصفر حتى إعداد جاهز للإنتاج: PostgreSQL كقاعدة بيانات للبيانات الوصفية، وCeleryExecutor لتوزيع المهام، والأسرار والاتصالات المشفرة، والمنهجية الصحيحة للتصحيح السريع.",[37,41,51,54,57,79,82,85,88,100,103,137,141],{"type":38,"title":39,"body":40},"h2","لماذا استضافة Apache Airflow على VPS خاص","خدمات التنسيق السحابية مثل Cloud Composer أو MWAA تجمع Airflow كخدمة مُدارة، لكنها تفوتر البيئة بالساعة بغض النظر عن حمل العمل الفعلي. الاستضافة الذاتية على VPS تعني أنك تدفع فقط مقابل الخادم، وتعمل DAGs الخاصة بك بالقرب من مصادر بياناتك الداخلية دون نقل شبكة خارجي. الحرية تمتد أبعد من ذلك: تختار إصدار Airflow، ومكتبات Python، واتصالات قاعدة البيانات، والمُنفِّذ. للبيانات الحساسة أو البيئات المنظمة، البقاء محلياً مع VPS مخصص ليس خياراً بل متطلباً.",{"type":42,"title":43,"items":44},"ul","ما الذي ينسقه Airflow عملياً",[45,46,47,48,49,50],"**خطوط أنابيب البيانات وETL** — الاستخراج من APIs أو قواعد البيانات، التحويل والتحميل إلى مستودع البيانات.","**سير عمل التعلم الآلي** — تدريب النماذج، التقييم، النشر الآلي مع تبعيات الخطوات.","**المهام المجدولة المعقدة** — backfills، catchups، إعادة المحاولة قابلة للتهيئة لكل مهمة.","**التكاملات مع الأطراف الثالثة** — أكثر من 80 مزوداً رسمياً: PostgreSQL، MySQL، S3، BigQuery، dbt، Spark.","**خطوط أنابيب التقارير** — إنشاء تقارير دورية آلية وتسليمها عبر البريد الإلكتروني أو Slack.","**تنسيق الخدمات المصغرة** — تشغيل وظائف عن بُعد عبر API والانتظار لنتائجها قبل المتابعة.",{"type":38,"title":52,"body":53},"متطلبات VPS والحزمة التقنية","Airflow هو الأكثر استهلاكاً للموارد في هذه الفئة في وضع CeleryExecutor، حيث يشغّل عدة خدمات بالتوازي. **للإنتاج**: الحد الأدنى 4 vCPU و8 GB RAM. **للتطوير أو الاختبار**: 2 vCPU و4 GB RAM كافيان في LocalExecutor. يلزم 40 GB SSD للسجلات والبيانات الوصفية. المتطلبات البرمجية: Docker 24+ وDocker Compose v2، Ubuntu 22.04 LTS أو Debian 12، واسم نطاق يشير إلى VPS الخاص بك.",{"type":38,"title":55,"body":56},"معمارية Docker Compose لـ Airflow","ملف `docker-compose.yaml` الرسمي لـ Airflow ينشر ستة خدمات تشكل معمارية كاملة. **خادم الويب** يخدم الواجهة الرسومية على المنفذ 8080. **المجدول** هو قلب النظام: يحلل DAGs، ويجدول المهام، ويضعها في قائمة الانتظار للعمال. **العامل** ينفذ المهام المسندة. **المُشغِّل** يتعامل مع المهام القابلة للتأجيل. **PostgreSQL** هي قاعدة بيانات البيانات الوصفية. **Redis** يخدم كوسيط رسائل بين المجدول وعمال Celery.",{"type":58,"title":59,"steps":60},"steps","نشر Airflow 3.x باستخدام Docker Compose",[61,64,67,70,73,76],{"title":62,"body":63},"جلب docker-compose الرسمي وإنشاء المجلدات","أنشئ مجلد العمل، نزّل الملف المرجعي وجهّز المجلدات:\n```bash\nmkdir -p \u002Fopt\u002Fairflow && cd \u002Fopt\u002Fairflow\ncurl -LfO 'https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml'\nmkdir -p .\u002Fdags .\u002Flogs .\u002Fplugins .\u002Fconfig\n```",{"title":65,"body":66},"تهيئة ملف ‎.env (UID، PostgreSQL، المفتاح السري)","أنشئ `\u002Fopt\u002Fairflow\u002F.env` بالمتغيرات الأساسية:\n```bash\necho \"AIRFLOW_UID=$(id -u)\" > .env\necho \"AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\" >> .env\necho \"AIRFLOW__CORE__FERNET_KEY=$(python3 -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')\" >> .env\n```\n`FERNET_KEY` يشفر الاتصالات والمتغيرات — **أنشئها مرة واحدة واحتفظ بنسخة احتياطية**.",{"title":68,"body":69},"تهيئة قاعدة البيانات","طبّق الترحيلات وأنشئ أول حساب مسؤول:\n```bash\ndocker compose up airflow-init\n```\nانتظر كود الخروج `0` — أي كود آخر يشير إلى مشكلة اتصال بـ PostgreSQL.",{"title":71,"body":72},"تشغيل جميع الخدمات","أطلق المجموعة الكاملة في الخلفية:\n```bash\ndocker compose up -d\ndocker compose ps\n```\nجميع الحاويات يجب أن تصل إلى حالة `healthy` في غضون دقيقة إلى ثلاث دقائق.",{"title":74,"body":75},"إنشاء حساب مسؤول مخصص","أنشئ حسابك الدائم:\n```bash\ndocker compose exec airflow-webserver airflow users create \\\n  --username admin --firstname الاسم --lastname الكنية \\\n  --role Admin --email admin@yourdomain.com \\\n  --password كلمةمرورقوية\n```",{"title":77,"body":78},"كشف Airflow خلف reverse proxy مع SSL","لا تكشف المنفذ 8080 مباشرة. مع Caddy:\n```bash\napt install -y caddy\ncat > \u002Fetc\u002Fcaddy\u002FCaddyfile \u003C\u003C 'EOF'\nairflow.yourdomain.com {\n    reverse_proxy localhost:8080\n}\nEOF\nsystemctl reload caddy && ufw deny 8080\n```",{"type":38,"title":80,"body":81},"تهيئة PostgreSQL كخلفية للبيانات الوصفية","**لا تستخدم SQLite في الإنتاج مع Airflow على Docker.** SQLite غير مصمم للوصول المتزامن من عدة عمليات: المجدول وخادم الويب والعمال يصلون إلى قاعدة البيانات في نفس الوقت، وSQLite على Docker volumes له قيود تأمين تسبب تلف البيانات وفقدانها. تحقق أن `.env` يفرض الاتصال بـ PostgreSQL:\n```\nAIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\n```\nانسخ قاعدة البيانات بانتظام: `docker compose exec postgres pg_dump -U airflow airflow > backup_$(date +%Y%m%d).sql`.",{"type":38,"title":83,"body":84},"الانتقال إلى CeleryExecutor لعدة عمال","**LocalExecutor** ينفذ المهام كعمليات فرعية من المجدول — بسيط لكن محدود بعقدة واحدة. **CeleryExecutor** يفصل التنفيذ: المجدول يضع المهام في قائمة انتظار Redis، وعامل واحد أو أكثر يستهلكونها بشكل مستقل. للتوسع الأفقي:\n```bash\ndocker compose up -d --scale airflow-worker=3\n```\nهذا يشغّل ثلاثة عمال يستهلكون نفس قائمة انتظار Redis بالتوازي.",{"type":38,"title":86,"body":87},"إدارة الاتصالات والمتغيرات السرية","Airflow يشفر الاتصالات والمتغيرات الحساسة في قاعدة البيانات باستخدام `FERNET_KEY`. **عبر الواجهة**: Admin → Connections → Add Connection. **عبر متغيرات البيئة**: متغير بيئة مسبوق بـ `AIRFLOW_CONN_` يتجاوز أي اتصال مخزن في قاعدة البيانات:\n```\nAIRFLOW_CONN_MY_POSTGRES=postgresql:\u002F\u002Fuser:password@host:5432\u002Fdbname\n```\n**Secret Backend**: لبيئات Kubernetes أو السحابة، هيّئ مزود السر المناسب (AWS Secrets Manager، HashiCorp Vault).",{"type":58,"title":89,"steps":90},"إنشاء واختبار أول DAG Python",[91,94,97],{"title":92,"body":93},"إنشاء ملف DAG في مجلد \u002Fdags","أنشئ `\u002Fopt\u002Fairflow\u002Fdags\u002Fmy_first_dag.py`:\n```python\nfrom airflow.sdk import DAG, task\nfrom datetime import datetime\n\nwith DAG(\n    dag_id='my_first_dag',\n    schedule='@daily',\n    start_date=datetime(2025, 1, 1),\n    catchup=False,\n) as dag:\n\n    @task\n    def extract(): return {'rows': 42}\n\n    @task\n    def transform(data): return data['rows'] * 2\n\n    @task\n    def load(result): print(f'Result: {result}')\n\n    load(transform(extract()))\n```",{"title":95,"body":96},"التحقق من أن المجدول يحلل DAG دون أخطاء","تحقق يدوياً:\n```bash\ndocker compose exec airflow-scheduler airflow dags list | grep my_first_dag\n```\nإذا لم يظهر DAG بعد 30 ثانية، ابحث عن أخطاء التحليل:\n```bash\ndocker compose logs airflow-scheduler | grep -i 'error\\|exception' | tail -20\n```",{"title":98,"body":99},"تشغيل يدوي وفحص السجلات","في واجهة Airflow، انتقل إلى DAGs، ابحث عن `my_first_dag`، فعّله، ثم اضغط ▶ Trigger DAG. انقر على مهمة ثم Logs لرؤية المخرجات. من الطرفية:\n```bash\ndocker compose exec airflow-scheduler airflow dags trigger my_first_dag\n```",{"type":38,"title":101,"body":102},"تأمين تثبيت Airflow","تثبيت Airflow يكشف محتملاً اتصالات قاعدة البيانات والمتغيرات وسجلات التنفيذ. طبّق هذه الإجراءات فور النشر. **تعطيل DAGs المثال**:\n```\nAIRFLOW__CORE__LOAD_EXAMPLES=False\n```\n**جدار الحماية على المنفذ 8080**: `ufw deny 8080`. **المصادقة**: هيّئ LDAP أو OAuth2 للمؤسسات. **تدوير المفاتيح**: إذا احتجت لتغيير `FERNET_KEY`، استخدم `airflow db rotate-fernet-key` لإعادة تشفير جميع الاتصالات المخزنة.",{"type":104,"title":105,"headers":106,"rows":111},"comparison","LocalExecutor مقابل CeleryExecutor مقابل KubernetesExecutor",[107,108,109,110],"المعيار","LocalExecutor","CeleryExecutor","KubernetesExecutor",[112,117,122,127,132],[113,114,115,116],"الموارد المطلوبة","2 vCPU \u002F 4 GB RAM","4 vCPU \u002F 8 GB RAM + Redis","مطلوب Kubernetes cluster",[118,119,120,121],"التوازي","محدود بعدد CPU المجدول","أفقي — عدد عمال حسب الحاجة","pod واحد لكل مهمة",[123,124,125,126],"عزل المهام","عمليات فرعية مشتركة","عمال منفصلون، نفس الصورة","pod معزول لكل مهمة",[128,129,130,131],"التعقيد التشغيلي","بسيط — بدون Redis","معتدل — Redis للصيانة","مرتفع — Kubernetes مطلوب",[133,134,135,136],"حالة الاستخدام المثالية","التطوير، الاختبارات","إنتاج VPS","السحابة الأصلية",{"type":138,"title":139,"body":140},"tip","تحديث Airflow دون توقف","للتحديث المتدرج دون مقاطعة DAGs الجارية:\n```bash\ndocker compose stop airflow-webserver airflow-scheduler\ndocker compose pull\ndocker compose up -d airflow-webserver airflow-scheduler\ndocker compose exec airflow-scheduler airflow db upgrade\ndocker compose up -d\n```\nاحتفظ دائماً بنسخة احتياطية حديثة من PostgreSQL قبل أي ترقية.",{"type":38,"title":142,"body":143,"cta_url":144,"cta_title":145,"cta_body":146,"cta_button":147},"تصحيح الأخطاء وقراءة سجلات Airflow","**سجلات المهام**: كل مهمة تكتب في `.\u002Flogs\u002Fdag_id\u002Frun_id\u002Ftask_id\u002F`. **سجلات المجدول**: الأهم لتشخيص DAGs التي لا تُشغَّل:\n```bash\ndocker compose logs airflow-scheduler --follow --tail=100\n```\n**أخطاء الاستيراد الصامتة**:\n```bash\ndocker compose exec airflow-webserver airflow dags list-import-errors\n```\n**تنظيف السجلات**: عيّن `AIRFLOW__LOG_RETENTION_DAYS=30` لتجنب امتلاء القرص.","\u002Fapplications\u002Fautomatisation\u002Fairflow","نشر Airflow على VPS ServOrbit","تقدم ServOrbit خوادم VPS Power مُهيأة مسبقاً مع Docker Compose لتشغيل Airflow في أقل من عشر دقائق.","نشر Airflow على VPS","خادم VPS Cloud المثالي لـ Apache Airflow","يتطلّب Airflow 3 في وضع Celery ذاكرة RAM وعدة حاويات. يوفّر خادم VPS Cloud من ServOrbit الموارد، وDocker مُعدًّا مسبقًا، وSSL تلقائيًا لاستضافة مجدول البيانات لديك بالاستضافة الذاتية، بتكلفة تحت السيطرة.","انشر خادم VPS Cloud الخاص بي","\u002Fapplications\u002Fالأتمتة-وسير-العمل\u002Fairflow",[153,172,189],{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":162,"views":163,"isPinned":19,"noindex":19,"publishedAt":164,"updatedAt":165,"category":166,"categories":167,"featuredImage":29,"bgImage":30,"posterImage":169,"relatedSolution":170},3,"تثبيت-n8n-على-vps-مع-docker-دليل-شامل-2026",{"fr":157,"en":158,"ar":155,"es":159},"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},[168],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-n8n-vps-poster.svg",{"categorySlug":33,"appSlug":171},"n8n",{"id":173,"slug":174,"slugs":175,"title":179,"excerpt":180,"readTime":163,"views":18,"isPinned":19,"noindex":19,"publishedAt":181,"updatedAt":182,"category":183,"categories":184,"featuredImage":29,"bgImage":30,"posterImage":186,"relatedSolution":187},24,"تثبيت-node-red-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":176,"en":177,"ar":174,"es":178},"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},[185],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-node-red-vps-poster.svg",{"categorySlug":33,"appSlug":188},"node-red",{"id":190,"slug":191,"slugs":192,"title":196,"excerpt":197,"readTime":154,"views":198,"isPinned":19,"noindex":19,"publishedAt":199,"updatedAt":182,"category":200,"categories":201,"featuredImage":29,"bgImage":30,"posterImage":203,"relatedSolution":204},25,"تثبيت-huginn-على-خادم-vps-أتمتة-ذاتية-الاستضافة",{"fr":193,"en":194,"ar":191,"es":195},"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},[202],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-huginn-vps-poster.svg",{"categorySlug":33,"appSlug":205},"huginn",true,1794270264129]