لماذا الاستضافة الذاتية لأداة كشف التغييرات
تُقدّم خدمات SaaS لكشف التغييرات خدماتها بحساب لكل فحص، وتضع حدودًا لعدد عناوين URL المراقبة، وتُمرّر محتواك عبر خوادمها. يعكس Changedetection.io هذا النموذج: تشغّله على خادمك الخاص، وتراقب عددًا غير محدود من عناوين URL بالتردد الذي تختاره، وتبقى جميع البيانات على بنيتك التحتية.
بما أنه يعتمد على تخزين الملفات دون قاعدة بيانات خارجية، فالحِمل التشغيلي ضئيل — يستهلك الحاوي أقل من 256 MB من الذاكرة في وضع الخمول ويبدأ في أقل من 10 ثوانٍ. تُحفظ لقطات كل صفحة مراقبة محليًا في وحدة Docker مُركّبة على مجلد /datastore: لا تغادر بياناتك خادمك قط، حتى بالنسبة للصفحات المحمية بكلمة مرور.
أضف Sidecar Playwright/Chromium للصفحات المُصيَّرة بـJavaScript لتحصل على دقة متصفح كامل لتطبيقات SPA وعدادات الطلبات وعناصر الأسعار المحمّلة ديناميكيًا — أشياء لا يمكن لطلب HTTP بسيط رؤيتها أبدًا.
ما تحصل عليه مع Changedetection.io ذاتي الاستضافة
- مراقبة عدد غير محدود من عناوين URL — صفحات المنتجات وبوابات المناقصات والمواقع المنافسة ولوحات الوظائف — بأي فترة فحص.
- فلاتر محدد CSS وXPath والكلمات المفتاحية — راقب العنصر الذي يهمك فقط، لا الصفحة بأكملها.
- أكثر من 80 قناة إشعار عبر Apprise: البريد الإلكتروني (SMTP) وTelegram وSlack وDiscord وntfy وGotify وMatrix والـ webhooks وغيرها الكثير.
- Sidecar Playwright/Chromium اختياري للصفحات المُصيَّرة بـJavaScript — يتم التصيير في متصفح حقيقي، لا في عميل HTTP بسيط.
- عارض الفروقات الكامل — شاهد بالضبط ما الذي تغيّر، مُميَّزًا في سياقه، مع سجل اللقطات السابقة.
- فحوصات مجدولة مع توزيع عشوائي للتوقيت — من كل دقيقة إلى كل 24 ساعة؛ التوقيت العشوائي يتجنب أنماط كشف البوتات.
- حاوي Docker واحد، تخزين قائم على الملفات، أقل من 256 MB من الذاكرة — لا تبعيات خارجية.
- رخصة Apache 2.0 — لا رسوم لكل فحص، لا حساب سحابي، لا بيانات تتبع.
المتطلبات الأساسية
خادم ServOrbit VPS يعمل بنظام Ubuntu 24.04 مع ذاكرة وصول عشوائي لا تقل عن 1 GB. يستهلك Changedetection.io وحده أقل من 256 MB في وضع الخمول؛ إذا أضفت Sidecar Playwright، احسب لنفسك 2 GB إجمالًا.
يتم توفير Docker وDocker Compose تلقائيًا عند النشر عبر ServOrbit Marketplace. لا يلزم اسم نطاق — يمكن الوصول إلى واجهة الويب مباشرةً على المنفذ 5000، غير أن وضعها خلف reverse proxy بـHTTPS موصى به للنشرات طويلة الأمد.
ملاحظة بشأن الإصدار المُنشر. يتتبع وسم latest أحدث وسم منشور على GitHub. منذ صدور الإصدار v0.60.2 في 2 سبتمبر 2026، يشهد هذا الوسم تراجعَين فعّالَين (راجع القسم المخصص أدناه). إذا كنت تنشر اليوم دون قراءة قسم استكشاف الأخطاء، ثبّت صراحةً dgtlmoon/changedetection.io:0.55.8 في ملف docker-compose.yml حتى صدور الإصلاح.
نشر Changedetection.io على خادمك VPS
النشر بنقرة واحدة من ServOrbit Marketplace
افتح لوحة تحكم ServOrbit، انتقل إلى Marketplace → Monitoring & Observability → Changedetection.io، ثم انقر على نشر. يسحب Docker الصورة dgtlmoon/changedetection.io:latest ويشغّل الحاوي. تصبح واجهة الويب متاحة على المنفذ 5000 في أقل من 10 ثوانٍ — دون إنشاء حساب، دون إعداد مبدئي.
إضافة أول عنوان URL للمراقبة
انتقل إلى http://<your-vps-ip>:5000. انقر على الزر الأزرق + في أعلى اليمين، الصق عنوان URL الذي تريد مراقبته — صفحة منتج أو إعلان وظيفة أو بوابة عامة — ثم انقر على مراقبة. يسحب Changedetection.io الصفحة فورًا ويحفظها كقاعدة مرجعية. يُجدوَل الفحص التالي وفق فترتك الافتراضية (دقائق أو ساعات).
إضافة فلتر لعزل العنصر الذي يهمك
بدون فلتر، يكتشف Changedetection.io أي تغيير في الصفحة — بما فيها لافتات الإعلانات والطوابع الزمنية وتحديثات التنقل. للتركيز فقط على حقل السعر أو المخزون، افتح إعدادات المراقبة (أيقونة القلم)، انتقل إلى تبويب الفلاتر، وأدخل محدد CSS مثل .price أو #stock-status أو span.availability. يمكنك أيضًا استخدام تعبيرات XPath أو مشغّل بالكلمات المفتاحية (تنبّه فقط عند ظهور نص "In stock" أو اختفائه).
إعداد قناة إشعار
افتح إعدادات المراقبة → تبويب الإشعارات. يستخدم Changedetection.io مكتبة Apprise للإشعارات. لإرسال رسالة Telegram، أدخل tgram://bottoken/chatid. للبريد الإلكتروني، استخدم mailto://user:[email protected]. لـSlack، استخدم صيغة عنوان الـwebhook slack://tokenA/tokenB/tokenC. يمكنك تراكم عدة قنوات — انخفاضات الأسعار مثلًا يمكن أن تصل إلى Telegram للاستلام الفوري على الهاتف، وتُسجَّل أيضًا في webhook للوحة مراقبتك.
تفعيل Playwright للصفحات المُصيَّرة بـJavaScript (اختياري)
إذا كانت الصفحة التي تريد مراقبتها تطبيقًا أحاديًا بـReact أو Vue، أو تحمّل عداد الأسعار بشكل غير متزامن، فلن يرى طلب HTTP البسيط سوى صدفة فارغة. لتفعيل دعم Playwright، أضف حاويًا ثانيًا — browserless/chrome أو playwright-stealth — بجانب Changedetection.io في ملف Docker Compose، وضع متغير البيئة PLAYWRIGHT_DRIVER_URL ليشير إليه. في إعدادات المراقبة، بدّل الـFetch Backend إلى playwright. سيُشغّل Changedetection.io حينئذٍ متصفحًا بدون واجهة، وينتظر تصيير الصفحة، ثم يلتقط صورة DOM المباشرة.
أول دخول للنظام
يفتح Changedetection.io مباشرةً على قائمة المراقبة دون حساب أو بيانات دخول: يمكنك إضافة أول عنوان URL فورًا. أول ما يجب فعله بعد ذلك: فتح Settings → General وتعيين كلمة مرور.
حالات الاستخدام العملية للمطورين والشركات الصغيرة
يغطي Changedetection.io نطاقًا واسعًا بشكل مفاجئ من احتياجات الأتمتة بما يتجاوز مجرد «تنبيهات إعادة التخزين».
الاستخبارات التنافسية: راقب صفحة أسعار منافس بمحدد CSS يستهدف جدول الأسعار. بمجرد تغيّر أي عمود — التحول من الفوترة الشهرية إلى السنوية، أو إضافة طبقة مؤسسية جديدة — تصلك إشعارات فورية دون زيارات يدوية للموقع.
تتبع إصدارات البرمجيات: أعدّ مراقبة على صفحة GitHub Releases لأداة تعتمد عليها. فلتر بالكلمات المفتاحية على v أو Release وإشعار Slack: لن تفوتك أي تحديث أمني حرج.
المناقصات العامة والمشتريات: تنشر بوابات المناقصات نتائجها في أوقات غير متوقعة. مراقبة صفحة النتائج بفحص كل ساعة توفّر عليك دخولات يدوية متعددة يوميًا.
تنبيهات إعادة التخزين للتجارة الإلكترونية: فلتر CSS على .in-stock، وفترة 15 دقيقة، وإشعار ntfy على هاتفك — يكفي لاصطياد أي إعادة تخزين لمنتج نافد المخزون.
أي عنوان URL، أي عنصر، أي قناة إشعار — مزيج فلاتر CSS والمشغّلات بالكلمات المفتاحية وأكثر من 80 backend في Apprise يجعله وحدة مراقبة قابلة للتركيب حقًا.
التراجعات الفعّالة في الإصدار v0.60.2 — ما تحتاج معرفته
يُدخل الإصدار v0.60.2 الصادر في 2 سبتمبر 2026 تراجعَين متزامنَين موثّقَين في متتبّع GitHub:
التراجع الأول — زر «Recheck» يُعيد خطأ HTTP 404 (المشكلة #4369). حوّل تمرير تحسين الأمان نقطة نهاية من GET إلى POST فقط دون إنشاء معالج POST المقابل. يفشل زر إعادة الفحص اليدوي عند كل استدعاء. حلٌّ مؤقت متاح إذا كنت تستخدم Traefik كـreverse proxy: أضف متغير البيئة SOCKETIO_CORS_ORIGINS=https://<your-domain> إلى الحاوي. فُتح طلب سحب (#4370) في اليوم ذاته من قِبل الفريق؛ لم يُدمج حتى 5 سبتمبر 2026.
التراجع الثاني — «Time Between Check» يتوقف عن الإطلاق بعد التحديث (المشكلة #4368). لم تعد فترة الفحص المجدول تُنفَّذ بعد الترقية إلى v0.60.2. تبدو المراقبات النشطة في الواجهة لكنها لا تُطلق أي فحص تلقائي. سيكون زر Recheck اليدوي الحلَّ المؤقت الوحيد — لكنه مُعطَّل بدوره بسبب التراجع الأول.
التوصية: ابقَ على الإصدار v0.55.8 أو ارجع إليه إذا كنت قد حدّثت بالفعل، حتى صدور إصلاح v0.60.x يُعالج المشكلتين معًا. يُفصّل القسم التالي إجراء التحديث الآمن مع تثبيت الإصدار.
تحديث Changedetection.io بأمان — وتثبيت الإصدار
لا تستخدم وسم `latest` في بيئة الإنتاج أبدًا
يتتبع وسم latest تلقائيًا أحدث وسم منشور على Docker Hub. قد يُدخل تحديث صامت (Docker Watchtower، سحب تلقائي عند إعادة التشغيل) تراجعًا دون علمك. ثبّت دائمًا إصدارًا محددًا في ملف docker-compose.yml:
services:
changedetection:
image: dgtlmoon/changedetection.io:0.55.8حدّث الإصدار يدويًا وبوعي، بعد مراجعة سجل التغييرات على GitHub والمشكلات المفتوحة للإصدار المستهدف.
نسخ احتياطي من datastore قبل أي تحديث
تعيش جميع الإعدادات وسجل اللقطات في وحدة التخزين المُركّبة على /datastore. قبل تغيير الإصدار:
docker compose stop changedetection
cp -r /opt/changedetection/datastore /opt/changedetection/datastore.bak-$(date +%Y%m%d)تتيح لك هذه النسخة العودة إلى الحالة السابقة عند حدوث مشكلة، دون فقدان قواعد المراقبة أو سجلات اللقطات.
التحديث إلى إصدار محدد
عدّل ملف docker-compose.yml ليشير إلى الوسم الجديد، ثم اسحب الصورة وأعد التشغيل:
docker compose pull changedetection
docker compose up -d changedetectionتحقق أن الإصدار المعروض في Settings → General يطابق الإصدار الذي ثبّتّه. إذا لم يعمل شيء ما — زر Recheck معطوب أو توقف الفحوصات المجدولة — فلديك نسختك الاحتياطية للعودة الفورية.
الرجوع من v0.60.2 إلى v0.55.8
إذا حدّثت بالفعل إلى v0.60.2 وتلاحظ التراجعين الموصوفين أعلاه، إليك الإجراء:
docker compose stop changedetection
# عدّل image: إلى dgtlmoon/changedetection.io:0.55.8 في docker-compose.yml
docker compose pull changedetection
docker compose up -d changedetectionمخزن البيانات datastore متوافق بين الإصدارين: تُحفظ مراقباتك وفلاتركم وسجلات لقطاتكم.
اختر فترة فحص أطول (30 إلى 60 دقيقة) للمواقع العامة لتكون مواطنًا محترمًا على الويب وتتجنب التقييد بمعدل الطلبات أو الحجب بالـIP. فعّل خيار التوزيع العشوائي للتوقيت لتوزيع الفحوصات على كامل نافذة الفترة وتجنب استجواب الخادم الهدف في الثانية ذاتها في كل مرة. إذا كان الفحص يجب أن يكون متكررًا (كل 5 دقائق)، فضّل استهداف عنصر محدد جدًا عبر محدد CSS بدلًا من الصفحة بأكملها: يُسرّع ذلك حساب الفروقات ويُنتج نتائج إيجابية كاذبة أقل.