لماذا تستضيف واجهة Docker ذاتيًا على VPS
عندما يستضيف VPS الخاص بك أكثر من ثلاث أو أربع حاويات، تُظهر الإدارة عبر SSH بـ docker ps وdocker logs حدودها. واجهة مخصصة مثل Portainer أو Dokploy تمنحك رؤية مركزية للحاويات ووحدات التخزين والشبكات والسجلات، من دون الاعتماد على خدمة SaaS خارجية تفوتر عمليات نشرك حسب الحجم. على VPS تتحكّم فيه من طرف إلى طرف، تُبقي بياناتك ومتغيرات بيئتك وأسرارك على جهازك الخاص. Portainer طبقة إدارة عامة تتكيّف مع Docker وDocker Swarm وKubernetes. أما Dokploy فيذهب أبعد: إنه منصة نشر تطبيقات (PaaS) تبني صورك من مستودع Git وتدير النطاقات وSSL عبر Traefik المدمج. لذا يعتمد الخيار على ما تريد أتمتته أكثر من اعتماده على السعر.
ما الذي تكسبه بنشر هذا القالب على VPS الخاص بك
- رؤية في الوقت الفعلي لجميع حاوياتك ووحدات تخزينك وشبكاتك من لوحة تحكم ويب واحدة.
- الوصول إلى سجلات حاوية وطرفيتها من دون فتح جلسة SSH في كل مرة.
- نشر التطبيقات من Git (Dokploy) أو إعادة النشر عبر حزمة Compose (Portainer) ببضع نقرات.
- إدارة مركزية لمتغيرات البيئة والأسرار من دون تشتيتها في ملفات.
- تحكّم بالوصول متعدد المستخدمين لمشاركة الـ VPS مع فريق أو عميل.
- لا اعتماد على منصة PaaS خارجية: بياناتك وعمليات بنائك تبقى على بنيتك التحتية.
متطلبات استضافتهما
Portainer خفيف للغاية: يتّسع الوكيل والواجهة في نحو 256 ميغابايت من الذاكرة، وVPS بـ 1 vCPU / 1 غيغابايت يناسب إدارة نحو عشر حاويات. أما Dokploy فيتطلّب أكثر لأنه يتضمّن Traefik وقاعدة PostgreSQL وRedis ونظام بناء: احسب 2 vCPU و4 غيغابايت من الذاكرة كحد أدنى، مع كون 8 غيغابايت أكثر راحة إذا كنت تبني صور Node أو PHP بانتظام. في كلتا الحالتين تحتاج إلى Docker (وDocker Compose لـ Dokploy)، واسم نطاق يشير إلى الـ VPS، والمنفذين 80/443 مفتوحين لأجل SSL التلقائي. جهّز 20 غيغابايت من القرص على الأقل للصور ووحدات التخزين.
نشر Dokploy على VPS (وتثبيت Portainer كبديل)
تحضير الـ VPS وتثبيت Docker
اتصل عبر SSH، وحدِّث النظام ثم ثبِّت Docker عبر السكربت الرسمي: curl -fsSL https://get.docker.com | sh. تحقّق بـ docker --version.
تثبيت Dokploy بأمر واحد
يوفّر Dokploy سكربت تثبيت ينشر حزمته الكاملة: curl -sSL https://dokploy.com/install.sh | sh. يُعِدّ Traefik وPostgreSQL وRedis تلقائيًا ويكشف الواجهة على المنفذ 3000.
توجيه نطاقك وتفعيل SSL
أنشئ سجل A باسم dokploy.mydomain.com نحو عنوان IP الخاص بالـ VPS. في Dokploy، أدخِل هذا النطاق: عندئذٍ يولّد Traefik شهادة Let's Encrypt تلقائيًا، من دون أي إعداد يدوي لـ Nginx.
توصيل مستودع Git ونشر تطبيق
أنشئ مشروعًا، واربط مستودع GitHub أو GitLab، واختر الفرع وملف Dockerfile أو حزمة بناء Nixpacks. يبني Dokploy الصورة وينشرها؛ وكل عملية push تُطلق بناءً جديدًا.
بديل: نشر Portainer للتحكّم الخالص
إذا كنت تريد إدارة Docker فقط، فشغِّل بدلًا من ذلك: docker volume create portainer_data ثم docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest. الواجهة متاحة عبر HTTPS على المنفذ 9443.
تأمين الوصول إلى الواجهة
ضع الواجهة خلف بروكسي عكسي بمصادقة، وقيّد منفذ الإدارة بعنوان IP الخاص بك عبر الجدار الناري (ufw allow from VOTRE_IP to any port 9443)، وفعِّل المصادقة الثنائية المتاحة في كلتا الأداتين.
| المعيار | Portainer | Dokploy |
|---|---|---|
| نوع الأداة | إدارة Docker/Swarm/K8s | منصة PaaS مستضافة ذاتيًا (نشر عبر Git) |
| النشر من Git | محدود (حزم Compose) | أصلي، بناء تلقائي عند push |
| البروكسي العكسي / SSL | يُضبط بنفسك | Traefik + Let's Encrypt مدمجان |
| بصمة الذاكرة | خفيفة جدًا (~256 ميغابايت) | أثقل (2-4 غيغابايت) |
| منحنى التعلّم | منخفض، موجَّه للبنية التحتية | متوسط، موجَّه للتطبيقات |
| بيئات متعددة | ممتاز (نقاط نهاية متعددة) | جيد (لكل مشروع) |
| حالة الاستخدام المثالية | إدارة بنية Docker تحتية قائمة | نشر تطبيقاتك من دون CI/CD ثقيل |
| قاعدة بيانات مُدارة | لا | نعم (قوالب Postgres/MySQL/Redis) |
الأداتان لا تتنافيان: ثبِّت Dokploy لنشر تطبيقاتك من Git، وأضِف Portainer بوضع القراءة لفحص الحاويات والشبكات ووحدات التخزين التي ينشئها Dokploy بدقة. وجِّه Portainer إلى مقبس Docker نفسه (/var/run/docker.sock) وستحصل على رؤية منخفضة المستوى لا تقدّمها واجهة PaaS الخاصة بـ Dokploy، من دون أي تعارض بينهما.