TZX MESH
Sign in

الموافقة على الأجهزة (Warden)

عند تفعيل الموافقة على الأجهزة، لا يصبح الجهاز الذي يسجّل نفسه على شبكتك بعد. ينتظر في صندوق Warden، والقرار قرارك.

التفعيل

Settings → Authentication → Peer Approval (الإعدادات ← المصادقة ← الموافقة على النظائر). يُسجَّل التغيير في سجل النشاط. ولا تتأثر الأجهزة الموجودة على الشبكة أصلًا؛ أما كل جهاز يسجّل نفسه من الآن فصاعدًا فينتظر.

أشخاص تثق بهم أصلًا

مع تفعيل Trust signed-in users (الثقة بالمستخدمين الذين سجّلوا الدخول) من Settings → Authentication، يُعتمد في الحال كل جهاز يسجّله شخص سجّل دخوله، ويسجّل سجل النشاط عبارة peer auto-approved: enrolled by a trusted signed-in user. أما الأجهزة المسجَّلة بمفتاح إعداد فتظل تنتظر. استخدم هذا الخيار عندما يكون موفّر الهوية لديك هو البوابة التي تثق بها، ويبقى Warden للخوادم والمتعاقدين والأجهزة المجهولة. وعبر الـ API يكون الإعداد settings.extra.peer_approval_trust_users.

مفاتيح تتجاوز صندوق Warden

مفتاح الإعداد المُنشأ بخيار Skip device approval يعتمد أجهزته فورًا؛ وما عداها يبقى قيد الانتظار. ويُسجَّل كل تجاوز في السجل بعبارة peer auto-approved by setup key. راجع مفاتيح الإعداد.

ماذا يستطيع الجهاز قيد الانتظار أن يفعل

لا شيء على الشبكة الشبكية (mesh). تحجب عنه وحدة التحكم خريطة الشبكة: فلا يستقبل نظائر ولا مسارات ولا DNS، ولا تعلم النظائر المعتمدة بوجوده هي الأخرى. هو مُسجَّل، وله عنوان، ومعزول في الاتجاهين. وتفرض وحدة التحكم هذا العزل، لا العميل، فلا يجني العميل المعدَّل شيئًا.

صندوق Warden

يعرض Warden في الشريط الجانبي كل جهاز قيد الانتظار مع عنوانه على الشبكة، ونظام تشغيله، وطريقة تسجيله (مفتاح إعداد أو مستخدم)، ووقت آخر ظهور له.

المفتاحالإجراء
j / kالتنقل لأسفل / لأعلى (ومفاتيح الأسهم تعمل أيضًا)
aاعتماد الجهاز المحدَّد
xرفض: يحذف الجهاز، ويستطيع الجهاز تسجيل نفسه من جديد فيعود إلى الصندوق
Enterفتح تفاصيل الجهاز

يعتمد Approve all (اعتماد الكل) كل جهاز قيد الانتظار، بحدث تدقيق مستقل لكل جهاز. وتتوفر الإجراءات نفسها في صفحة Peers ضمن قائمة كل صف، ويعرض مرشّح Pending Approvals عددها.

التنبيه عند وجود جهاز قيد الانتظار

من Settings → Authentication، ومع تفعيل Peer Approval، أضف المسؤولين الذين يجب إبلاغهم بطلبات الانضمام الجديدة:

القناةما الذي يصل
البريد الإلكتروني (حتى 10 عناوين)رسالة نصية بسيطة تحمل اسم الجهاز ونظامه وعنوانه على الشبكة، ومن سجّله ومتى، مع رابط يفتح الجهاز في Warden. وفتح الرابط لا يعتمد شيئًا؛ تسجّل الدخول ثم تضغط Approve.
Webhook (نقطة نهاية https واحدة)طلب POST بصيغة JSON يحمل الحدث device.pending، وحقول الجهاز نفسها ورابط Warden؛ وتحمل الترويسة X-TZX-Signature توقيع HMAC-SHA256 لمحتوى الطلب متى كان لدى الخادم مفتاح webhook سري. وجّهه إلى Slack أو Teams أو Zapier أو نظام تذاكر.

يحتاج البريد الإلكتروني إلى مُرحِّل البريد في وحدة التحكم: اضبط TZX_SMTP_HOST وTZX_SMTP_PORT وTZX_SMTP_USER وTZX_SMTP_PASSWORD وTZX_SMTP_FROMTZX_SMTP_TLS=starttls|implicit) في /opt/tzxmesh/app/.env، ثم أعد تشغيل الخادم. وأي مُرحِّل يفي بالغرض: Resend أو Postmark أو Amazon SES أو Google Workspace. أما webhooks فلا تحتاج إلى شيء إضافي؛ اضبط TZX_WEBHOOK_SECRET ليجري توقيعها. وتُرفَض الوجهات الخاصة وعناوين loopback، ولا يغادر الحساب الواحد أكثر من 20 إشعارًا في الدقيقة، حتى لا يغرقك تسجيل جماعي للأجهزة.

{
  "event": "device.pending",
  "sent_at": "2026-09-04T03:10:00Z",
  "device": {"account_id": "...", "id": "...", "name": "laptop-a", "hostname": "laptop-a",
             "os": "linux", "ip": "100.64.0.9", "enrolled_by": "setup key sales-request",
             "pending_since": "2026-09-04T03:09:58Z"},
  "console_url": "https://mesh.example.com/warden?peer=..."
}

الأجهزة المهملة

لا ينبغي أن تتكدّس الأجهزة التي لا يعتمدها أحد. من Settings → Authentication، اضبط Remove waiting devices after (حذف الأجهزة قيد الانتظار بعد) على عدد من الساعات؛ فالجهاز الذي يبقى في Warden أطول من ذلك يُحذف تلقائيًا، ويسجّل سجل النشاط عبارة pending peer removed after the approval time limit. واترك الحقل فارغًا لإبقاء الأجهزة حتى تقرر. وإلغاء اعتماد جهاز يعيد تشغيل مهلته الزمنية. وعبر الـ API يكون الإعداد settings.extra.peer_approval_pending_ttl (بالساعات، و0 = بلا مهلة).

إلغاء الاعتماد لاحقًا

من قائمة صف النظير اختر Revoke approval (إلغاء الاعتماد). يخرج الجهاز من الشبكة خلال دورة مزامنة واحدة ويعود إلى الصندوق. استخدم ذلك مع حاسوب محمول مفقود أو جهاز لم تعد تثق به، واستخدم Delete لحذفه نهائيًا.

سجل التدقيق

كل خطوة حدث في Activity (النشاط): تفعيل الموافقة على الأجهزة أو تعطيلها، وإضافة جهاز، واعتماد جهاز، وإلغاء اعتماد، مع بيان من نفّذ الإجراء ومتى.

الأتمتة

كل ما يفعله Warden متاح عبر الـ API، فيمكن كتابة سكربتات للموافقة على الأجهزة أو ربطها بمسار تذاكر:

curl -X PUT https://mesh.example.com/api/peers/<peer-id> \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"name":"...","ssh_enabled":false,"login_expiration_enabled":true,"inactivity_expiration_enabled":false,"approval_required":false}'

عدة أجهزة دفعة واحدة، بحدث تدقيق مستقل لكل جهاز:

curl -X POST https://mesh.example.com/api/peers/approvals \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"peer_ids":["<id-1>","<id-2>"],"approve":true}'
# → {"updated":["<id-1>","<id-2>"],"failed":[]}

وتُنشأ رموز الوصول الشخصية من قائمة المستخدم الخاصة بك.

الموافقة تكون لكل جهاز لا لكل شخص. فالمستخدم الذي يسجّل الدخول من حاسوب محمول ثانٍ يضع ذلك الحاسوب في الصندوق.