استكشاف الأخطاء والأسئلة المتكررة¶
المشاكل الشائعة¶
رفض الاتصال¶
العَرَض: العملاء لا يمكنهم الاتصال بالبروكسي.
تحقق من:
- هل العقدة متصلة؟ تحقق من صفحة العقد للحالة
- هل منفذ الاتصال الوارد مفتوح؟
ss -tlnp | grep <port> - هل الجدار الناري يسمح بالحركة؟
ufw statusأوiptables -L - هل النواة تعمل؟ تحقق من سجلات العقدة للأخطاء
- هل البروتوكول/النقل صحيح في إعداد العميل؟
Tip
شغّل vortexui doctor لفحص جميع المكونات دفعة واحدة.
أخطاء TLS¶
العَرَض: tls: handshake failure أو certificate verify failed
تحقق من:
- REALITY: هل نطاق الوجهة/SNI قابل للوصول من العقدة؟ جرّب
curl -I https://dest-domain - TLS: هل الشهادة صالحة؟ تحقق من الانتهاء بـ
openssl s_client -connect host:443 - CDN: هل وضع SSL في Cloudflare مضبوط على "Full (Strict)"؟
- العميل: هل حقل SNI يطابق إعداد الخادم؟
- التجزئة: إذا كنت تستخدم تجزئة TLS، جرّب تعطيلها مؤقتاً
انقطاع العقدة¶
العَرَض: العقدة تظهر "غير متصلة" في لوحة التحكم.
تحقق من:
- هل خادم العقدة يعمل؟ ادخل عبر SSH وتحقق:
systemctl status vortex-node - اتصال الشبكة:
ping <panel-ip>من العقدة - شهادات mTLS: تحقق من الانتهاء أو عدم التطابق
- الجدار الناري: هل منفذ gRPC (افتراضي 9090) مفتوح بين لوحة التحكم والعقدة؟
- تحقق من سجلات عميل العقدة:
journalctl -u vortex-node -n 50
اشتراك فارغ¶
العَرَض: العميل يستقبل اشتراكاً فارغاً (بدون إعدادات).
تحقق من:
- هل للمستخدم اتصالات واردة مُعيّنة؟ تحقق من تفاصيل المستخدم → الاتصالات الواردة
- هل الاتصالات المُعيّنة على عقد متصلة؟
- هل مضيفات الاشتراك مُعدّة بشكل صحيح (إذا كانت مستخدمة)؟
- هل توكن الاشتراك صالح (لم يُلغَ)؟
- تحقق من الاستجابة الخام:
curl https://panel.example.com/sub/<token>
استخدام عالي للمعالج على العقدة¶
العَرَض: معالج العقدة يبقى فوق 90%.
تحقق من:
- مستخدمون كثيرون جداً؟ تحقق من عدد الاتصالات النشطة
- هل الترحيل التلقائي مُعدّ؟ يجب أن ينقل المستخدمين بعيداً
- عملية النواة:
top -p $(pgrep xray)أوpgrep sing-box - فكّر في إضافة عقد أخرى وتفعيل موازنة الحمل
مشاكل اتصال قاعدة البيانات¶
العَرَض: لوحة التحكم تُرجع أخطاء 500، السجلات تُظهر أخطاء اتصال PostgreSQL.
تحقق من:
- هل PostgreSQL يعمل؟
systemctl status postgresql - سلسلة الاتصال صحيحة في
.env؟ - هل نفدت الاتصالات القصوى؟
SELECT count(*) FROM pg_stat_activity; - فكّر في إضافة pgBouncer لتجميع الاتصالات
نصائح التصحيح¶
vortexui doctor¶
تشغيل تشخيصات شاملة:
يفحص:
- ✅ اتصال PostgreSQL + إصدار المخطط
- ✅ اتصال Redis + زمن الاستجابة
- ✅ اتصال gRPC للعقد (لكل عقدة)
- ✅ صلاحية الشهادات
- ✅ توفر المنافذ
- ✅ تحليل DNS
- ✅ مساحة القرص
- ✅ وجود ملفات النواة التنفيذية وإصداراتها
نقطة نهاية الصحة¶
تُرجع حالة المكونات:
{
"status": "healthy",
"components": {
"database": "ok",
"redis": "ok",
"nodes": { "online": 3, "offline": 0 }
},
"version": "1.2.9"
}
تفعيل سجل التصحيح¶
ثم راقب السجلات:
Warning
سجل التصحيح مفصّل جداً. عطّله بعد استكشاف الأخطاء لتجنب امتلاء القرص.
اختبار الاشتراك يدوياً¶
# صيغة Base64
curl -s https://panel.example.com/sub/<token>
# صيغة Clash
curl -s "https://panel.example.com/sub/<token>?format=clash"
# مع اكتشاف User-Agent
curl -s -A "clash-meta" https://panel.example.com/sub/<token>
فحص سلامة العقدة عبر API¶
الأسئلة المتكررة¶
كيف أعيد تعيين كلمة مرور المسؤول؟¶
أو عبر القائمة التفاعلية:
كيف أرحّل من 3x-ui؟¶
- صدّر قاعدة بيانات 3x-ui (
x-ui.db) - في VortexUI: المستخدمون → استيراد → 3x-ui
- ارفع ملف قاعدة البيانات
- عيّن الاتصالات الواردة (VortexUI يعيّن المستخدمين للاتصالات المطابقة)
- راجع وأكّد
كيف أرحّل من Marzban؟¶
- في VortexUI: المستخدمون → استيراد → Marzban
- قدّم سلسلة اتصال قاعدة البيانات أو ملف التصدير
- المستخدمون، بيانات الحركة، وتواريخ الانتهاء تُحفظ
- تعيين الاتصالات الواردة يتم تلقائياً قدر الإمكان
هل يمكنني تشغيل لوحة التحكم والعقدة على نفس الخادم؟¶
نعم — استخدم ميزة العقدة المحلية. نواة البروكسي تعمل داخل العملية بجانب لوحة التحكم. لا حاجة لعميل.
كيف يعمل الاكتشاف التلقائي للاشتراك؟¶
لوحة التحكم تفحص ترويسة User-Agent للعميل:
- يحتوي "clash" → Clash YAML
- يحتوي "sing-box" → sing-box JSON
- يحتوي "outline" → روابط Outline
ss:// - غير ذلك → روابط مشفرة بـ base64
يمكن التجاوز بمعامل ?format=.
كيف أضيف نطاقاً لـ HTTPS؟¶
- وجّه سجل DNS A لنطاقك إلى IP خادمك
- عيّن
VORTEX_DOMAIN=your-domain.comفي.env - أعد تشغيل لوحة التحكم — Caddy يُصدر الشهادة تلقائياً
كيف أنسخ احتياطياً وأستعيد؟¶
نسخ احتياطي:
استعادة:
ما الفرق بين وضع الحصة المخصص والمستهلك؟¶
- مخصص (Allocated): الحصة تنقص عند تعيين حدود بيانات للمستخدمين (مجموع جميع حدود المستخدمين يُحسب)
- مستهلك (Consumed): الحصة تنقص فقط عند استهلاك المستخدمين للحركة فعلياً
استخدم المخصص للحزم المباعة مسبقاً. استخدم المستهلك للدفع حسب الاستخدام.
كيف أعدّ المدفوعات لكل موزّع؟¶
- أنشئ مسؤول موزّع بالدور المناسب
- الموزّع يسجّل الدخول → حساب الموزّع → إعداد الدفع
- يعيّن رقم بطاقته، عناوين العملات الرقمية، أو تاجر ZarinPal
- مستخدموه يرون خيارات الدفع هذه في المتجر
لماذا عقدتي تظهر "غير سليمة"؟¶
العقدة تفشل في فحوصات السلامة. الأسباب الشائعة:
- معالج عالي (>90%) أو ذاكرة (>90%)
- فقدان حزم >10%
- تعطّل عملية النواة (إعادة التشغيل التلقائي يجب أن تتعامل مع هذا)
- مشكلة في الشهادة
تحقق: العقد → العقدة → السلامة لأسباب الفشل المحددة.
كيف أستخدم Cloudflare مع VortexUI؟¶
- وجّه النطاق لخادمك عبر Cloudflare (السحابة البرتقالية)
- اضبط وضع SSL في Cloudflare على Full (Strict)
- استخدم نقل WebSocket (مطلوب لتوكيل Cloudflare)
- اعدد مضيفات الاشتراك لإعلان نطاق CDN
- المستخدمون يتصلون بـ Cloudflare → Cloudflare يوجّه لعقدتك
كيف أفعّل متجر الخدمة الذاتية؟¶
- أنشئ خططاً (الخطط → خطة جديدة)
- اعدد طرق الدفع (الإعدادات → إعداد الدفع)
- شارك رابط البوابة مع المستخدمين:
/portal/login - يمكن للمستخدمين أيضاً الوصول للمتجر عبر
/sub/{token}/shop
ماذا يحدث عندما ينفد رصيد الموزّع؟¶
- نفاد رصيد المستخدمين: لا يمكن إنشاء مستخدمين جدد
- نفاد رصيد الحركة: المستخدمون الحاليون يستمرون حتى يُقيّدوا فردياً (وضع الاستهلاك) أو لا يمكن تعيين بيانات أخرى (وضع التخصيص)
- التعليق التلقائي يمكن تكوينه لتعطيل الموزّع بالكامل