دليل النشر

استضافة ntfy على VPS: إشعارات فورية من سكريبتاتك وCI/CD

انشر على VPS Cloud ←

دليل عملي

استضافة ntfy على VPS: إشعارات فورية من سكريبتاتك وCI/CD

الأمان والمراقبة4 دقائق للقراءةعدد الخطوات: 6

Slack يُكلف بالمقعد. رسائل البريد الإلكتروني تضيع في الضوضاء. ntfy (Apache 2.0، ~32 ألف ⭐، v2.26.3) يحل المشكلة بطريقة مختلفة: خادم pub/sub HTTP خفيف الوزن تستضيفه ذاتيًا على VPS، ويرسل إليه أي سكريبت تنبيهًا بـ `curl -d`. يتلقى التطبيق المحمول الإشعار فورًا. حاوية Docker واحدة، أقل من 30 ميغابايت RAM، لا حساب مطلوب.

المحتويات· المشكلة: أدوات مراقبة كثيرة وقنوات إشعارات متفرقة1/5
  1. 01المشكلة: أدوات مراقبة كثيرة وقنوات إشعارات متفرقة
  2. 02ما يمنحك إياه ntfy مباشرةً
  3. 03البنية: pub/sub HTTP في حاوية واحدة
  4. 04نشر واستخدام ntfy في 6 خطوات
  5. 05نصيحة: أسماء المواضيع كفضاءات أسماء

المشكلة: أدوات مراقبة كثيرة وقنوات إشعارات متفرقة

Uptime Kuma يراقب خدماتك، Beszel يراقب مقاييس VPS، Changedetection.io يراقب صفحاتك، ومهام cron تصمت ليلًا — إلا حين تفشل. لكل أداة قناة إشعارات خاصة: Slack، بريد إلكتروني، webhook، Telegram. النتيجة: خمس تكاملات مختلفة للصيانة وعدم وجود رؤية موحدة حين يتعطل شيء الساعة 3 صباحًا. يحل ntfy هذه المشكلة بطريقة معكوسة: أنت تستضيف مركز الإشعارات، وكل أداة أو سكريبت يرسل تنبيهاته إليه عبر HTTP بسيط.

ما يمنحك إياه ntfy مباشرةً

  • أرسل إشعارًا بأمر curl بسيط — curl -d "فشل البناء" http://vps/تنبيهات-ci — بدون SDK أو مكتبة.
  • استقبل الإشعارات على Android وiOS والمتصفح وواجهة ntfy الويب — جميعها تشترك في نفس الموضوع.
  • إجراءات الإشعارات — أزرار تُطلق استدعاءات HTTP أو تفتح URLs أو تُشغّل أوامر على الجهاز.
  • إشعارات مجدولة — تسليم مؤجل (X-Delay: 30min) لجدولة التذكيرات من السكريبتات.
  • مستويات الأولوية (دنيا / منخفضة / افتراضية / عالية / عاجلة) مع تجاوز وضع عدم الإزعاج.
  • مرفقات — صور أو ملفات حتى 15 ميغابايت عبر رأس X-Attach.
  • التحكم في الوصول — أضف مستخدمين وكلمات مرور وقوائم تحكم بالوصول عبر ntfy CLI.
  • أقل من 30 ميغابايت RAM وSQLite وحاوية واحدة — أخف خادم إشعارات push مستضاف ذاتيًا.

البنية: pub/sub HTTP في حاوية واحدة

ntfy هو ثنائي Go يعمل في حاوية Docker واحدة. يكشف واجهة HTTP بسيطة: PUT أو POST على /موضوعك ينشر رسالة؛ أي عميل يستمع لهذا الموضوع (عبر WebSocket أو SSE أو التطبيق المحمول) يتلقاها فورًا. تُخزَّن الرسائل في SQLite مع استبقاء قابل للتكوين (12 ساعة افتراضيًا). NTFY_BEHIND_PROXY=true يخبر ntfy أنه خلف nginx.

نشر واستخدام ntfy في 6 خطوات

  1. انشر ntfy من متجر ServOrbit

    افتح لوحة ServOrbit → السوق → المراقبة → ntfy → نشر. يسحب Docker صورة binwiederhier/ntfy:latest ويبدأ ntfy على المنفذ 8080، وتكون واجهة الويب متاحة في أقل من 5 ثوانٍ.

  2. أرسل أول إشعار

    من أي طرفية بها curl:

    curl -d "مرحبًا من VPS الخاص بي" http://ip-vps:8080/موضوعي

    افتح واجهة ntfy الويب على نفس العنوان، انتقل إلى موضوعي وسترى رسالتك مباشرة.

  3. اشترك على هاتفك

    ثبّت تطبيق ntfy (Android: F-Droid أو Play Store؛ iOS: App Store). اضغط +، أدخل URL الخادم واسم الموضوع. ستتلقى إشعارات push فور نشر أي شيء — حتى عندما يكون التطبيق في الخلفية.

  4. اربط أدوات المراقبة

    في Uptime Kuma: الإعدادات → الإشعارات → ntfy → أدخل URL الخادم والموضوع. كرر مع Beszel وChangedetection.io وGrafana — كل أداة بموضوع مختلف على نفس خادم ntfy. جميع تنبيهاتك في مكان واحد.

  5. أرسل تنبيهات من السكريبتات ومهام cron

    أضف سطرًا لكل سكريبت حرج:

    # عند النجاح
    curl -H "Title: نسخ احتياطي ليلي" -H "Priority: high" -d "اكتمل في $(date)" http://vps:8080/cron-jobs
    # عند الفشل
    curl -H "Tags: warning" -d "فشل: كود $?" http://vps:8080/cron-jobs

    الصمت يصبح إشارة الخطأ؛ الإشعار يؤكد التنفيذ الطبيعي.

  6. أول تسجيل دخول

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

نصيحة: أسماء المواضيع كفضاءات أسماء

نظّم تنبيهاتك حسب المصدر: ci-builds لـ GitHub Actions/GitLab CI، server-alerts لـ Uptime Kuma/Beszel، cron-jobs للسكريبتات. يتيح تطبيق ntfy كتم بعض المواضيع ليلًا مع إبقاء server-alerts على أعلى أولوية.

مركز إشعاراتك تحت سيطرتك

انشر ntfy على VPS من ServOrbit وأجمع كل تنبيهات المراقبة وCI/CD ومهام cron في مركز إشعارات مستضاف ذاتيًا — بلا SaaS وبلا اشتراك.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة