لماذا تختار Dokku لخادم VPS الخاص بك
حيث تُضمّن حلول PaaS الأخرى واجهة ويب ومنسّقًا كاملًا، يبقى Dokku بسيطًا عن قصد: فهو مجموعة من سكربتات shell تقود Docker. تدفع شفرتك بـ git push dokku main، فيكتشف Dokku اللغة عبر buildpacks الخاصة بـ Heroku أو عبر Dockerfile، ويبني الصورة ويضع التطبيق على الإنترنت. تُدار كل الأمور من سطر الأوامر، ما يجعله خفيفًا للغاية وقابلًا للتنبؤ. إنه الخيار المثالي للمطورين الذين يريدون سير عمل شبيهًا بـ Heroku على خادم VPS صغير، دون دفع تكلفة طبقة إضافية ودون استهلاك RAM من أجل لوحة تحكم. تغطي منظومة إضافاته (PostgreSQL وRedis وLet's Encrypt) الاحتياجات الأساسية.
نقاط قوة Dokku الملموسة
- بصمة ذاكرة ضئيلة: يعمل بأريحية على خادم VPS بذاكرة 1 غيغابايت من RAM.
- النشر عبر
git push، تمامًا كما في Heroku، مع اكتشاف تلقائي للغة. - دعم أصيل لـ buildpacks الخاصة بـ Heroku ولملفات Dockerfile، حسب اختيارك ومشروعك.
- إضافات رسمية لـ PostgreSQL وMySQL وRedis وMongoDB، تُدار عبر واجهة سطر الأوامر.
- إضافة Let's Encrypt لتفعيل HTTPS تلقائيًا وتجديده.
- عمليات نشر بلا توقف (zero-downtime) بفضل فحوصات السلامة قبل تبديل الحاوية.
متطلبات Dokku
Dokku هو أكثر منصات PaaS اقتصادًا في الموارد ضمن هذه السلسلة. خادم VPS بذاكرة 1 غيغابايت من RAM ومعالج vCPU واحد يكفي للتطبيقات الخفيفة، لكن خصّص 2 غيغابايت من RAM بمجرد أن تستخدم عمليات البناء لديك buildpacks (تُترجَم Node وRuby وPython في الذاكرة) أو أن تستضيف قاعدة بيانات إلى جانبها. احسب 25 غيغابايت من قرص SSD. النظام الموصى به هو Ubuntu LTS مثبَّت حديثًا، دون Docker مثبَّت مسبقًا (سكربت Dokku يثبّته بنفسه). أما من ناحية DNS: هيّئ إما نطاقًا لكل تطبيق، أو نطاق wildcard *.mydomain.com للنشر عبر النطاقات الفرعية. يجب أن تكون المنافذ 22 (SSH، لا غنى عنه لـ git push) و80 و443 مفتوحة. أضِف مفتاح SSH العام الخاص بك للسماح بعمليات النشر.
ثبّت Dokku وانشر تطبيقًا
ثبّت Dokku عبر السكربت الرسمي
على نظام Ubuntu نظيف: wget -NP . https://dokku.com/install/v0.34.0/bootstrap.sh ثم sudo DOKKU_TAG=v0.34.0 bash bootstrap.sh. يثبّت السكربت Docker وNginx وDokku في بضع دقائق.
أكمِل التهيئة وأضِف مفتاح SSH الخاص بك
أنهِ التثبيت بزيارة عنوان IP الخاص بخادم VPS في متصفح أو عبر واجهة سطر الأوامر. أضِف مفتاحك العام بـ dokku ssh-keys:add admin < ~/.ssh/id_rsa.pub وحدّد النطاق العام: dokku domains:set-global mydomain.com.
أنشئ تطبيقًا ومستودعه البعيد (Git remote)
على الخادم: dokku apps:create mon-app. على جهازك، أضِف المستودع البعيد: git remote add dokku [email protected]:mon-app. سينشئ Dokku تلقائيًا النطاق الفرعي mon-app.mydomain.com.
هيّئ قاعدة بيانات
ثبّت الإضافة: dokku plugin:install https://github.com/dokku/dokku-postgres.git. أنشئ قاعدة بيانات بـ dokku postgres:create ma-base ثم اربطها بالتطبيق: dokku postgres:link ma-base mon-app. يُحقَن المتغير DATABASE_URL تلقائيًا.
انشر وفعّل HTTPS
ادفع شفرتك بـ git push dokku main: يبني Dokku وينشر. ثم ثبّت إضافة Let's Encrypt ونفّذ dokku letsencrypt:enable mon-app للحصول على شهادة SSL تلقائية وتهيئة تجديدها.
فعّل التجديد التلقائي للشهادات بـ dokku letsencrypt:cron-job --add، وإلا فستنتهي صلاحية شهاداتك بعد 90 يومًا. من أجل عمليات نشر بلا انقطاع، هيّئ ملف CHECKS في جذر مشروعك: يتحقق Dokku من أن النسخة الجديدة تستجيب قبل تبديل حركة المرور، ما يضمن نشرًا بلا توقف (zero-downtime deploy). على خادم VPS بذاكرة RAM منخفضة، أضِف 2 غيغابايت من swap لتفادي أن يقتل النظام عمليات بناء buildpack (OOM killer).