Skip to content

Server Admin Panel

لوحة إدارة خادم RoqueOS المتصل، مدمجة في التطبيق (Launchpad ← Server Admin). يستبدل HTML القديم في <your-server>:27021/admin — يستمر في العمل كـ fallback (طوارئ، scripts)، لكن اللوحة الأصلية هي حيث يحدث كل شيء يوميًا.

الأقسام المتاحة دائمًا

القسمماذا يفعل
المراقبةCPU/RAM/قرص/Docker مباشر، أعلى الحاويات
API Keysإنشاء/إلغاء المفاتيح، عرض الأذونات، السجلات حسب المفتاح
سجل الاستخدامالسجلات حسب API Key (عدد الطلبات، IPs فريدة، النشاط)
Cloudflare Tunnelحالة tunnel، إنشاء/إزالة المسارات، قائمة النطاقات الفرعية
الشبكةLAN IP مكون، LANs أخرى محفوظة للوصول المباشر
الترجماتمزودي OpenSubtitles / Subdl لـ Video Player
الموارد والإصدارإصدار الخادم، التحديث متاح، الميزات النشطة

قسم Server Admin Monitor — CPU/RAM/Disk في الوقت الفعلي

أقسام multi-tenant (مُحَكَّمة بـ flag)

تظهر 5 أقسام إضافية فقط عندما يكون flag multiTenant نشطًا في Admin Panel ← Settings ← Cloud feature flags:

القسمماذا يفعل
المستخدمون والدعواتدعوة الأشخاص لاستخدام الخادم معك
أذونات التطبيقاتقوالب policy (مسموح / قياسي / مقيد)
استخدام المواردCPU/RAM/قرص/نطاق ترددي مجمع (متوافق مع LGPD)
التنبيهاتقواعد "تنبيه عند الاستخدام > X%" عبر email/Slack
سجل التدقيقمن فعل ماذا ومتى (metadata، لا محتوى أبدًا)

لماذا محكومة بـ flag

يتطلب multi-tenant schema جديد (Firestore + SQLite على الخادم) ليس plug-and-play في جميع الـ deploys بعد. الاحتفاظ به مفتوحًا افتراضيًا سيكشف UI دون backend جاهز. عندما يتم shipping وحدة members في roqueos-server، يصبح flag ON افتراضيًا.

كيفية التشغيل الآن (Admin Panel فقط — ليس لكل مستخدم):

  1. تسجيل دخول admin في /app
  2. Launchpad ← Admin Panel
  3. Settings ← قم بالتمرير إلى Cloud Product (الميزات المتقدمة)
  4. شغل Multi-tenant (members + أذونات + تنبيهات) ← Save
  5. ارجع إلى Server Admin Panel ← تظهر 5 عناصر جديدة في sidebar

المستخدمون والدعوات

حالة فارغة عند عدم دعوة أحد

  • زر "دعوة مستخدم" يفتح modal مع email + role (Owner/Admin/User)
  • يتم إرسال email عبر SMTP للخادم برابط القبول
  • بعد القبول، يدخل المستخدم في القائمة مع شارة الحالة (معلق/نشط/ملغى)
  • قائمة العمليات لكل سطر تسمح بـ إلغاء الوصول (يعود إلى قائمة الملغية، لا يحذف البيانات)

Roles:

  • Owner: أنت (1 لكل خادم)
  • Admin: يدير المستخدمين الآخرين و policies، يرى كل شيء
  • User: يستخدم التطبيقات وفقًا لـ policy النشطة

أذونات التطبيقات

قوالب مسموح / قياسي / مقيد

3 قوالب مُعَدَّة مسبقًا:

القالبمن يرى ماذا
مسموحجميع التطبيقات مفتوحة لجميع roles. فريق صغير موثوق.
قياسيAdmin يرى كل شيء. User يرى الإنتاجية، الوسائط، المرافق (ليس Server Admin).
مقيدUser يرى فقط Finder، Notes، Browser و Chat. كل شيء آخر مخفي.

تطبيق القالب مدمر — يعيد كتابة overrides لكل مستخدم الموجودة. لهذا السبب يوجد modal تأكيد إلزامي:

Confirm modal قبل تطبيق القالب

يسرد modal النتائج الـ 3 للإجراء:

  1. ✓ إعادة كتابة policies الخادم للقالب المحدد
  2. ⚠ حذف جميع overrides لكل مستخدم الموجودة (لا يمكن التراجع)
  3. ⟲ نسخة احتياطية من الحالة السابقة تبقى في /admin/policies/history لمدة 30 يومًا

يحتاج المستخدم للنقر تطبيق القالب (زر أحمر) للتأكيد. إلغاء هو الافتراضي.

استخدام الموارد

CPU/RAM/قرص/Bandwidth مع إخلاء مسؤولية LGPD

البطاقات التي تعرض الاستهلاك المجمع:

  • CPU: % استخدام المضيف المتوسط
  • ذاكرة RAM: GB مستخدمة / المجموع
  • القرص: GB مستخدمة / المجموع المخصص
  • النطاق الترددي الشهري: GB منقولة / حصة Hetzner (20 TB في الخطة القياسية)

النطاق الترددي ملون حسب threshold:

  • < 75%: تدرج أزرق (صحي)
  • 75-90%: تدرج برتقالي (انتباه)
  • 90%+: تدرج أحمر (حرج)

خصوصية LGPD (إخلاء مسؤولية أزرق في footer): نجمع فقط مقاييس مجمعة (% CPU، MB RAM). أبدًا محتوى ملفات أو جلسات أو محادثات المستخدمين.

التنبيهات

حالة فارغة مع banner LGPD إلزامي

LGPD banner في header (أزرق، مرئي دائمًا):

خصوصية LGPD — تراقب Alerts فقط المقاييس المجمعة (% CPU، MB RAM). أبدًا محتوى ملفات أو جلسات أو محادثات المستخدم.

أنشئ قاعدة:

  • Metric: CPU / RAM / قرص / Bandwidth
  • المشغل:
  • Threshold: number
  • القناة: email (افتراضي)، Slack/Discord webhook (مخطط)
  • الحالة: نشط / معطل (toggle في السطر)

عندما يطلق trigger، يتم إرسال alert عبر SMTP للخادم + يُسَجَّل في Audit Log.

سجل التدقيق

جدول الأحداث الإدارية

LGPD banner: السجل يسجل فقط metadata الإجراء (من، متى، النوع) — أبدًا المحتوى الذي تم التلاعب به.

الأحداث المسجلة:

  • member.invited (email + role)
  • member.revoked
  • policy.template_applied (أي قالب)
  • policy.override_changed (المستخدم X، التطبيق Y، before/after)
  • alert.triggered (القاعدة X، القيمة Y)
  • apikey.created / apikey.revoked
  • server.config.changed

الاحتفاظ: 400 يومًا (متماشية مع متطلبات Google Cloud Data Access Audit Log القياسية لـ LGPD).

العرض التوضيحي العام

تريد التجربة دون تثبيت أي شيء؟ https://demo.level-hard.com هو خادم العرض التوضيحي العام، يتم تحديثه من قبل المؤسس بـ cleanup-demo.sh (cron يومي). القيود:

  • غير admin: يمكنه استخدام التطبيقات لكنه لا يرى Server Admin (بوابة أمنية في windowManagement.js:88)
  • multi-tenant عمدًا OFF في العرض التوضيحي (يتجنب التلوث)
  • يتم تنظيف الحاويات + الملفات يوميًا

لاختبار multi-tenant تحتاج للتثبيت الخاص بك عبر install.sh وقلب flag.

مراجع متقاطعة

  • Add Server Wizard — كيفية توصيل الخادم المثبت حديثًا
  • Volumes والنسخ الاحتياطي — أين تعيش بيانات جداول multi-tenant
  • RoqueOS Cloud — النسخة المدارة التي تأتي بالفعل مع multi-tenant مفعّل
  • ذاكرة multi_user_roles_decision.md (داخلية) — منطق LGPD + البنية المعمارية