[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"seo-verification":3,"blog-mise-a-jour-automatique-docker-watchtower-diun-2-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-mise-a-jour-automatique-docker-watchtower-diun-2-ar",{"id":9,"slug":10,"slugs":11,"title":13,"excerpt":14,"readTime":15,"views":16,"isPinned":17,"publishedAt":18,"updatedAt":19,"category":20,"categories":25,"featuredImage":27,"bgImage":28,"posterImage":29,"relatedSolution":27,"intro":30,"sections":31,"ctaTitle":110,"ctaBody":111,"ctaButton":112,"ctaUrl":113,"relatedPosts":114},350,"mise-a-jour-automatique-docker-watchtower-diun-2",{"fr":12,"en":10,"ar":10,"es":10},"mise-a-jour-automatique-docker-watchtower-diun","Watchtower أم Diun: إدارة تحديثات Docker تلقائياً على VPS","Watchtower يحدّث حاوياتك تلقائياً. Diun يُخطرك ويترك لك القرار. مقارنة عملية لاختيار النهج المناسب لبيئة الإنتاج.",8,0,false,"2026-09-11T00:00:00+00:00","2026-09-11T11:34:13+00:00",{"id":21,"name":22,"slug":23,"color":24,"icon":23},3,"النشر","deploiement","bg-success\u002F10 text-success",[26],{"id":21,"name":22,"slug":23,"color":24,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmise-a-jour-automatique-docker-watchtower-diun-poster.svg","صور Docker تتقادم في صمت: تتراكم تصحيحات الأمان، تتأثر التبعيات، ولا شيء يُنبّهك. بدون عملية واضحة، إما لا تُحدّث أبداً أو تفعل ذلك يدوياً يوم يقع الحادث. Watchtower وDiun يعالجان هذه المشكلة بفلسفتين متعارضتين — أحدهما يتصرف عنك، والآخر يُعلمك فقط. هذه المقارنة تساعدك على الاختيار وفق سياقك، مع الأخذ بعين الاعتبار حقيقة حديثة: تم أرشفة Watchtower من قِبل مشرفيه في نهاية عام 2025.",[32,36,39,43,46,76,79,95,98,101],{"type":33,"title":34,"body":35},"h2","المشكلة: صور Docker تتقادم في صمت","على VPS في بيئة الإنتاج، تعمل حاويات Docker في أغلب الأحيان لأسابيع أو أشهر دون تحديث. هذا ليس إهمالاً — ببساطة لا يوجد إشعار. صورة `nginx:latest` التي سحبتها في يناير لا تزال هناك في سبتمبر، تحمل الثغرات التي جرى تصحيحها في الأثناء.\n\nتكلفة عدم التحديث موثّقة: الثغرات غير المُصحّحة في صور الأساس هي أحد أكثر مسارات الاختراق شيوعاً في بنى Docker المستضافة ذاتياً. التحديث اليدوي — الاتصال بالـVPS وتشغيل `docker pull` وإعادة إنشاء الحاوية — هو الممارسة الافتراضية، وهو أيضاً الأقل موثوقية: نؤجل وننسى، ونحدّث الخدمات «المهمة» فقط.\n\nظهر أداتان لتنظيم هذه العملية: **Watchtower** الذي يُؤتمت التحديث بنفسه، و**Diun** ‏(Docker Image Update Notifier) الذي يُرسل تنبيهاً عند توفر صورة جديدة ويترك الإجراء لمسار النشر الخاص بك. الأداتان لا تفعلان الشيء ذاته، والخلط بين الفلسفتين قد يتسبب في توقف الإنتاج.",{"type":33,"title":37,"body":38},"Watchtower: تحديث تلقائي، لكنه مؤرشف منذ نهاية 2025","يراقب Watchtower حاوياتك الجارية، ويستعلم من الـregistries على فترات منتظمة، وبمجرد توفر صورة جديدة، يسحب الـtag الجديد ويوقف الحاوية الموجودة ويُعيد إنشاءها بنفس الخيارات — volumes والمتغيرات البيئية والشبكة. كل هذا دون تدخل بشري.\n\n**ما يفعله عملياً:**\n\n- استعلام قابل للضبط بالمدة (كل N ثانية) أو بتعبير cron\n- دعم الـregistries الخاصة مع المصادقة\n- وضع `WATCHTOWER_NOTIFICATIONS` لاستقبال التنبيهات دون تنفيذ التحديثات\n- تصفية بـlabels Docker لتضمين أو استبعاد حاويات محددة\n\n**الخطر في بيئة الإنتاج حقيقي.** إذا أدخلت صورة `:latest` تغييراً غير متوافق في الـAPI أو سلوكاً كاسراً، فسيعيد Watchtower إنشاء حاويتك بهذه الصورة — دون اختبار، دون نافذة صيانة، وربما الساعة 3 فجراً. تعيد الحاوية تشغيلها بالإصدار الخاطئ، والاكتشاف يحدث عبر تنبيه مراقبة أو مكالمة دعم.\n\n**تحديث مهم حول الوضع:** تم **أرشفة مستودع Watchtower على GitHub من قِبل مشرفيه في أواخر 2025**. أصبح للقراءة فقط. آخر إصدار منشور هو `v1.7.1`‏. يظل المشروع وظيفياً وتستمر صور Docker الموجودة في العمل، لكنه لن يتلقى بعد الآن إصلاحات أمنية ولا ميزات جديدة ولا دعماً لإصدارات Docker المستقبلية. لأداة دورها تحديث صورك، المفارقة لافتة.\n\nبالنسبة لبيئات التطوير أو الـhomelabs حيث تتفوق الراحة على الاستقرار، يظل Watchtower خياراً مشروعاً. بالنسبة للإنتاج، أرشفته تعزز استنتاجاً كان قائماً بالفعل: التحديث التلقائي بدون pipeline تحقق هو خطر تشغيلي.",{"type":40,"title":41,"body":42},"tip","Watchtower في وضع notify-only","إذا كنت تستخدم Watchtower بالفعل وتريد تعطيل التحديثات التلقائية مع الاحتفاظ بالتنبيهات، عيّن المتغير `WATCHTOWER_MONITOR_ONLY=true`‏. الحاوية تراقب الصور وترسل تنبيهات لكنها لا تتصرف. هذا إعداد انتقالي مفيد إذا كنت تنتقل إلى Diun.",{"type":33,"title":44,"body":45},"Diun: تنبيهات فقط، أنت تحتفظ بالتحكم","يعالج Diun ‏(Docker Image Update Notifier) المشكلة من الجهة الأخرى: يراقب صورك في الـregistries ويرسل إليك إشعاراً عند توفر إصدار جديد. لا يتصرف. حاوياتك تستمر في العمل دون تغيير — قرار التحديث يبقى في مسار نشرك.\n\nمرخّص تحت MIT‏، Diun في تطوير نشط: الإصدار `la version actuelle` نُشر في مؤخرًا. يغطي المشروع مجموعة واسعة من المصادر (Docker وContainerd وKubernetes وSwarm وNomad وDockerfile وملف تهيئة) وقنوات الإشعار.\n\n**قنوات الإشعار المدعومة:**\n\n- البريد الإلكتروني، Slack، Telegram، ntfy، Gotify\n- Microsoft Teams، Discord، webhooks عامة\n- ‏Healthchecks.io لمراقبة الـwatcher نفسه\n\n**ما لا يفعله Diun:**\n\n- لا يسحب أي صورة أبداً\n- لا يُعيد تشغيل أي حاوية أبداً\n- لا يُعدّل أي ملف تهيئة\n\nهذه الفلسفة تحديداً هي ما يجعله مناسباً للإنتاج. عندما يُشير Diun إلى توفر صورة جديدة، يمكنك تشغيل مسار النشر المعتاد — مع اختباراته ونسخته الاحتياطية المسبقة ونافذة الصيانة. تبقى في وضع محكوم.\n\nكذلك Diun متوافق مع stacks المُدارة بأدوات مثل Portainer وCoolify وDokploy: يراقب الصور دون التدخل في تنظيمها.",{"type":47,"title":48,"headers":49,"rows":53},"comparison","متى تختار هذا أو ذاك",[50,51,52],"السياق","Watchtower","Diun",[54,58,62,65,69,72],[55,56,57],"بيئة تطوير \u002F staging","مقبول (للراحة)","مبالغ فيه",[59,60,61],"إنتاج بـtags موثوقة (ليس :latest)","تجنّب — يُعيد الإنشاء على نفس الـtag","موصى به",[63,64,61],"إنتاج مع تبعيات API خارجية","محفوف بالمخاطر دون اختبار مسبق",[66,67,68],"Homelab \u002F خدمات شخصية","عملي","جيد إذا كانت التنبيهات نشطة",[70,71,61],"Stack مُدار بـCoolify أو Dokploy أو Portainer","تعارض محتمل مع المُنسّق",[73,74,75],"مشروع بدون pipeline نشر","مقبول مع monitor-only","موصى به مع ntfy\u002FSlack",{"type":33,"title":77,"body":78},"تثبيت Diun على VPS: مثال عملي","يستغرق تثبيت Diun بضع دقائق مع Docker Compose. المثال التالي يراقب جميع الحاويات على socket Docker المحلي ويرسل إشعارات عبر ntfy.",{"type":80,"title":81,"steps":82},"steps","نشر Diun على VPS الخاص بك",[83,86,89,92],{"title":84,"body":85},"إنشاء ملف docker-compose.yml","أنشئ مجلداً مخصصاً وملف Compose:\n\n```bash\nmkdir -p \u002Fopt\u002Fdiun && cd \u002Fopt\u002Fdiun\n```\n\nمحتوى ملف `docker-compose.yml`:\n\n```bash\nservices:\n  diun:\n    image: crazymax\u002Fdiun:latest\n    restart: unless-stopped\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002Fdata:\u002Fdata\n    environment:\n      - TZ=Europe\u002FParis\n      - LOG_LEVEL=info\n      - DIUN_WATCH_WORKERS=20\n      - DIUN_WATCH_SCHEDULE=0 *\u002F6 * * *\n      - DIUN_PROVIDERS_DOCKER=true\n      - DIUN_PROVIDERS_DOCKER_WATCHSTOPPED=true\n      - DIUN_NOTIF_NTFY_ENDPOINT=https:\u002F\u002Fntfy.example.com\n      - DIUN_NOTIF_NTFY_TOPIC=diun-updates\n```\n\nاستبدل `ntfy.example.com`‏ بعنوان URL لنسختك من ntfy (مستضافة ذاتياً على نفس الـVPS أو خارجية).",{"title":87,"body":88},"تفعيل المراقبة بالـlabels (اختياري)","بشكل افتراضي، يراقب Diun جميع الحاويات. للتحكم الأدق، انتقل إلى وضع label:\n\n```bash\n- DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=false\n```\n\nثم أضف الـlabel على الحاويات التي تريد مراقبتها:\n\n```bash\nlabels:\n  - \"diun.enable=true\"\n```\n\nهذا النهج مفيد لاستبعاد حاويات النظام (proxies، قواعد البيانات) من الإشعارات، ومراقبة التطبيقات فقط.",{"title":90,"body":91},"التشغيل والتحقق","```bash\ndocker compose up -d\ndocker compose logs -f diun\n```\n\nيُجري Diun مسح اكتشاف أولي عند بدء التشغيل. تؤكد السجلات الصور المكتشفة ودورة المراقبة التالية. يمكن تشغيل إشعار اختباري بالأمر:\n\n```bash\ndocker compose exec diun diun notif test\n```",{"title":93,"body":94},"تشغيل التحديث من مسار النشر الخاص بك","عندما يرسل Diun إشعاراً، يجب ألا يتم التحديث يدوياً. النهج الصحيح هو تشغيل مسار النشر المعتاد — webhook Gitea أو GitHub Action أو job بـWoodpecker يسحب الصورة الجديدة ويُشغّل الاختبارات ويُعيد إنشاء الحاوية.\n\nإذا لم يكن لديك pipeline بعد، الحد الأدنى العملي هو سكريبت يُستدعى من webhook النتفي:\n\n```bash\n#!\u002Fbin\u002Fbash\n# update-container.sh \u003Ccontainer_name>\nCONTAINER=$1\ndocker compose -f \u002Fopt\u002F${CONTAINER}\u002Fdocker-compose.yml pull\ndocker compose -f \u002Fopt\u002F${CONTAINER}\u002Fdocker-compose.yml up -d\n```\n\nالأساسي هو أن يكون التحديث **مُشغَّلاً بشكل مقصود**، وليس صامتاً.",{"type":33,"title":96,"body":97},"المضي قُدُماً: تثبيت الإصدارات والبقاء في السيطرة","التحديث التلقائي بدون tag ثابت هو الخطر الحقيقي — سواء استخدمت Watchtower أو pipeline مُشغَّل بـDiun. الـtag `:latest` هو alias يمكن أن يشير إلى أي إصدار ينشره المطوّر. تحديث `:latest` قد يُدخل تغييراً كاسراً دون أن يتغير شيء في تهيئتك.\n\n**الممارسة الموصى بها في مجتمع Docker:**\n\nثبّت الإصدارات في ملفات `docker-compose.yml` في بيئة الإنتاج:\n\n```bash\n# تجنّب في الإنتاج\nimage: nginx:latest\n\n# استخدم tag إصدار محدد\nimage: nginx:1.27\n```\n\naحتفظ بـ`:latest` لبيئات التطوير والـstaging، حيث يمكن اكتشاف الانحدار قبل أن يمس الإنتاج.\n\nمع الصور ذات الإصدارات، يكتشف Diun الإصدارات الجديدة (الـtags الجديدة) ويُخطرك — تختار الإصدار للترقية إليه، تُحدّث `docker-compose.yml`، وتنشر بتحكم كامل. هذا ما تسميه \u003Ca href=\"\u002Fblog\u002Fdocker-compose-production-checklist\">قائمة تحقق Docker Compose للإنتاج\u003C\u002Fa> «الإعلان الصريح عن تبعياتك».\n\nإذا كنت تُدير عدة حاويات على نفس الـVPS، فأداة مراقبة السجلات مثل \u003Ca href=\"\u002Fblog\u002Fself-host-dozzle-vps\">Dozzle\u003C\u002Fa> تُكمل Diun بشكل مفيد: Diun يراقب الصور في المراحل الأولى، Dozzle يراقب سجلات الحاويات بعد التحديث.",{"type":40,"title":99,"body":100},"Diun يراقب أيضاً الصور المتوقفة","بشكل افتراضي، يتجاهل Diun الحاويات المتوقفة. فعّل `DIUN_PROVIDERS_DOCKER_WATCHSTOPPED=true` لمراقبة صور الحاويات المتوقفة أيضاً — مفيد إذا كنت تُدير خدمات batch أو حاويات صيانة تُعيد تشغيلها بشكل دوري.",{"type":102,"title":103,"items":104},"ul","ما يجب استخلاصه من هذه المقارنة",[105,106,107,108,109],"Watchtower يتصرف دون أن يطلب رأيك — مفيد في التطوير، محفوف بالمخاطر في الإنتاج، ومؤرشف منذ أواخر 2025.","Diun يُخبر دون أن يتصرف — متوافق مع أي pipeline نشر موجود ومُصان بنشاط (la version actuelle).","للإنتاج، Diun مقرون بمسار نشرك هو الخيار الأكثر متانة.","تثبيت الإصدارات في docker-compose.yml يبقى الأساس — لا Watchtower ولا Diun يُعوّضان عن إدارة الـtags الصريحة.","إذا كان Watchtower مثبتاً لديك، وضع `WATCHTOWER_MONITOR_ONLY=true` هو انتقال فوري إلى سلوك أكثر أماناً.","أطلق stack Docker الخاص بك على VPS من ServOrbit","وصول root، SSD NVMe، IPv4 مخصصة: الظروف المثالية لتطبيق هذه الأمثلة بشكل مطابق. Diun ومسار النشر الخاص بك يعملان على نفس الجهاز مع حاوياتك التطبيقية.","عرض VPS Linux","\u002Fsolutions\u002Fdeveloppeurs",[115,137,151,174,195],{"id":116,"slug":117,"slugs":118,"title":122,"excerpt":123,"readTime":21,"views":16,"isPinned":17,"publishedAt":124,"updatedAt":125,"category":126,"categories":132,"featuredImage":27,"bgImage":28,"posterImage":134,"relatedSolution":135},136,"تثبيت-docker-على-vps-قاعدة-نظيفة-لتطبيقاتك",{"fr":119,"en":120,"ar":117,"es":121},"demarrer-avec-docker-vps","installing-docker-on-a-vps-a-clean-base-for-your-apps","instalar-docker-en-un-vps","تثبيت Docker على VPS: قاعدة نظيفة لتطبيقاتك","جهّز VPS موثوقًا بـ Docker: العزل، وCompose، والأحجام (volumes)، والشبكة، وأفضل الممارسات للنشر دون ارتجال.","2026-02-10T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":127,"name":128,"slug":129,"color":130,"icon":131},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[133],{"id":127,"name":128,"slug":129,"color":130,"icon":131},"\u002Fblog\u002Fcovers\u002Fdemarrer-avec-docker-vps-poster.svg",{"categorySlug":131,"appSlug":136},"docker-starter",{"id":138,"slug":139,"slugs":140,"title":144,"excerpt":145,"readTime":15,"views":16,"isPinned":17,"publishedAt":146,"updatedAt":125,"category":147,"categories":148,"featuredImage":27,"bgImage":28,"posterImage":150,"relatedSolution":27},229,"docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط",{"fr":141,"en":142,"ar":139,"es":143},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","checklist-docker-compose-en-produccion","Docker Compose في الإنتاج: قائمة التحقق من 10 نقاط","‎10 إعدادات Docker Compose يجب التحقق منها قبل أي نشر إنتاجي: إعادة التشغيل والفحوص الصحية والحدود والأسرار والسجلات.","2026-08-06T00:00:00+00:00",{"id":21,"name":22,"slug":23,"color":24,"icon":23},[149],{"id":21,"name":22,"slug":23,"color":24,"icon":23},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":152,"slug":153,"slugs":154,"title":158,"excerpt":159,"readTime":127,"views":160,"isPinned":17,"publishedAt":161,"updatedAt":125,"category":162,"categories":168,"featuredImage":27,"bgImage":28,"posterImage":170,"relatedSolution":171},167,"استضافة-dozzle-على-vps-عارض-سجلات-docker-لحظيا",{"fr":155,"en":156,"ar":153,"es":157},"self-host-dozzle-vps","how-to-self-host-dozzle-on-a-vps-real-time-docker-log-viewer","alojar-dozzle-en-un-vps","استضافة Dozzle على VPS: عارض سجلّات Docker لحظياً","انشر Dozzle على خادم VPS الخاص بك — عارض سجلّات Docker مفتوح المصدر وعديم الحالة. ابثّ سجلّات جميع حاوياتك وابحث فيها وتابِعها في المتصفح، دون SSH أو تخزين للسجلّات.",1,"2026-07-06T00:00:00+00:00",{"id":163,"name":164,"slug":165,"color":166,"icon":167},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[169],{"id":163,"name":164,"slug":165,"color":166,"icon":167},"\u002Fblog\u002Fcovers\u002Fself-host-dozzle-vps-poster.svg",{"categorySlug":172,"appSlug":173},"المراقبة-وقابلية-الرصد","dozzle",{"id":175,"slug":176,"slugs":177,"title":181,"excerpt":182,"readTime":127,"views":16,"isPinned":17,"publishedAt":183,"updatedAt":184,"category":185,"categories":190,"featuredImage":27,"bgImage":28,"posterImage":192,"relatedSolution":193},194,"استضافة-ntfy-على-vps-إشعارات-فورية-من-سكريبتاتك-وcicd",{"fr":178,"en":179,"ar":176,"es":180},"self-host-ntfy-vps","self-host-ntfy-on-a-vps-push-notifications-for-scripts-and-cicd","autoalojar-ntfy-en-un-vps","استضافة ntfy على VPS: إشعارات فورية من سكريبتاتك وCI\u002FCD","انشر ntfy على VPS الخاص بك وأرسل إشعارات push من أي سكريبت أو مهمة cron أو خط CI\u002FCD بأمر curl بسيط — بدون SaaS أو API key أو اشتراك.","2026-07-28T00:00:00+00:00","2026-09-11T11:34:11+00:00",{"id":15,"name":186,"slug":187,"color":188,"icon":189},"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[191],{"id":15,"name":186,"slug":187,"color":188,"icon":189},"\u002Fblog\u002Fcovers\u002Fself-host-ntfy-vps-poster.svg",{"categorySlug":172,"appSlug":194},"ntfy",{"id":196,"slug":197,"slugs":198,"title":202,"excerpt":203,"readTime":127,"views":160,"isPinned":17,"publishedAt":204,"updatedAt":125,"category":205,"categories":206,"featuredImage":27,"bgImage":28,"posterImage":208,"relatedSolution":27},224,"التطبيقات-المستضافة-ذاتيا-روتين-التصحيحات",{"fr":199,"en":200,"ar":197,"es":201},"routine-correctifs-apps-self-hosted","self-hosted-apps-the-patching-routine","apps-self-hosted-rutina-de-parches","التطبيقات المستضافة ذاتيًا: روتين التصحيحات","الجرد ونشرات الأمان ونافذة التصحيح والنسخ الاحتياطي والتحقق: الروتين الذي تفتقده معظم المنظومات المستضافة ذاتيًا.","2026-08-05T00:00:00+00:00",{"id":15,"name":186,"slug":187,"color":188,"icon":189},[207],{"id":15,"name":186,"slug":187,"color":188,"icon":189},"\u002Fblog\u002Fcovers\u002Froutine-correctifs-apps-self-hosted-poster.svg",1789126851168]