لماذا لم يعد Oracle Always Free أساسًا موثوقًا
قلّصت Oracle عرض Always Free ARM: لم تعد وثائقها تمنح سوى 1500 ساعة OCPU و9000 غيغابايت-ساعة من الذاكرة شهريًا، أي 2 vCPU و12 غيغابايت، مقابل 4 vCPU و24 غيغابايت سابقًا. علاوة على ذلك، ظلّ العرض المجاني من Oracle يحمل دائمًا مخاطر هيكلية يعرفها مستخدموه جيدًا: إعادة تشغيل غير مخطط لها للنسخ، وانقطاعات خلال فترات صيانة المناطق، وغياب أي اتفاقية مستوى خدمة على الموارد المخصصة. وتستطيع Oracle أيضًا استرداد النسخ المجانية التي تعدّها خاملة: أقل من 20 % من استخدام المعالج (المئين 95) والشبكة، والذاكرة في نسخ ARM، طوال سبعة أيام. بالنسبة لخدمة إنتاجية — سواء كانت لوحة n8n أو نسخة Nextcloud مشتركة عائليًا أو لوحة Coolify تدير عمليات نشرك — يمثّل هذا الغموض خطرًا تشغيليًا حقيقيًا. يقدّم VPS المدفوع شهريًا رسومًا ثابتة قابلة للتوقع وعنوان IPv4 مخصصًا ووصولًا كاملًا كـ root وموارد غير قابلة لإعادة التوزيع على مستأجر آخر. التكلفة ليست صفرًا، لكنّها معروفة مسبقًا ولا تعتمد على سياسة يمكن للمورد تغييرها من جانب واحد.
ما يقدّمه VPS المدفوع مقارنةً بالمستوى المجاني
- موارد مخصّصة — vCPU وذاكرة رام مخصّصة لنسختك بموجب العقد، لا يستردها المزوّد لمجرد أنها قليلة الاستخدام.
- عنوان IPv4 مخصص — عنوان عام ثابت دون NAT مشترك، ضروري لسجلات DNS مستقرة وخطافات الويب الواردة.
- وصول root كامل — تثبّت وتضبط ما تشاء دون قائمة بيضاء للمنافذ أو قيود على البروتوكولات.
- نطاق ترددي قابل للتوقع — حجم شهري محدد بوضوح، دون فواتير مفاجئة لكل غيغابايت تتجاوز حدًا مخفيًا.
- الدعم — في حال عطل عتادي، تتدخّل الشركة المزوّدة لإعادة الخدمة، في إطار التزام ببذل عناية.
- تكلفة ثابتة — ابتداءً من 99 درهم/شهر في الصيغة الشهرية، الميزانية معروفة مسبقًا ولا تتغيّر بحسب الاستخدام الفعلي.
- بدون التزام طويل الأمد — لا توقيع على عقد سنوي: يمكن إلغاء عروض VPS السحابي في أي وقت.
التطبيقات المتأثرة بالتقليص
مع 2 vCPU و12 غيغابايت، قد تبدو الحدود الجديدة لـ Oracle مريحة على الورق. في الواقع، أكثر التطبيقات المستضافة ذاتيًا شيوعًا لها متطلبات دنيا تتراكم فور دمج عدة تطبيقات. يتطلّب Coolify على الأقل 2 vCPU و2 غيغابايت لعمليات البناء والنشر الخاصة به. تقول n8n إنها لا تستهلك المعالج كثيرًا، لكن ذاكرتها تزداد مع حجم البيانات المعالجة: تذكر وثائقها، على سبيل المثال، من 320 ميغابايت إلى 2 غيغابايت. يحتاج Nextcloud إلى 128 ميغابايت من الذاكرة على الأقل لكل عملية ويوصي بـ 512 ميغابايت، لكن عمليات مزامنة الملفات جائعة للمعالج والإدخال/الإخراج مع ازدياد العملاء النشطين. أما Immich مدير الصور فيشترط 6 غيغابايت على الأقل ويوصي بـ 8، ويعود ذلك في جزء كبير منه إلى خط أنابيب التعلّم الآلي للتعرف على الصور — دون ذلك يتوقف عمال الذكاء الاصطناعي أو ينهار صامتًا. إذا شغّلت اثنين أو ثلاثة من هذه الخدمات على نسخة Oracle نفسها، تضيق الهامش، وأي ذروة استخدام تتسبب في إيقاف بسبب نقص الذاكرة.
المتطلبات الأساسية قبل الهجرة
تُعدّ الهجرة الناجحة قبل الاقتراب من إعدادات DNS أو إيقاف أي شيء. ابدأ بإعداد قائمة دقيقة بالخدمات التي تعمل على نسخة Oracle: اسم الخدمة، منفذ الاستماع، مجلد Docker المرتبط، النطاق أو النطاق الفرعي المستخدم. التقط لقطة كاملة للنسخة عبر وحدة تحكّم Oracle Cloud — هذه شبكة الأمان في حالة وقوع مشكلة غير متوقعة. صدّر أيضًا جميع مجلدات Docker إلى أرشيفات tar قابلة للنقل بصورة مستقلة. قلّص TTL لسجلات A إلى 300 ثانية قبل 24 ساعة على الأقل من الهجرة. حدّد مهام cron والخطافات الواردة والخدمات الخارجية التي تستخدم عنوان IP Oracle الحالي. تحقّق أخيرًا من أن شهادات TLS تُدار عبر Let's Encrypt مع التجديد التلقائي.
تصدير حزمة Docker وإعادة إنشائها
استعراض الحاويات والمجلدات النشطة
على نسخة Oracle، اعرض جميع الحاويات:
docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Mounts}}'. واعرض المجلدات:docker volume ls. دوّن الارتباطات بين أسماء الحاويات والمجلدات.نسخ احتياطي لكل مجلد في أرشيف tar
لكل مجلد مهم مثل
n8n_dataأوnextcloud_data، صدّر باستخدام:docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_data.tar.gz -C /data .. كرّر لكل مجلد.حفظ الصور المخصصة
إذا كانت لديك صور مبنية محليًا، صدّرها:
docker save image-name:tag | gzip > image-name.tar.gz. للصور العامة مثل n8n وNextcloud وImmich، قائمة بالأسماء تكفي.نقل الأرشيفات إلى VPS الجديد
من جهازك المحلي أو مباشرة بين الخادمين:
rsync -avz --progress *.tar.gz root@vps-ip:/opt/restore/. تحقّق من مجاميع التدقيق:sha256sum *.tar.gz > checksums.txt.تثبيت Docker على VPS الجديد
على VPS عبر SSH:
curl -fsSL https://get.docker.com | sh && systemctl enable --now docker. تحقّق:docker compose version. أنشئ بنية المجلدات:mkdir -p /opt/{coolify,n8n,nextcloud,immich}.استعادة مجلدات Docker
لكل مجلد محفوظ:
docker volume create n8n_data && docker run --rm -v n8n_data:/data -v /opt/restore:/backup alpine tar xzf /backup/n8n_data.tar.gz -C /data. تحقّق من المحتوى:docker run --rm -v n8n_data:/data alpine ls -la /data.إعادة إنشاء ملفات docker-compose.yml
انسخ ملفات
docker-compose.ymlمن Oracle أو استرجعها من مستودع Git. شغّل كل حزمة بـdocker compose up -dوتحقّق من السجلات:docker compose logs -f --tail=50.التحقّق من الاشتغال قبل تحويل DNS
اختبر كل خدمة عبر عنوان IP للـ VPS مباشرة بإضافة إدخال مؤقت في
/etc/hostsعلى جهازك:curl -H 'Host: n8n.your-domain.com' http://vps-ip/healthz. تأكّد من وجود البيانات قبل تعديل DNS.
إعادة نشر Coolify على VPS الجديد
تثبيت Coolify
على VPS الجديد عبر SSH:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash. انتظر اكتمال التثبيت (نحو 2-3 دقائق)، ثم افتحhttp://vps-ip:8000.إنشاء حساب المدير
عند الفتح الأول، يطلب Coolify إنشاء حساب مدير بالبريد الإلكتروني وكلمة المرور. هذا الحساب محلي ولا يعتمد على نسختك القديمة. أنشئه فور انتهاء التثبيت، كما توصي وثائق Coolify: فحتى ذلك الحين تكون لوحة التحكم متاحة لكل من يصل إلى المنفذ 8000. استخدم كلمة مرور قوية.
إعداد النطاق والشهادات
في إعدادات Coolify (Settings → Instance)، أدخل نطاق Coolify مثل
coolify.your-domain.comوفعّل إنشاء شهادات Let's Encrypt تلقائيًا. يدير Coolify وكيل Traefik داخليًا.إعادة ربط مصادر Git
في Sources، أعد ربط حساب GitHub أو GitLab أو Gitea. إذا استخدمت GitHub Apps أو مفاتيح النشر على النسخة القديمة، أعد إنشاءها.
استيراد المشاريع والخدمات
أعد إنشاء المشاريع وأضف الخدمات الموجودة. للقواعد البيانات، أعد إنشاءها في Coolify واستعد النسخ الاحتياطية:
docker exec -i <postgres_container> psql -U user db < dump.sql.مراجعة متغيرات البيئة
يحتاج كل خدمة منقولة إلى متغيرات بيئتها. في Coolify، افتح كل خدمة → Environment Variables وقارن مع ملفات
.envالمصدّرة من Oracle.
نقاط الانتباه بعد الهجرة
بعد تشغيل الخدمات على VPS، يأتي تحويل DNS. عدّل سجلات A لكل نطاق فرعي لتشير إلى عنوان IP الجديد. بفضل TTL المخفَّض إلى 300 ثانية مسبقًا، يتم الانتشار عادةً في أقل من عشر دقائق. راقب سجلات Traefik أو Caddy خلال الساعات الأولى للكشف عن أي طلبات لا تزال تصل إلى IP Oracle القديم. يجب إعادة توليد شهادات Let's Encrypt على IP الجديد. مهام cron الداخلية لـ n8n أو Nextcloud تبقى بعد الهجرة، لكن مهام cron النظامية لنسخة Oracle يجب إعادة إنشاءها يدويًا على VPS. أخيرًا، أخبر الخدمات الخارجية التي استخدمت IP Oracle القديم في قوائم IP المسموح بها.
أعدّ نسخًا احتياطية تلقائية لمجلدات Docker منذ اليوم الأول على VPS الجديد. سكريبت cron يومي يصدّر كل مجلد حيوي إلى تخزين كائنات (Backblaze B2 أو ما يتوافق مع S3) يحميك من أعطال القرص والحذف العرضي. على نسخة ServOrbit، يُثبَّت restic أو borgbackup في دقائق ويوفّران نسخًا احتياطية تدريجية مشفّرة مع احتفاظ قابل للتخصيص.
استكشاف الأخطاء الشائعة
خلال هجرة Docker، تظهر أخطاء متكررة. الأول هو مشكلة الأذونات على المجلدات المستعادة: إذا بدأت الحاوية بـ UID مختلف عمّا أنشأ الملفات على Oracle، ستظهر أخطاء permission denied. أصلحها بـ docker run --rm -v volume:/data alpine chown -R uid:gid /data. الخطأ الثاني هو حاوية تبدأ ثم تتوقف بكود الخروج 137: هذا قتل بسبب نقص الذاكرة. تحقّق بـ dmesg | grep -i oom. يخصّ الخطأ الثالث Let's Encrypt: إذا لم تُولَّد الشهادة، تأكّد من فتح المنفذ 80 وأن DNS يشير إلى IP الجديد بـ dig +short your-domain.com. أخيرًا، إذا أظهر Coolify الخدمات كـ offline رغم تشغيل حاويات Docker، تحقّق بـ docker network inspect coolify.
Oracle Always Free ARM مقابل VPS المدفوع: مقارنة
مرّر الجدول أفقيًا
| Oracle Always Free ARM (الحدود الحالية) | ServOrbit Cloud VPS | |
|---|---|---|
| vCPU | 2 (مشتركة، قابلة للاسترداد) | مخصّصة لـ VPS الخاص بك، لا تُسترد |
| الذاكرة | 12 غيغابايت (مخفّضة من 24) | ابتداءً من 4 GB، قابلة للتوسيع بخيار إضافي |
| IPv4 | عنوان عام واحد (قابل لإعادة التخصيص) | عنوان IPv4 ثابت مخصص مُدرَج |
| النطاق الترددي | 10 تيرابايت/شهر صادر | مُدرَج في الباقة |
| وصول root | نعم (المنفذ 25 الصادر محظور افتراضيًا) | وصول root كامل، بدون قيود |
| SLA | لا يوجد على المستوى المجاني | هدف توافر، مع التزام ببذل عناية (الشروط العامة للبيع) |
| إعادة تشغيل غير مخطط | نعم (صيانة Oracle، استرداد النسخ الخاملة) | لا استرداد للنسخ الخاملة |
| التكلفة الشهرية | 0 يورو (مع خطر القطع أو الفوترة عند التجاوز) | ابتداءً من 99 درهم/شهر (الصيغة الشهرية)، سعر ثابت |