السلام عليكم ورحمة الله وبركاته.
أجد في الكثير من الأحيان تطبيقات ويب مفتوحة المصدر على GitHub، مثل تطبيقات التسميع ومحركات البحث القرآنية، وغيرها، وعندما أرغب بتجريبها لا أجد لها رابطًا يوفر إمكانية التجريب المباشر، ويحتاج الأمر لنشرها على استضافة.
وليست فقط الاستضافة هي العقبة بل أيضًا تهيئة البيئة وتوفير المتطلبات في الاستضافة، فهذا قد يأخذ وقتًا طويلًا لا يتناسب مع هدف التجريب فقط.
بما أنني أمتلك استضافة VPS مثل غالبية المطورين، فقد قررت البدء باستخدام لوحة تحكم حديثة تدعم نشر التطبيقات من GitHub بسرعة وبسهولة، ولذلك استغنيت عن لوحة التحكم FastPanel التي كنت أستخدمها، وبدأت باستخدام Dokploy.
فكرة لوحة التحكم Dokploy
بدلًا من إعداد بيئة الخادم عبر أوامر Terminal، تقوم Dokploy وما شابهها من لوحات تحكم بتحويل الخادم إلى منصة شبيهة بـ Heroku أو Vercel. وكل ما علي فعله لنشر أي تطبيق من GitHub بعد ربط حسابي به هو اختيار المستودع (Repository) أو وضع رابطه، ثم النقر على زر النشر، حيث ستتكفل الأداة بإعداد البيئة وتنصيب المتطلبات.
وتعتمد Dokploy في الخلفية على تقنيات قوية مثل Docker (لإدارة الحاويات) و Traefik (لتوجيه الشبكة والـ SSL)، مما يمنح المطورين بيئة تشغيل معزولة واحترافية دون عناء الإعداد اليدوي.
كيف أستخدم Dokploy بشكل عملي؟
في عملي، أستخدم Dokploy بشكل متكرر لنشر التطبيقات مفتوحة المصدر، سواء كنت أريد استخدامها بشكل دائم أو أرغب بتجريبها، وقد استخدمتها مثلًا لنشر تطبيق إحكام الذي طورته مؤخرًا.
بعد تحديد التطبيق الذي أرغب بنشره ومعرفة رابطه على GitHub، أنتقل إلى واجهة لوحة التحكم، ثم أنشئ مشروعًا جديدًا بالنقر على زر Create Project.

وبعد ذلك أنشئ خدمة بالنقر على Create Service، ثم أختار Application.

ثم أدخل إلى إعدادات الخدمة بالنقر عليها، وفي تبويب General أختار Git، وأدخل رابط المستودع واسم الفرع.

ثم أحدد طريقة بناء بيئة العمل من قسم Build Type، حيث أختار تقنية Nixpacks التي تجعل اللوحة تتعرف تلقائيًا على بيئة عمل التطبيق، فعند نشر إحكام لم أحتج لكتابة أي ملفات إعداد معقدة فقد تعرفت اللوحة تلقائيًا على لغة البرمجة والتقنيات التي يستخدمها التطبيق وقامت بتجهيز الحاوية وبناء المشروع بنجاح.

وبعد ذلك أدخل متغيرات البيئة التي يتطلبها التطبيق إن وجدت في تبويب Environment، وهي غالبًا القيم التي يوضحها المطور في مستودع التطبيق ضمن ملفات مثل env.example كبيانات الاتصال بقاعدة البيانات، أو مفاتيح الواجهات البرمجية (API Keys).
ثم بعد ذلك، أنتقل إلى تبويب Domains لإضافة النطاق الذي سيعمل عليه التطبيق، ثم أنقر على زر Deploy لتقوم اللوحة بسحب الأكواد وبناء التطبيق وتشغيله في حاوية معزولة، وإصدار شهادة أمان SSL تلقائيًا، وقد أضفت دومينًا فرعيًا لإحكام بهذه الطريقة.
مميزات Dokploy
استخدام Dokploy أزال عني عناء إعداد الخوادم، وجعل تجربة أي تطبيق قرآني مفتوح المصدر عملية سريعة لا تتطلب سوى نقرات معدودة، مما سمح لي بالتركيز على الكود والفكرة بدلًا من إضاعة الوقت في الإعدادات، ومن تجربتي فهي تتميز بالمميزات التالية:
- مجانية ومفتوحة المصدر: اللوحة مجانية بشكل كامل في نسختها ذاتية الاستضافة (Self-hosted)، مما يجعلها خيارًا ممتازًا للمطورين، مع توفر خطط مدفوعة سحابية للفرق التي تبحث عن خيارات مدارة بالكامل.
- التحديث التلقائي: إذا أطلق مطور التطبيق تحديثًا جديدًا على GitHub، ستقوم اللوحة بسحب التحديث تلقائيًا، وبناء التطبيق مجددًا دون أن يتوقف عن العمل.
- إدارة قواعد البيانات بسهولة: إذا كان التطبيق يتطلب قاعدة بيانات مثل PostgreSQL أو MySQL، يمكن إنشاؤها من نفس اللوحة بضغطة زر وربطها بالتطبيق.
- العزل والأمان: تنصب اللوحة كل تطبيق في حاوية مستقلة، وبالتالي يمكن استخدام عشرات التطبيقات على نفس الخادم دون القلق بشأن تعارض المكتبات أو انهيار الخادم بسبب خطأ في أحد التطبيقات.
عيوب وحدود Dokploy
هناك حدود وعيوب لـ Dokploy والأدوات المشابهة لها، ويجب أن تكون على معرفة بها:
- استهلاك الموارد: لأن اللوحة تعمل على نظام الحاويات وعمليات البناء، فإنها تستهلك ذاكرة عشوائية عالية نسبيًا، وبالتالي فإن استخدامها على خادم يمتلك 1GB فقط من الذاكرة لن يكون مناسبًا، وقد يتجمد أثناء عملية النشر، ولذلك يفضل ألا تقل الذاكرة عن 4GB.
- لا تعمل على الاستضافات المشتركة: هذه الأدوات تتطلب خوادم بصلاحيات وصول إلى الجذر (Root)، ولا يمكن تنصيبها على الاستضافات المشتركة التقليدية مثل تلك التي تستخدم cPanel.
- لا تصلح أخطاء الكود: اللوحة مسؤولة عن توفير بيئة التشغيل فقط، وبالتالي فإذا كان التطبيق الذي تنصبه يعاني من أخطاء برمجية أو استنزاف للذاكرة، فلن يعمل ولن تحل اللوحة هذه المشكلة.
ولدي سؤال أود طرحه للنقاش معكم: بصفتكم مطورين ومهتمين بالتقنيات القرآنية، كيف تتعاملون مع التطبيقات مفتوحة المصدر التي تودون تجربتها أو استضافتها؟ وهل جربتم الاعتماد على أدوات إدارة الاستضافة الحديثة (Self-hosted PaaS) لنشر مشاريعكم، أم تفضلون الطرق التقليدية أو الاعتماد على خدمات مدفوعة مثل Vercel؟