دليل النشر

‏Portainer مقابل Dokploy: أيهما تختار في 2026؟

انشر على VPS Cloud ←

مقارنة

‏Portainer مقابل Dokploy: أيهما تختار في 2026؟

مقارنات10 دقائق للقراءةعدد الخطوات: 10

‏Portainer‏ و‏Dokploy‏ واجهتا ويب لإدارة حاويات ‏Docker‏ على خادم ‏VPS‏. ‏Portainer‏ الأداة التاريخية — مستقرة وموثقة، لكنها تواجه تحديات في 2026 بسبب نهاية الإصدار المجتمعي وثغرات ‏CVE‏ بدرجة 9.4. ‏Dokploy‏ هو البديل مفتوح المصدر، الجاهز للـ‏PaaS‏، ويعالج بالضبط ما لم يعد ‏Portainer CE‏ يغطيه. هذا الدليل يحسم الاختيار: المعمارية، التراخيص، الأمان، والانتقال.

المحتويات· لماذا تستضيف واجهة نشر على خادم VPS؟1/14
  1. 01لماذا تستضيف واجهة نشر على خادم VPS؟
  2. 02ما تكسبه بنشر هذا القالب على خادم VPS
  3. 03وضع Portainer في 2026: نهاية الإصدار المجتمعي
  4. 04ثغرات CVE الحرجة في Portainer 2.x: التحقق والتصحيح
  5. 05ثغرة CVE في Dokploy: السر المضمّن في الكود (< 0.29.13)
  6. 06المتطلبات الأساسية لاستضافة Portainer أو Dokploy
  7. 07الموارد الدنيا الموصى بها
  8. 08نشر Dokploy على خادم VPS (نسخة ≥ 0.29.13)
  9. 09Portainer كبديل — التثبيت السريع
  10. 10‏Portainer 2.x‏ مقابل ‏Dokploy‏ — مقارنة شاملة 2026
  11. 11متى تبقى على Portainer، ومتى تنتقل إلى Dokploy؟
  12. 12الانتقال من Portainer إلى Dokploy: خطوات ملموسة
  13. 13استكشاف الأخطاء: المشكلات الشائعة
  14. 14الأداتان ليستا حصرية دائماً

لماذا تستضيف واجهة نشر على خادم VPS؟

خادم ‏VPS‏ مزود بـ‏Docker‏ يترك لك واجهة وحيدة: سطر الأوامر. هذا كافٍ لجهاز واحد، مرهق لخمسة، وغير قابل للإدارة لفريق كامل. تجمع واجهة الويب السجلات وتحديثات الصور ومتغيرات البيئة وشهادات ‏TLS‏ في مكان واحد — دون الحاجة إلى خط أنابيب ‏CI/CD‏ متكامل منذ اليوم الأول.

تتنافس عائلتان: المديرون (‏Portainer‏، ‏Yacht‏) الذين يعرضون ‏Docker‏ كما هو، وPaaS الخفيف (‏Dokploy‏، ‏Coolify‏، ‏CapRover‏) الذي يضيف طبقة نشر — فروع ‏Git‏، نطاقات تلقائية، شهادات ‏Let's Encrypt‏. الفرق ليس شكلياً: يحدد ما إذا كان مطوروك قادرين على النشر بأنفسهم أم يحتاجون إلى وصول ‏SSH‏.

ما تكسبه بنشر هذا القالب على خادم VPS

  • ‏النشر من ‏Git‏ أو ‏Docker Hub‏ بنقرات قليلة، دون ‏SSH
  • ‏إدارة تلقائية لشهادات ‏TLS‏ عبر ‏Let's Encrypt
  • ‏متغيرات بيئة ذات إصدار، معزولة لكل مشروع
  • ‏سجلات مركزية وطرفية ويب من المتصفح
  • ‏لوحة صحة: ‏CPU‏، ‏RAM‏، حالة الحاويات
  • ‏إدارة الأقراص والشبكات في ‏Docker‏ دون حفظ الأوامر

وضع Portainer في 2026: نهاية الإصدار المجتمعي

كان ‏Portainer CE‏ (الإصدار المجتمعي) المرجع لمدة ست سنوات. في 2026، أعادت ‏Portainer‏ هيكلة نموذج الترخيص: الإصدار المجتمعي أصبح محدوداً بـ‏Kubernetes‏ أو مدفوعاً (‏Portainer Business‏). النسخ القائمة من ‏Portainer 2.x‏ تواصل العمل، لكن ‏CE‏ لم تعد تتطور.

لهذا التحول نتائج عملية متعددة. أولاً، عمليات التثبيت الجديدة التي تبحث عن واجهة ‏Docker‏ مجانية لا تجد خارطة طريق واضحة لـ‏CE‏. ثانياً، صور portainer/portainer-ce:latest لا تزال موجودة وتتحدث، لكن القناة المجتمعية فقدت زخمها. وبشكل حاسم — تراكمت على ‏Portainer 2.x‏ ثغرتا ‏CVE‏ بدرجة 9.4 تبقيان فاعلتين على أي تثبيت غير محدّث.

إن كنت لا تزال تشغّل ‏Portainer 2.x‏، فالسؤال ليس «هل أنتقل بالمبدأ»: بل «هل نسختي محدّثة، وهل المخاطرة مقبولة؟»

ثغرات CVE الحرجة في Portainer 2.x: التحقق والتصحيح

تؤثر ثغرتان على نسخ ‏Portainer‏ من 2.33.0 إلى 2.40.x:

CVE-2026-44848‏ (CVSS 9.4) — نقاط النهاية /plugins/* غير محمية بالمصادقة. مهاجم غير مصادق يستطيع الاستعلام عن ملحقات ‏Docker‏ وتعديلها على مضيفك عبر ‏API‏ الـ‏Portainer‏.

CVE-2026-44849‏ (CVSS 9.4) — يمكن تجاوز آلية قيود ‏Swarm‏: مستخدم ‏Portainer‏ بصلاحيات مخفضة قادر على تنفيذ إجراءات محجوزة للمدير على مجموعة ‏Swarm‏.

النسخ المصححة: 2.33.8، 2.39.2، 2.41.0.

للتحقق من نسختك:

docker exec portainer /app/portainer --version

للتحديث:

docker pull portainer/portainer-ce:latest
docker stop portainer
docker rm portainer
docker run -d \
  --name=portainer \
  --restart=always \
  -p 8000:8000 -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

إن كنت دون 2.33.8 أو 2.39.2 حسب فرعك، حدّث قبل الاستمرار في استخدام التثبيت. ‏Portainer‏ المكشوف على الإنترنت دون هذا التصحيح يمثل ناقل اختراق مباشر لمضيف ‏Docker‏ لديك.

ثغرة CVE في Dokploy: السر المضمّن في الكود (< 0.29.13)

‏Dokploy‏ ليس بمنأى عن الثغرات. CVE-2026-45631‏ (CVSS 10.0) يؤثر على النسخ قبل 0.29.13: كان سر المصادقة مضمّناً بصورة ثابتة في كود المصدر، مما يتيح لأي شخص يعرف هذا السر المصادقة على أي تثبيت ‏Dokploy‏.

تم إصلاح هذه الثغرة منذ الإصدار 0.29.13. للتحقق والتحديث:

# التحقق من الإصدار المثبت
docker exec dokploy dokploy --version

# التحديث عبر السكريبت الرسمي
curl -sSL https://dokploy.com/install.sh | sh

يستخدم ‏Dokploy‏ BETTER_AUTH_SECRET كمفتاح جلسة. في التثبيت قبل 0.29.13، كانت هذه القيمة ثابتة في الكود. بعد التحديث، تحقق من أن docker-compose.yml الخاص بـ‏Dokploy‏ يُصرّح بقيمة عشوائية قوية:

grep BETTER_AUTH_SECRET /etc/dokploy/docker-compose.yml

إذا كانت المتغيرة فارغة أو غائبة، أنشئ قيمة جديدة وأعد التشغيل:

export BETTER_AUTH_SECRET=$(openssl rand -hex 32)

المتطلبات الأساسية لاستضافة Portainer أو Dokploy

كلا الأداتين تعملان على ‏Docker‏. يحتاج ‏Dokploy‏ إلى موارد أكثر قليلاً لأنه يتضمن قاعدة بيانات ‏PostgreSQL‏ ووكيل ‏Traefik‏ إلى جانب الخدمة الرئيسية.

الموارد الدنيا الموصى بها

  • ‏Portainer 2.x: ‏1 vCPU‏، ‏512 ميغابايت RAM‏، ‏Docker 20+‏ — يعمل على أصغر خادم ‏VPS
  • ‏Dokploy: ‏2 vCPU‏، ‏2 غيغابايت RAM‏، ‏Docker 24+‏ — يضيف ‏PostgreSQL‏ و‏Traefik‏ نحو ‏400 ميغابايت عند الإطلاق
  • ‏نطاق أو نطاق فرعي يشير إلى خادمك (‏Dokploy‏ يحتاجه للشهادات التلقائية)
  • ‏المنفذان 80 و443 مفتوحان إذا استخدمت ‏Let's Encrypt‏ عبر ‏Traefik‏ (‏Dokploy‏)
  • ‏وصول ‏SSH‏ بصلاحية ‏root‏ أو ‏sudo‏ للتثبيت الأولي

نشر Dokploy على خادم VPS (نسخة ≥ 0.29.13)

  1. التثبيت عبر السكريبت الرسمي

    الطريقة الأبسط والأكثر تحديثاً:

    curl -sSL https://dokploy.com/install.sh | sh

    يُثبّت السكريبت ‏Docker‏ إن لزم، ينشئ docker-compose.yml في /etc/dokploy/، يولّد BETTER_AUTH_SECRET عشوائياً ويشغّل كل شيء.

  2. التحقق من BETTER_AUTH_SECRET

    بعد التثبيت، تأكد من توليد المتغيرة بشكل صحيح:

    grep BETTER_AUTH_SECRET /etc/dokploy/docker-compose.yml

    يجب أن ترى سلسلة عشوائية من 64 حرفاً. إن كانت المتغيرة فارغة، ولّد قيمة جديدة وأعد التشغيل:

    sed -i "s/BETTER_AUTH_SECRET=/BETTER_AUTH_SECRET=$(openssl rand -hex 32)/" /etc/dokploy/docker-compose.yml
    docker compose -f /etc/dokploy/docker-compose.yml up -d
  3. الوصول إلى الواجهة وإنشاء حساب المدير

    ‏Dokploy‏ يستمع على المنفذ 3000 افتراضياً. افتح http://<ip-خادمك>:3000 في المتصفح. تطلب منك الزيارة الأولى إنشاء حساب المدير. افعل ذلك فوراً — الواجهة عامة حتى يوجد هذا الحساب.

  4. ضبط النطاق وتفعيل HTTPS

    في إعدادات ‏Dokploy‏ → Server → Domain، أدخل ‏FQDN‏ (dokploy.yourdomain.com). ‏Traefik‏ يسترد تلقائياً شهادة ‏Let's Encrypt‏ عبر ‏ACME HTTP-01‏. يجب أن يشير ‏DNS‏ إلى الخادم قبل هذه الخطوة.

  5. تحديث Dokploy

    ‏Dokploy‏ يعرض زر Update في إعداداته، أو استخدم السكريبت:

    curl -sSL https://dokploy.com/install.sh | sh

    السكريبت متكرر الاستخدام (idempotent): يحدث الصورة دون حذف إعداداتك أو مشاريعك.

Portainer كبديل — التثبيت السريع

إذا فضّلت البقاء على ‏Portainer‏ (تثبيت قائم أو اختيار مقصود)، الأمر المرجعي:

docker run -d \
  --name=portainer \
  --restart=always \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

الوصول على https://<ip>:9443. استبدل latest بـ 2.41.0 لتثبيت الإصدار وتجنب التحديثات الصامتة.

‏Portainer 2.x‏ مقابل ‏Dokploy‏ — مقارنة شاملة 2026

مرّر الجدول أفقيًا

المعيار‏Portainer 2.x‏Dokploy
الترخيص‏CE‏ مجاني (‏Docker‏ فقط)مفتوح المصدر (‏Apache 2.0‏)
مستقبل CE‏محدود — CE 3.0‏ لـ‏Kubernetes‏ أو مدفوعخارطة طريق فاعلة، مجتمع متنامٍ
ثغرات CVE الفاعلة‏CVE-2026-44848‏ + 44849 (‏CVSS 9.4‏) إن كانت النسخة < 2.41.0‏CVE-2026-45631‏ (‏CVSS 10.0‏) إن كانت النسخة < 0.29.13
‏RAM‏ الدنيا‏512 ميغابايت‏2 غيغابايت (‏PostgreSQL‏ + ‏Traefik‏ مضمّنان)
نشر من Gitلا (صور ‏Docker‏ فقط)‏نعم (‏GitHub‏، ‏GitLab‏، ‏Gitea‏، ‏Bitbucket‏)
شهادات TLSيدوية (وكيل عكسي خارجي)‏تلقائية عبر ‏Let's Encrypt‏ بواسطة ‏Traefik
قوالب التطبيقاتنعم (مكتبة مدمجة)‏نعم (‏Docker Compose‏ مستورد)
سجل خاصنعمنعم
‏CI/CD‏ مدمجلا‏Webhooks‏ لـ‏Git‏ + إشعارات
Kubernetes‏نعم (‏BE‏ مدفوع)لا (‏Docker Compose‏ / ‏Swarm‏)
متعدد الخوادم‏نعم (نقاط النهاية)‏نعم (وكلاء بعيدون)
الواجهةناضجة وشاملةعصرية، موجّهة للمشاريع

متى تبقى على Portainer، ومتى تنتقل إلى Dokploy؟

البقاء على ‏Portainer 2.x‏ منطقي في ثلاث حالات: تدير مجموعة ‏Docker Swarm‏ أو ‏Kubernetes‏ بإعدادات معقدة؛ لديك فرق تتقن الواجهة مع أدلة تشغيل موثقة؛ أو تحتاج مستوى التفصيل في الشبكات والأقراص الذي يعرضه ‏Portainer‏ نصاً.

في هذه الحالات، الشرط غير القابل للتفاوض هو وجود نسخة مصححة (2.33.8 أو 2.39.2 أو 2.41.0) وتقييد الوصول إلى الواجهة: لا تكشف المنفذ 9000/9443 مباشرة على الإنترنت، ضع ‏Portainer‏ خلف وكيل عكسي بمصادقة إضافية إن كان مستخدمون غير إداريين يصلون إليه.

الانتقال إلى ‏Dokploy‏ هو القرار الصحيح إذا: بدأت من صفر على خادم ‏VPS‏ جديد؛ تريد أن ينشر مطوروك من ‏Git‏ دون ‏SSH‏؛ تدير نطاقات متعددة ولا تريد الحفاظ يدوياً على ‏Nginx‏/‏Traefik‏؛ أو تبحث عن بديل بعد التغيير في ‏CE 3.0‏ لاستخدامك في ‏Docker‏.

الانتقال من Portainer إلى Dokploy: خطوات ملموسة

  1. تصدير مخزون Portainer الخاص بك

    قبل الانتقال، رتّب قائمة بالـ‏stacks‏ والحاويات الفاعلة:

    docker ps --format 'table {{.Names}}	{{.Image}}	{{.Status}}'
    docker volume ls
    docker network ls --filter driver=bridge

    لكل ‏stack‏ في ‏Portainer‏، استرد docker-compose.yml من الواجهة (‏Stacks‏ → ‏stack‏ → ‏Editor‏) أو من نظام الملفات.

  2. نسخ احتياطي لأقراص البيانات

    تحتوي الأقراص المسماة على بيانات تطبيقاتك. انسخها احتياطياً قبل أي عملية:

    docker run --rm \
      -v <اسم_القرص>:/data \
      -v $(pwd):/backup \
      alpine tar czf /backup/<اسم_القرص>.tar.gz /data

    كرر العملية لكل قرص حيوي.

  3. تثبيت Dokploy على نفس الخادم VPS أو خادم مخصص

    عند الانتقال على نفس المضيف، أوقف ‏Portainer‏ أولاً لتحرير المنافذ:

    docker stop portainer && docker rm portainer

    ثم شغّل تثبيت ‏Dokploy‏ (انظر الإجراء أعلاه). يستخدم ‏Dokploy‏ وكيل ‏Traefik‏ على المنفذين 80/443 — تحقق من أن لا خدمة أخرى تشغلهما.

  4. إعادة إنشاء مشاريعك في Dokploy

    في ‏Dokploy‏، أنشئ Compose Project لكل ‏stack‏ في ‏Portainer‏:
    1. ‏Projects‏ → مشروع جديد
    2. أضف خدمة من نوع Docker Compose
    3. الصق docker-compose.yml أو أشر إلى مستودع ‏Git‏
    4. ضبط متغيرات البيئة من تبويب Environment
    5. خصّص نطاقاً — يضبط ‏Dokploy‏ وكيل ‏Traefik‏ تلقائياً

  5. التحقق وتبديل DNS

    انشر أولاً على نطاق فرعي تجريبي (test.yourdomain.com). بعد التحقق، حدّث إدخالات ‏DNS‏ لتشير إلى ‏Dokploy‏. يصدر ‏Traefik‏ الشهادات تلقائياً حالما ينتشر ‏DNS‏.

استكشاف الأخطاء: المشكلات الشائعة

‏Portainer‏ — الواجهة لا يمكن الوصول إليها بعد التحديث
تحقق من تحميل القرص portainer_data بشكل صحيح. تحديث دون قرص مسمى يبدأ من قاعدة فارغة ويطلب إنشاء حساب المدير مجدداً.

‏Portainer‏ — TLS handshake error‏ على المنفذ 9443
ينشئ ‏Portainer‏ شهادة موقعة ذاتياً. متصفحك يحذرك بحق. ضع ‏Portainer‏ خلف وكيل عكسي (‏nginx‏، ‏Caddy‏) بشهادة حقيقية للوصول الآمن في الإنتاج.

‏Dokploy‏ — ‏Traefik‏ لا يولّد شهادة
السبب الأكثر شيوعاً: ‏DNS‏ لم ينتشر بعد نحو الخادم ‏VPS‏. تحقق بـ dig +short yourdomain.com. يتوقف ‏Traefik‏ على استجابة ‏DNS‏ صالحة قبل إطلاق تحدي ‏ACME‏. إن كان ‏DNS‏ صحيحاً، تحقق من فتح المنفذ 80 (ufw allow 80).

‏Dokploy‏ — نشر ‏Git‏ يفشل بصمت
تحقق من سجلات الخدمة في الواجهة (‏Deployments‏ → تبويب ‏Logs‏). الخطأ الأكثر شيوعاً هو BETTER_AUTH_SECRET مفقود أو مفتاح ‏SSH‏ غير مضبوط للمستودعات الخاصة. يوفر ‏Dokploy‏ زر Generate SSH Key في إعدادات المشروع للمستودعات الخاصة على ‏GitLab‏/‏GitHub‏.

الأداتان ليستا حصرية دائماً

يستطيع ‏Portainer‏ إدارة عدة نقاط نهاية ‏Docker‏ بعيدة من واجهة واحدة — بما فيها خادم ‏VPS‏ مثبت عليه ‏Dokploy‏. بعض الفرق تحتفظ بـ‏Portainer‏ أداةً للمراقبة وبـ‏Dokploy‏ أداةً للنشر. هذا ليس نمطاً مضاداً إن كانت الأدوار محددة بوضوح. الثمن: سطحان للتصحيح. إن اخترت هذه المعمارية، تأكد من أن الأداتين محدّثتان — راجع ثغرات ‏CVE‏ في مطلع المقالة.

للمزيد: البدائل لـ‏Portainer CE 3.0، دليل النشر الكامل مع ‏Dokploy والتحديث الحرج لثغرات ‏CVE‏ في ‏Dokploy‏ 2026.

انشر Dokploy على خادمك VPS في دقائق

يضبط قالب ‏Dokploy‏ من ‏ServOrbit‏ تلقائياً ‏Docker‏ و‏Traefik‏ وشهادات ‏TLS‏. تبدأ بنسخة ≥ 0.29.13 مصحّحة وجاهزة للإنتاج.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة