تخطَّ إلى المحتوى
ططارق الوليديAI Developer Tools Directory
n

ntfy

نشط ومستقريعمل محلياً ✓بدون اشتراك API

أرسل تنبيهات من أي سكربت إلى الهاتف أو المتصفح بطلب HTTP واحد، عبر خدمة مستضافة أو خادم ntfy خاص.

$docker run -p 80:80 -it binwiederhier/ntfy serve
💡

الاستخدام المثالي لهذه الأداة

يناسب مطورًا منفردًا أو فريقًا صغيرًا يريد تنبيهات لنتائج النسخ الاحتياطي والنشر والمهام المجدولة دون بناء تطبيق إشعارات. يبدأ بطلب HTTP واحد، ويمكن تشغيله ذاتيًا مع مستخدمين وACL. لا يناسب وحده إدارة الحوادث المعقدة أو حفظ السجلات.

التفاصيل والميزات المصورة

عندما ينتهي النسخ الاحتياطي، يفشل نشر، أو يتوقف سكربت ليلي، قد لا تعرف إلا بعد فتح السجل يدويًا. ntfy يحوّل أي طلب HTTP بسيط إلى إشعار يصل إلى هاتفك أو متصفحك أو عميل الطرفية. تستطيع البدء بخدمة ntfy.sh دون إنشاء حساب، أو تشغيل خادمك عندما تحتاج تحكمًا أكبر في البيانات والوصول. قيمته العملية أنه يضيف قناة تنبيه إلى السكربتات والأتمتة من دون بناء تطبيق جوال أو ربط مزود رسائل معقد.

🧭 ما أداة ntfy؟

ntfy ـ وتُنطق notify ـ خدمة إشعارات تعتمد نموذج النشر والاشتراك عبر HTTP. ينشر السكربت رسالة إلى موضوع (Topic)، ثم تستقبلها الأجهزة أو التطبيقات المشتركة في ذلك الموضوع. لا يحتاج المرسل إلى مكتبة خاصة؛ يكفي curl أو أي عميل يرسل PUT أو POST.

لديك مساران:

  • الخدمة المستضافة ntfy.sh: الأسرع للتجربة، ولا تحتاج تثبيت خادم.
  • الاستضافة الذاتية: تشغّل خادم ntfy بنفسك، وتضبط المستخدمين وقوائم الوصول والتخزين والحدود.

ntfy لا يراقب الخادم ولا ينفذ النسخ الاحتياطي بنفسه. هو قناة توصيل تستقبل الحدث من Gatus أو Cron أو GitHub Actions أو سكربت خاص، ثم توصله إلى المشتركين.

رسم يوضح انتقال حدث من سكربت عبر موضوع ntfy إلى الهاتف والمتصفح والطرفية
رسم يوضح انتقال حدث من سكربت عبر موضوع ntfy إلى الهاتف والمتصفح والطرفية

رسم توضيحي أصلي لمسار العمل؛ ليس لقطة من واجهة المنتج.

🎯 كيف ستفيدك؟

تناسب ntfy مطورًا منفردًا أو فريقًا صغيرًا يحتاج تنبيهات تشغيلية بلا منصة حوادث ثقيلة. مثال عملي: بعد اكتمال نسخة قاعدة بيانات NASQ، يرسل السكربت «اكتمل النسخ الاحتياطي» إلى موضوع مخصص. وإذا فشل الأمر يرسل رسالة بأولوية أعلى ورابط إلى لوحة الخادم. تشترك أنت أو أعضاء الفريق من تطبيق الهاتف أو الويب، فيعرف من يلزم أن النتيجة حدثت بدل الرجوع المستمر إلى السجل.

القيمة المضافة هي فصل مصدر الحدث عن طريقة استلامه. السكربت يعرف عنوان HTTP واحدًا فقط، بينما تستطيع تغيير الأجهزة المشتركة أو إضافة متصفح أو عميل CLI دون إعادة كتابة منطق السكربت. لكنها ليست بديلًا عن سجل تدقيق أو نظام تذاكر؛ إذا كانت الاستجابة للحادث تحتاج تصعيدًا ومناوبات واتفاقيات SLA فستحتاج مسارًا مكملًا.

🌟 الميزات والقدرات الرئيسية

1. إرسال إشعار بطلب HTTP واحد

أبسط استخدام لا يحتاج تثبيت CLI أو SDK. اختر اسم موضوع ثم أرسل جسم الرسالة إليه:

curl -d "Backup successful" https://ntfy.sh/mytopic

تعرض الوثائق أمثلة مكافئة لـJavaScript وPython وPowerShell وPHP وGo، كما يدعم برنامج ntfy نفسه أمري publish وsubscribe. هذا يجعل الأداة مناسبة لسكربت shell أو مهمة مجدولة أو خطوة CI أو تطبيق موجود.

  • أين تستخدمها: في نهاية المهمة التي تريد معرفة نتيجتها.
  • كيف تستخدمها: أرسل إلى عنوان الموضوع نفسه الذي اشتركت فيه من جهازك.
  • الفائدة: لا تحتاج بناء endpoint خاص للإشعارات أو تطبيق هاتف.
  • انتبه: نجاح طلب HTTP يعني أن خادم ntfy قبل الرسالة؛ لا يثبت وحده أن كل جهاز عرض الإشعار.
مثال توضيحي لطلب curl واحد يتحول إلى إشعار نجاح أو فشل
مثال توضيحي لطلب curl واحد يتحول إلى إشعار نجاح أو فشل

رسم توضيحي للأمر والنتيجة المتوقعة، ولم يُنفذ على خادم إنتاج.

2. الاشتراك من الهاتف والويب والطرفية

يمكن استقبال المواضيع من تطبيق Android أو iOS، ومن تطبيق الويب القابل للتثبيت PWA، أو عبر CLI وواجهات الاشتراك البرمجية. تستطيع أكثر من جهة الاشتراك في الموضوع نفسه، فيصبح الموضوع قناة صغيرة لفريق أو لخدمة محددة.

يعمل تطبيق الويب كواجهة ثابتة فوق API. لا يوجد تطبيق سطح مكتب أصلي؛ يستخدم سطح المكتب PWA أو المتصفح. في الاستضافة الذاتية يحتاج Web Push إلى إعداد إضافي، وليس مجرد تشغيل الحاوية.

  • مثال توضيحي: موضوع nasq-backups يستقبل من خادم النسخ، ويشترك فيه هاتف المالك ومتصفح مسؤول التشغيل.
  • القيد: اسم الموضوع على ntfy.sh ليس مساحة خاصة تلقائيًا. تعامل معه كعنوان عام يمكن تخمينه، ولا ترسل بيانات حساسة إلى موضوع عام.

3. رسائل غنية وأزرار إجراءات وجدولة

يمكن للرسالة أن تحمل عنوانًا وأولوية ووسومًا تتحول إلى رموز، وMarkdown، ورابط فتح، ومرفقًا، ووقت تسليم مؤجل. كما تدعم حتى ثلاثة أزرار إجراءات: فتح رابط، نسخ قيمة، إرسال بث Android، أو تنفيذ طلب HTTP عند الضغط.

هذه الإضافات تحول التنبيه من نص مبهم إلى خطوة قابلة للتصرف. فبدل «فشل النشر» فقط، تستطيع إضافة عنوان المشروع وأولوية مرتفعة وزر «افتح السجل». أما زر HTTP فقد يغيّر نظامًا عند الضغط، لذا لا تربطه بإجراء خطير أو سر طويل العمر دون مصادقة وضوابط مستقلة.

مكونات رسالة ntfy من العنوان والأولوية والوسوم إلى الرابط والإجراء والجدولة
مكونات رسالة ntfy من العنوان والأولوية والوسوم إلى الرابط والإجراء والجدولة

رسم توضيحي للحقول الموثقة؛ لا يمثل شاشة فعلية بعينها.

4. خيار مستضاف أو خادم خاص مع تحكم وصول

الخدمة العامة مناسبة للتجربة والتنبيهات غير الحساسة. للاستعمال الخاص يمكنك تشغيل خادم ntfy وتفعيل المستخدمين وكلمات المرور ورموز الوصول وقائمة ACL تمنح القراءة والكتابة لكل موضوع. إعداد الخادم الافتراضي مفتوح؛ لإنشاء مثيل خاص يجب ضبط auth-default-access: deny-all ثم منح الصلاحيات المطلوبة صراحة.

يدعم ntfy مستخدمًا عاديًا أو مديرًا، وصلاحيات read-write وread-only وwrite-only وdeny. رموز الوصول أسهل للسكربتات من تخزين كلمة المرور، لكنها وفق الوثائق الحالية تمنح صلاحيات حساب المستخدم كاملة تقريبًا وليست رموزًا دقيقة النطاق لكل إجراء.

مقارنة بين موضوع عام في ntfy.sh وخادم خاص يستخدم HTTPS ورمز وصول وACL
مقارنة بين موضوع عام في ntfy.sh وخادم خاص يستخدم HTTPS ورمز وصول وACL

رسم توضيحي لحدود الوصول؛ لا يعني أن الاستضافة الذاتية آمنة دون ضبط وتحديث.

🪜 مثال عملي خطوة بخطوة

مثال توضيحي لم أنفذه على مشروعك: أرسل نتيجة نسخة قاعدة بيانات إلى هاتفك.

  1. افتح تطبيق ntfy أو واجهة الويب واشترك في موضوع طويل وعشوائي مثل nasq-backup-<random>.
  2. اختبر رسالة غير حساسة:
curl -fsS \
  -H "Title: NASQ backup" \
  -H "Tags: white_check_mark" \
  -d "Backup completed" \
  https://ntfy.sh/nasq-backup-<random>
  1. بعد التأكد من وصولها، ضع الاستدعاء بعد أمر النسخ. افحص رمز خروج النسخ وأرسل رسالة نجاح أو فشل بدل إرسال «تم» في كل الحالات.
  2. استخدم عنوانًا ووسمًا وأولوية ثابتة يمكن فهمها بسرعة، ولا تضع نسخة قاعدة البيانات أو أسرارها داخل الرسالة.
  3. إذا أصبحت الرسالة حساسة أو احتجت أعضاء متعددين بصلاحيات واضحة، انتقل إلى موضوع محجوز في الخطة المناسبة أو شغّل مثيلًا خاصًا مع HTTPS وdeny-all ورمز وصول.
  4. اختبر الفشل عمدًا في بيئة آمنة، ثم راقب السجل والحدود حتى لا يتحول التنبيه إلى ضجيج.

⚖️ ماذا تضيف مقارنة بالطريقة اليدوية؟

الطريقة اليدويةباستخدام ntfy
تفتح سجل المهمة لمعرفة النتيجةترسل المهمة النتيجة عند اكتمالها
كل سكربت يحتاج قناة مختلفة أو كودًا خاصًاجميعها تستطيع استخدام HTTP أو CLI نفسه
تغيير الهاتف أو إضافة عضو يتطلب تعديل السكربتالمشترك يتغير ويبقى عنوان النشر ثابتًا
الرسالة نص عام بلا سياقعنوان وأولوية ووسوم ورابط وإجراءات اختيارية
حماية القناة تُبنى من الصفرالاستضافة الذاتية توفر مستخدمين وACL ورموز وصول

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

⚙️ الإعدادات المهمة

  • اسم الموضوع: لا تستخدم اسمًا قصيرًا أو متوقعًا على الخادم العام، ولا تعدّه كلمة مرور.
  • العنوان والأولوية والوسوم: اجعلها ثابتة حسب نوع الحدث حتى يمكن فرز التنبيهات بصريًا.
  • Cache: تخزن الخدمة العامة محتوى الرسالة مؤقتًا افتراضيًا لمدة 12 ساعة لتجاوز انقطاع العميل، وفق سياسة الخصوصية الحالية.
  • المرفقات: على ntfy.sh حد المرفق الموثق 2MB، وتحذف المرفقات افتراضيًا بعد 3 ساعات. راجع الحدود قبل إرسال ملفات.
  • الوصول الخاص: فعّل ملف المصادقة أو قاعدة PostgreSQL، واضبط auth-default-access على deny-all، ثم أنشئ ACL ورموزًا محددة للاستخدام.
  • HTTPS: Basic Auth يستخدم Base64 فقط؛ لا يشفّر كلمة المرور. استخدم HTTPS دائمًا.

🚀 التثبيت والبدء

لاستخدام ntfy.sh لا تحتاج تثبيت الخادم؛ اشترك من التطبيق أو الويب ثم أرسل باستخدام curl.

أبسط أمر Docker موثق لتشغيل خادم محلي هو:

docker run -p 80:80 -it binwiederhier/ntfy serve

هذا مناسب للتجربة فقط: لا يضيف تخزينًا دائمًا أو إعداد وصول خاص. للاستخدام الفعلي اربط مجلد إعداد وملف cache، وشغّل الحاوية بمستخدم غير root، وأضف reverse proxy مع HTTPS ونسخًا احتياطية. لم أنفذ الأمر أو أثبت الخادم هنا.

يتوفر الخادم كملف تنفيذي وحزم deb/rpm وصورة Docker لمعمارية amd64 وarmv7 وarm64. على Windows يدعم الخادم وCLI التشغيل المباشر أو كخدمة. وعلى macOS تدعم الحزمة الموثقة أوامر CLI للنشر والاشتراك فقط، بينما يمكن تشغيل الخادم عبر Docker.

🔗 التكاملات والتوافق

أي أداة تستطيع إرسال Webhook أو HTTP يمكنها غالبًا النشر إلى ntfy. توثق صفحة التكاملات أمثلة مع أدوات المراقبة والأتمتة والنسخ الاحتياطي، ويمكن استخدام JSON عندما يصعب ضبط headers. التطبيقات الرسمية متاحة لـAndroid وiOS، والويب يعمل كـPWA.

في iOS، الإشعارات الفورية لمثيل ذاتي الاستضافة تحتاج upstream-base-url إلى خادم يدعم APNS/FCM. يرسل المثيل طلب تنبيه يحتوي معرّف الرسالة وبصمة الموضوع، ثم يجلب الهاتف المحتوى من خادمك. بدون هذا المسار قد يتأخر وصول الإشعار عندما يكون التطبيق في الخلفية. على Android، نسخة F-Droid مع خادمك تساعد على تجنب FCM، بينما نسخة المتجر والخدمة العامة تستخدمان FCM للتوصيل.

💰 التكلفة والتشغيل المحلي

الخادم مفتوح المصدر بترخيص مزدوج Apache-2.0 وGPL-2.0. تستطيع استخدام ntfy.sh مجانًا ضمن حدوده، ويذكر README خططًا مدفوعة تبدأ من 5 دولارات شهريًا لمن يريد حدودًا أعلى أو مزايا مستضافة. الاستضافة الذاتية لا تتطلب API مدفوعًا من ntfy، لكنها تحمل تكلفة الخادم والنطاق وTLS والتشغيل.

وقت الفحص عرض المستودع 34,590 نجمة و1,629 تفرعًا. هذه أرقام شعبية متغيرة وليست تقييم أمان أو جودة.

⚠️ الحدود ومتى لا تستخدمها

  • المواضيع العامة على ntfy.sh عامة؛ لا ترسل أسرارًا أو بيانات عملاء أو سجلات صحية إليها.
  • الحد الموثق للخدمة العامة هو 250 رسالة يوميًا للزائر و2MB للمرفق؛ الخطط والحسابات قد تغير الحدود.
  • الخدمة توصل الحدث لكنها لا تجمع logs أو traces ولا تدير مناوبة حوادث.
  • الاستضافة الذاتية تتطلب تحديثًا ونسخًا احتياطيًا وHTTPS وضبط وصول؛ تشغيل الحاوية وحده ليس إعدادًا آمنًا.
  • Web Push في PWA وiOS الفوري يحتاجان إعدادات إضافية عند الاستضافة الذاتية.
  • زر HTTP قادر على تنفيذ طلب؛ لا تستخدمه لإجراء غير قابل للتراجع دون تأكيد وحماية في الخدمة المستهدفة.
  • رمز الوصول ليس دقيق النطاق حاليًا؛ أنشئ مستخدمًا محدود المواضيع بدل مشاركة رمز المدير.

🔐 الأمان والصلاحيات والخصوصية

على الخدمة العامة تُعالج أسماء المواضيع ومحتوى الرسائل على خوادم ntfy. تذكر سياسة الخصوصية أن الرسائل تُخزن مؤقتًا افتراضيًا 12 ساعة والمرفقات 3 ساعات، وأن عنوان IP يستخدم للحد من الإساءة. قد يمر محتوى الإشعار وبياناته عبر Firebase عند استخدام تطبيقات المتجر. إذا كانت الرسائل حساسة، استخدم خادمًا خاصًا واضبط الوصول؛ لكن راجع أيضًا مسار APNS/FCM ونقاط الاتصال الخارجية في جهازك.

احفظ رموز الوصول خارج المستودع، وامنح سكربت الإرسال صلاحية كتابة فقط لموضوعه إن أمكن، ولا تضع الرمز داخل رابط يظهر في السجلات. حدّث الخادم والتطبيقات، واختبر ACL بحساب غير إداري، وراقب فشل إرسال التنبيه نفسه.

📚 المصادر وتاريخ التحقق

تحققت في 3 أكتوبر 2026 من المستودع الأصلي، توثيق إرسال الرسائل، التثبيت والاستضافة الذاتية، إعداد الوصول والمصادقة، سياسة الخصوصية، وملاحظات الإصدارات. أحدث إصدار مستقر موثق للخادم هو v2.28.0 بتاريخ 27 أغسطس 2026، وكان آخر دفع ظاهر للمستودع في 29 سبتمبر 2026. لم أثبت ntfy أو أنفذ المثال على خادم فعلي.