[{"data":1,"prerenderedAt":186},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-kener-على-vps-صفحة-حالة-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-kener-على-vps-صفحة-حالة-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":124,"ctaBody":125,"ctaButton":126,"ctaUrl":127,"relatedPosts":128},543,"استضافة-kener-على-vps-صفحة-حالة",{"fr":12,"en":13,"ar":10,"es":14},"self-host-kener-vps","self-host-kener-vps-status-page","autoalojar-kener-vps-pagina-de-estado","Kener على VPS: صفحة حالة لخدماتك على خادمك","ثبّت Kener على VPS: صفحة حالة مفتوحة المصدر مع فحوص مدمجة، وحوادث، وصيانة مجدولة، ومشتركين يُبلَّغون بالبريد الإلكتروني.",6,0,false,"2026-10-31T00:00:00+00:00","2026-10-31T19:07:30+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-kener-vps-poster.svg",{"categorySlug":34,"appSlug":35},"المراقبة-وقابلية-الرصد","kener","عندما تتعطل خدمتك، أول سؤال يطرحه عملاؤك هو «هل المشكلة عندي أم عندكم؟». صفحة الحالة تجيب عنه قبل أن يراسلوا الدعم. Kener صفحة حالة مفتوحة المصدر (رخصة MIT) تراقب ما تعرضه: فحوص HTTP وTCP وDNS وSSL وheartbeat، وسجل التوفر، وحوادث بتسلسل زمني، وصيانة مجدولة، واشتراكات بالبريد. يثبّته هذا الدليل بـ Docker Compose على خادم VPS، وينشره عبر HTTPS خلف nginx، ثم يضبط الفحوص والحوادث والتنبيهات.",[38,42,52,86,89,105,109,112,115,118,121],{"type":39,"title":40,"body":41},"h2","لماذا صفحة حالة عامة","أداة المراقبة تخبر فريقك بأن خدمة متعطلة. أما صفحة الحالة فتخبر مستخدميك — وهذا ما ينقص غالبًا أثناء الحادثة: لا يعرف العملاء إن كانت المشكلة من جهتهم، فيفتحون تذاكر مكررة ويلاحقونك على الشبكات الاجتماعية.\n\nيجمع Kener الدورين. تفحص فحوصه خدماتك على فترات منتظمة وتنشر سجل التوفر؛ وعند وقوع حادثة تضيف تحديثات يقرؤها الجميع في مكان واحد. استضافة هذه الصفحة بنفسك تغنيك عن اشتراك في خدمة صفحات حالة تُحتسب بعدد المشتركين أو الصفحات، وتُبقي بيانات المراقبة لديك.",{"type":43,"title":44,"items":45},"ul","ما يقدّمه Kener",[46,47,48,49,50,51],"**فحوص مدمجة** — API وHTTP وping وTCP وDNS وSSL وSQL وheartbeat للمهام المجدولة.","**حوادث بتسلسل زمني** — يبقى كل تحديث ظاهرًا من الاكتشاف حتى الحل.","**صيانة مجدولة** — تُعلَن مسبقًا، دون تنبيه كاذب أثناء التدخل.","**اشتراكات بالبريد** — يشترك الزوار في الحوادث والصيانة التي تعنيهم.","**تنبيهات الفريق** — webhook وSlack وDiscord والبريد، مع قوالب للرسائل.","**بهويتك** — شعار، وألوان، ووضع فاتح أو داكن، وعدة صفحات، وشارات وعناصر.",{"type":53,"title":54,"headers":55,"rows":59},"comparison","Kener وUptime Kuma وGatus",[5,56,57,58],"Kener","Uptime Kuma","Gatus",[60,65,70,74,78,81],[61,62,63,64],"الدور الأساسي","صفحة حالة مع مراقبة مدمجة","مراقبة مع صفحات حالة اختيارية","مراقبة مُعرَّفة بملف YAML",[66,67,68,69],"الإعداد","واجهة إدارة على الويب","واجهة ويب","ملف YAML",[71,72,73,73],"اشتراكات الزوار بالبريد","نعم (SMTP أو Resend)","لا",[75,76,76,77],"عدة صفحات حالة","نعم","لا، لوحة واحدة",[79,76,76,80],"صيانة مجدولة","نعم، مُعرَّفة بـ YAML",[82,83,84,85],"التخزين","SQLite أو PostgreSQL أو MySQL، مع Redis","SQLite أو MariaDB","الذاكرة أو SQLite أو PostgreSQL",{"type":39,"title":87,"body":88},"المتطلبات","خادم VPS بنظام Ubuntu 24.04 وذاكرة 1 غيغابايت وقرص 10 غيغابايت، مع Docker وإضافة Compose، واسم مضيف يشير إلى الخادم — مثل `status.example.com`. يحتاج Kener إلى معرفة عنوانه العام: المتغير `ORIGIN` يحكم حمايته من الطلبات عبر المواقع، ويُرفض كل طلب من مصدر آخر. جهّز أيضًا nginx وCertbot من أجل HTTPS.",{"type":90,"title":91,"steps":92},"steps","تثبيت Kener باستخدام Docker Compose",[93,96,99,102],{"title":94,"body":95},"تحضير المجلد والمفتاح السري","أنشئ مجلد التطبيق وملف `.env` يحمل مفتاح توقيع الجلسات والعنوان العام.\n```bash\nmkdir -p \u002Fopt\u002Fkener && cd \u002Fopt\u002Fkener\necho \"SECRET_KEY=$(openssl rand -hex 32)\" > .env\necho \"DOMAIN=status.example.com\" >> .env\nchmod 600 .env\n```",{"title":97,"body":98},"كتابة ملف docker-compose.yml","خدمتان: Redis الذي يحمل طوابير المهام ومجدول الفحوص، وKener مع قاعدة SQLite في وحدة تخزين. المنفذ منشور على العنوان المحلي فقط: لا يصل إليه إلا nginx.\n```yaml\nservices:\n  redis:\n    image: redis:7.4-alpine\n    restart: unless-stopped\n    command: [\"redis-server\", \"--appendonly\", \"yes\"]\n    volumes:\n      - kener-redis:\u002Fdata\n    healthcheck:\n      test: [\"CMD\", \"redis-cli\", \"ping\"]\n      interval: 10s\n      timeout: 5s\n      retries: 10\n\n  kener:\n    image: rajnandan1\u002Fkener:4.1.10\n    restart: unless-stopped\n    depends_on:\n      redis:\n        condition: service_healthy\n    ports:\n      - \"127.0.0.1:3000:3000\"\n    environment:\n      KENER_SECRET_KEY: ${SECRET_KEY}\n      ORIGIN: https:\u002F\u002F${DOMAIN}\n      REDIS_URL: redis:\u002F\u002Fredis:6379\n      DATABASE_URL: sqlite:\u002F\u002F.\u002Fdatabase\u002Fkener.sqlite.db\n    volumes:\n      - kener-data:\u002Fapp\u002Fdatabase\n\nvolumes:\n  kener-data: {}\n  kener-redis: {}\n```",{"title":100,"body":101},"التشغيل والتحقق","شغّل الحزمة ثم استعلم عن نقطة الصحة: تستجيب فور جاهزية التطبيق، عادة خلال خمس عشرة ثانية تقريبًا.\n```bash\ndocker compose up -d\ndocker compose ps\ncurl -fsS http:\u002F\u002F127.0.0.1:3000\u002Fhealthcheck\n```",{"title":103,"body":104},"النشر عبر HTTPS مع nginx","أنشئ مضيفًا افتراضيًا يمرر الطلبات إلى Kener، ثم احصل على الشهادة بالأمر `certbot --nginx -d status.example.com`.\n```nginx\nserver {\n    listen 443 ssl http2;\n    server_name status.example.com;\n    # ssl_certificate \u002F ssl_certificate_key: added by Certbot\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n}\n```",{"type":106,"title":107,"body":108},"tip","أنشئ حساب المسؤول دون تأخير","لا ينشئ Kener أي حساب مسبقًا: أول زائر لـ `\u002Faccount\u002Fsignin` يرى نموذج **Create Admin Account** ويصبح المسؤول. افتح هذه الصفحة فور عمل HTTPS وأنشئ حسابك بكلمة مرور قوية. بعدها يختفي النموذج ويُرفض أي إنشاء جديد.",{"type":39,"title":110,"body":111},"إنشاء الفحوص الأولى","في لوحة الإدارة، كل مراقب يقابل سطرًا في الصفحة العامة. ابدأ بثلاثة فحوص: فحص **API** على الصفحة الرئيسية لتطبيقك أو نقطة صحته (رمز HTTP المتوقع والمهلة القصوى)، وفحص **SSL** ينبّه قبل أيام من انتهاء الشهادة، وفحص **TCP** على منفذ قاعدة بياناتك إن كان متاحًا من الخادم.\n\nللمهمة المجدولة — نسخ احتياطي أو تصدير أو مزامنة — استخدم فحص **heartbeat**: المهمة هي التي تستدعي Kener عند انتهائها، وغياب الإشارة في الموعد يُطلق العطل.\n```bash\n# at the end of your backup script\ncurl -fsS -m 10 https:\u002F\u002Fstatus.example.com\u002Fext\u002Fheartbeat\u002Fnightly-backup\u002FYOUR_SECRET\n```\n\nجمّع المراقبين حسب الخدمة (الموقع، الواجهة البرمجية، الدفع) لتبقى الصفحة مقروءة، وأخفِ ما يخص الفريق وحده.",{"type":39,"title":113,"body":114},"إعلان حادثة وجدولة صيانة","تُنشأ الحادثة من لوحة الإدارة: عنوان، والمراقبون المتأثرون، والخطورة، ثم تحديثات متتالية — «قيد التحقيق»، «تم تحديد السبب»، «تم الحل». يبقى كل تحديث ظاهرًا في التسلسل الزمني، وهذا أفضل من رسالة واحدة تُعدَّل باستمرار.\n\nتُجدوَل الصيانة مسبقًا بنافذة بداية ونهاية. تظهر على الصفحة قبل التدخل، ولا يحتسب المراقبون المعنيون الانقطاع عطلًا.",{"type":39,"title":116,"body":117},"إبلاغ فريقك ومستخدميك","قناتان منفصلتان. للفريق، تنطلق التنبيهات بحسب حالة المراقب وتُرسل إلى webhook أو Slack أو Discord أو بريد، مع قوالب رسائل قابلة للضبط. وللزوار، ترسل الاشتراكات الحوادث والصيانة بالبريد بعد تأكيد العنوان برمز.\n\nكلاهما يتطلب ضبط إرسال البريد: أضف إلى بيئة الخدمة `kener` المتغيرات `SMTP_HOST` و`SMTP_PORT` و`SMTP_USER` و`SMTP_PASSWORD` و`SMTP_SENDER`، أو `RESEND_API_KEY` و`RESEND_SENDER_EMAIL`، ثم أعد التشغيل بـ `docker compose up -d`. بعد ذلك فعّل الاشتراكات في لوحة الإدارة.",{"type":39,"title":119,"body":120},"النسخ الاحتياطي والتحديث","يعيش كل الإعداد والسجل في قاعدة SQLite ضمن وحدة التخزين `kener-data`؛ أما Redis فلا يحمل سوى الطوابير والذاكرة المؤقتة. انسخ وحدة التخزين بعد إيقاف قصير للخدمة للحصول على نسخة متسقة:\n```bash\ncd \u002Fopt\u002Fkener\ndocker compose stop kener\ndocker run --rm -v kener_kener-data:\u002Fdata -v \"$PWD\":\u002Fbackup alpine \\\n  tar czf \u002Fbackup\u002Fkener-$(date +%F).tar.gz -C \u002Fdata .\ndocker compose start kener\n```\n\nللتحديث، اقرأ ملاحظات الإصدار في صفحة إصدارات المستودع، وغيّر وسم الصورة في `docker-compose.yml`، ثم شغّل `docker compose pull && docker compose up -d`. تحدّث الحاوية قاعدتها عند الإقلاع: خذ النسخة الاحتياطية قبل ذلك.",{"type":39,"title":122,"body":123},"التثبيت بنقرة واحدة من متجر ServOrbit","على خادم VPS من ServOrbit، يُثبَّت Kener من المتجر في مساحة العميل: اختر العنوان — نطاقًا فرعيًا من أحد نطاقاتك أو النطاق الفرعي المجاني للخادم، مع HTTPS — وانقر «تثبيت». ينشر السكربت Kener وRedis، ويولّد المفتاح السري، ويضبط العنوان العام وnginx. لا يبقى إلا فتح `\u002Faccount\u002Fsignin` لإنشاء حساب المسؤول، ثم إضافة فحوصك.","صفحة حالتك على خادمك","يكفي خادم VPS من ServOrbit بنظام Ubuntu 24.04 وذاكرة 1 غيغابايت لتشغيل Kener. تثبيت بنقرة واحدة من المتجر، وHTTPS على نطاقك أو على النطاق الفرعي المجاني للخادم، ومفتاح سري يُولَّد لك.","ثبّت Kener","\u002Fmarketplace\u002Fالمراقبة-وقابلية-الرصد\u002Fkener",[129,151,170],{"id":130,"slug":131,"slugs":132,"title":136,"excerpt":137,"readTime":138,"views":18,"isPinned":19,"publishedAt":139,"updatedAt":140,"category":141,"categories":146,"featuredImage":30,"bgImage":31,"posterImage":148,"relatedSolution":149},105,"مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma",{"fr":133,"en":134,"ar":131,"es":135},"superviser-vps-uptime-kuma","monitoring-your-vps-with-uptime-kuma","supervisar-vps-con-uptime-kuma","مراقبة خادمك الافتراضي VPS باستخدام Uptime Kuma","انشر Uptime Kuma على خادمك الافتراضي VPS لمراقبة مواقعك وخدماتك ذاتيًا، مع تنبيهات وصفحة حالة عامة.",8,"2026-03-07T00:00:00+00:00","2026-10-23T23:43:01+00:00",{"id":138,"name":142,"slug":143,"color":144,"icon":145},"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[147],{"id":138,"name":142,"slug":143,"color":144,"icon":145},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":34,"appSlug":150},"uptime-kuma",{"id":152,"slug":153,"slugs":154,"title":158,"excerpt":159,"readTime":160,"views":161,"isPinned":19,"publishedAt":162,"updatedAt":163,"category":164,"categories":165,"featuredImage":30,"bgImage":31,"posterImage":167,"relatedSolution":168},209,"استضافة-gatus-على-vps-صفحة-حالة-بالكود-ومراقبة-شاملة",{"fr":155,"en":156,"ar":153,"es":157},"self-host-gatus-vps","self-host-gatus-on-a-vps-config-as-code-status-page-and-checks","alojar-gatus-en-un-vps","استضافة Gatus على VPS: صفحة حالة بالكود ومراقبة شاملة","انشر Gatus على VPS ServOrbit للحصول على صفحة حالة عامة ومراقبة HTTP وTCP وDNS وICMP وانتهاء TLS من ملف YAML واحد، مع أكثر من 40 تكاملًا للتنبيه.",4,1,"2026-08-02T00:00:00+00:00","2026-09-11T11:34:11+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[166],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fself-host-gatus-vps-poster.svg",{"categorySlug":34,"appSlug":169},"gatus",{"id":171,"slug":172,"slugs":173,"title":177,"excerpt":178,"readTime":179,"views":18,"isPinned":19,"publishedAt":180,"updatedAt":181,"category":182,"categories":183,"featuredImage":30,"bgImage":31,"posterImage":185,"relatedSolution":30},541,"مراقبة-توفر-مواقع-العملاء-الوكالة-التقرير-الشهري",{"fr":174,"en":175,"ar":172,"es":176},"monitoring-disponibilite-sites-clients-agence-rapport","monitor-client-site-availability-agency-monthly-report","monitorizar-disponibilidad-sitios-clientes-agencia-informe-mensual","مراقبة توفر مواقع العملاء: التقرير الشهري","مجسّات وعدد فحوصات قبل التنبيه ونوافذ صيانة وتقرير شهري: كيف تراقب الوكالة مواقع عملائها دون الغرق في التنبيهات الكاذبة.",10,"2026-10-30T00:00:00+00:00","2026-10-31T01:54:06+00:00",{"id":138,"name":142,"slug":143,"color":144,"icon":145},[184],{"id":138,"name":142,"slug":143,"color":144,"icon":145},"\u002Fblog\u002Fcovers\u002Fmonitoring-disponibilite-sites-clients-agence-rapport-poster.svg",1793480095856]