انتقل إلى المحتوى الرئيسي انتقل إلى الملاحة انتقل إلى التذييل

استكشاف الأخطاء وإصلاحها

حلول للمشاكل الشائعة مع SSH والإعداد والمستودعات والخدمات وDocker.

استكشاف الأخطاء وإصلاحها

المشاكل الشائعة وحلولها. عند الشك، ابدأ بتشغيل rdc doctor لإجراء فحص تشخيصي شامل.

فشل اتصال SSH

  • تحقق من إمكانية الاتصال يدوياً: ssh -i ~/.ssh/id_ed25519 deploy@203.0.113.50
  • شغّل rdc context scan-keys server-1 لتحديث مفاتيح المضيف
  • تأكد من تطابق منفذ SSH: --port 22
  • اختبر الاتصال: rdc machine test-connection --ip 203.0.113.50 --user deploy

عدم تطابق مفتاح المضيف

إذا تمت إعادة تثبيت الخادم أو تغيّرت مفاتيح SSH الخاصة به، سترى “host key verification failed”:

rdc context scan-keys server-1

يقوم هذا الأمر بجلب مفاتيح المضيف الجديدة وتحديث إعداداتك.

فشل إعداد الجهاز

  • تأكد من أن مستخدم SSH لديه صلاحيات sudo بدون كلمة مرور، أو قم بتكوين NOPASSWD للأوامر المطلوبة
  • تحقق من مساحة القرص المتوفرة على الخادم
  • شغّل مع --debug للحصول على مخرجات مفصّلة: rdc context setup-machine server-1 --debug

فشل إنشاء المستودع

  • تحقق من اكتمال الإعداد: يجب أن يكون مجلد مخزن البيانات موجوداً
  • تحقق من مساحة القرص على الخادم
  • تأكد من تثبيت ملف renet الثنائي (أعد تشغيل الإعداد إذا لزم الأمر)

فشل بدء تشغيل الخدمات

  • تحقق من صياغة Rediaccfile: يجب أن يكون Bash صالحاً
  • تأكد من أن ملفات docker compose تستخدم network_mode: host
  • تحقق من إمكانية الوصول إلى صور Docker (فكّر في تشغيل docker compose pull في prep())
  • تحقق من سجلات الحاوية باستخدام مقبس Docker الخاص بالمستودع:
rdc term server-1 my-app -c "docker logs <container-name>"

أو عرض جميع الحاويات:

rdc machine containers server-1

أخطاء رفض الصلاحيات

  • عمليات المستودع تتطلب صلاحيات root على الخادم (renet يعمل عبر sudo)
  • تحقق من أن مستخدم SSH الخاص بك في مجموعة sudo
  • تأكد من أن مجلد مخزن البيانات لديه الصلاحيات الصحيحة

مشاكل مقبس Docker

كل مستودع لديه Docker daemon خاص به. عند تشغيل أوامر Docker يدوياً، يجب تحديد المقبس الصحيح:

# باستخدام rdc term (مُعدّ تلقائياً):
rdc term server-1 my-app -c "docker ps"

# أو يدوياً مع المقبس:
docker -H unix:///var/run/rediacc/docker-2816.sock ps

استبدل 2816 بمعرّف الشبكة الخاص بمستودعك (يوجد في config.json أو rdc repo status).

إنشاء الحاويات على Docker Daemon خاطئ

إذا ظهرت حاوياتك على Docker daemon الخاص بالنظام المضيف بدلاً من daemon المستودع المعزول، فالسبب الأكثر شيوعاً هو استخدام sudo docker داخل Rediaccfile.

يقوم sudo بإعادة تعيين متغيرات البيئة، لذلك يُفقد DOCKER_HOST ويعود Docker إلى مقبس النظام (/var/run/docker.sock). يحظر Rediacc هذا تلقائياً، ولكن إذا واجهته:

  • استخدم docker مباشرة — وظائف Rediaccfile تعمل بالفعل بصلاحيات كافية
  • إذا كنت مضطراً لاستخدام sudo، استخدم sudo -E docker للحفاظ على متغيرات البيئة
  • تحقق من Rediaccfile الخاص بك بحثاً عن أي أوامر sudo docker وأزل sudo

الطرفية لا تعمل

إذا فشل rdc term في فتح نافذة الطرفية:

  • استخدم الوضع المضمّن مع -c لتشغيل الأوامر مباشرة:
    rdc term server-1 -c "ls -la"
  • أجبر الطرفية الخارجية باستخدام --external إذا كان الوضع المضمّن يواجه مشاكل
  • على Linux، تأكد من تثبيت gnome-terminal أو xterm أو محاكي طرفية آخر

تشغيل التشخيصات

rdc doctor

يتحقق هذا الأمر من بيئتك وتثبيت renet وإعدادات السياق وحالة المصادقة. يُبلِغ كل فحص بحالة OK أو Warning أو Error مع شرح مختصر.