لماذا تستضيف أداة تحليل الويب بنفسك
مزايا التحليل ذاتي الاستضافة
- امتثال GDPR أصلي: لا نقل إلى أطراف ثالثة، لا حاجة لموافقة إذا لم يُستخدم ملف تعريف الارتباط
- بيانات تحت سيطرتك الكاملة: تصدير CSV/SQL في أي وقت، احتفاظ غير محدود
- تكلفة ثابتة: سعر خادم VPS لا يرتبط بعدد مشاهدات الصفحات
- سكريبت خفيف (أقل من 2 كيلوبايت): تأثير ضئيل على Core Web Vitals
- لا عينات: كل مشاهدة صفحة تُحسب، حتى عند الأحجام الكبيرة
- مفتوح المصدر: يمكن مراجعة الكود، لا اعتماد على مورد واحد
Plausible مقابل Umami: مقارنة المعايير الرئيسية
مرّر الجدول أفقيًا
| المعيار | Plausible 3.2 | Umami 3.4 |
|---|---|---|
| اللغة / المكدس | Elixir + ClickHouse | Node.js + PostgreSQL |
| قاعدة البيانات | ClickHouse (عمودية) | PostgreSQL فقط (تم إسقاط MySQL في v3) |
| الواجهة | مبسطة جدًا، صفحة واحدة | متعددة المواقع، لوحات قابلة للتخصيص |
| مسارات التحويل | غير متوفرة في Community Edition (في Plausible Cloud فقط) | نعم، عبر التقارير المخصصة |
| الأحداث المخصصة | نعم، مع API للخصائص | نعم، مع API + TypeScript SDK |
| خرائط الحرارة / تسجيل الجلسة | لا | نعم (تسجيل الجلسة منذ v3.1، خرائط الحرارة منذ v3.2، 2026) |
| التجزئة المتقدمة | فلاتر مدمجة | أجزاء الجلسة، فلاتر الخصائص |
| الحد الأدنى الموصى به من RAM | 2 غيغابايت (ClickHouse) | لا حد أدنى منشور (PostgreSQL، أخف) |
| الرخصة | AGPL-3.0 | MIT |
المتطلبات الأساسية حسب الأداة
يتطلب Plausible قاعدة بيانات ClickHouse العمودية المصممة للتحليلات. ClickHouse قوي لكنه يستهلك الذاكرة: خطط لـ 2 غيغابايت على الأقل، أو 4 غيغابايت لأداء مريح. يعمل Umami على PostgreSQL الأخف وزناً: خادم VPS صغير يكفي لحركة مرور معتدلة. إذا كان VPS يستضيف PostgreSQL بالفعل لتطبيق آخر، يندمج Umami دون موارد إضافية. اعتباراً من Umami v3، لم يعد MySQL مدعوماً.
نشر Plausible (أو Umami) على خادم VPS
استنساخ ملفات Docker Compose
استنسخ المستودع الرسمي (
plausible/community-editionبالإصدار v3.2.1 على الأقل، الذي يصلح الثغرة الحرجة CVE-2026-8467، أوumami-software/umami) ثم أنشئ ملف.env: لا يوفّر أيٌّ من المستودعين ملف.env.exampleتشغيل قاعدة البيانات
املأ المتغيرات الإلزامية:
BASE_URLوSECRET_KEY_BASE(Plausible) أوDATABASE_URLوAPP_SECRET(Umami)، مع توليد كل سرّ عبرopenssl rand -base64 48. يحتويdocker-compose.ymlالخاص بـ Umami علىAPP_SECRETوكلمة مرور PostgreSQL للمثال: استبدلهما بمتغيرات من.env(${APP_SECRET}) وانشر منفذه على127.0.0.1:3000:3000كي لا يصل إليه سوى nginxرفع المكدس بالكامل
docker compose up -d: تُنزَّل صور ClickHouse/PostgreSQL ويُهجَّر المخطط تلقائيًا؛ تحقّق من السجلات عبرdocker compose logs plausible(أوumami)إعداد nginx كـ reverse proxy
أضف vhost nginx يُوجّه
analytics.yourdomain.comإلى المنفذ المحلي للخدمة (127.0.0.1) ثم احصل على شهادة TLS عبر Let's Encrypt وتحقّق من تمرير ترويسةX-Forwarded-Forتضمين سكريبت التتبع
انسخ الوسم
<script>من لوحة التحكم وأضفه في<head>موقعك — بدون ملفات كوكيز. في Umami، غيّر أولًا كلمة مرور حسابadminالمُنشأ افتراضيًا
احظر الروبوتات في vhost nginx الخاص بأداة التحليل فقط، لا في vhost موقعك حيث ستحظر القاعدة Googlebot أيضًا، للحفاظ على إحصاءات نظيفة دون أي إعداد إضافي في جانب أداة التحليل.
شجرة القرار: Plausible أم Umami؟
اختر Plausible إذا…
- تريد واجهة يفهمها أي زميل في 5 دقائق دون تدريب
- فريقك لا يحتاج إلى تسجيل الجلسة أو خرائط الحرارة
- لديك 4 غيغابايت RAM على الأقل في الخادم
- تدير عدة مواقع من لوحة قيادة واحدة مبسطة
- لا تحتاج مسارات تحويل ولا تتبع إيرادات في الاستضافة الذاتية (غير متوفرة في Community Edition، وتقتصر على Plausible Cloud)
اختر Umami إذا…
- خادمك محدود الموارد (أقل من 2 غيغابايت RAM الموصى بها لـ Plausible) أو PostgreSQL مثبت مسبقًا
- تحتاج خرائط حرارة وتسجيل جلسة (منذ Umami 3.2، 2026)
- فريقك يبني تكاملات مخصصة عبر TypeScript SDK الرسمي
- تدير مواقع عديدة لعملاء مختلفين (متعدد المستأجرين نصيًا)
- تريد الاستعلام عن بياناتك بلغة طبيعية عبر مساعد ذكاء اصطناعي (MCP في Umami 3.4، يُفعَّل عبر
MCP_ENABLED=1في الاستضافة الذاتية)
الامتثال لـ GDPR واللوائح الأوروبية
كلتا الأداتين مصممتان للعمل بدون ملفات تعريف ارتباط التتبع وبدون تخزين عناوين IP الكاملة. يُجزّئ Plausible عنوان IP بملح يومي دوار ويتبنى Umami نهجاً مماثلاً، مما يضمن عدم وجود أي معرّف دائم من جهة الخادم. يتيح ذلك الاستغناء عن شريط موافقة الكوكيز لأغراض التحليل وحده — بشرط ألا يُدمج الكود مع متتبعين آخرين. تُعفي CNIL الفرنسية من الموافقة أدوات قياس الجمهور التي تخدم ناشر الموقع حصرًا، ولا تُنتج إلا إحصاءات مجهولة الهوية، ولا تسمح بمقاطعة البيانات مع معالجات أخرى ولا بنقلها إلى أطراف ثالثة ولا بتتبع الشخص من موقع إلى آخر. تحذير: يسقط الإعفاء في حال مقاطعة البيانات مع حلول إعلانية خارجية، كما يطرح خادم VPS خارج الاتحاد الأوروبي مسألة نقل البيانات التي ينظمها RGPD. ويبقى توثيق الاستضافة وسياسة الاحتفاظ إلزامياً.
الانتقال من Google Analytics 4
خطوات الانتقال من GA4 إلى Plausible أو Umami
تصدير سجل GA4 بصيغة CSV عبر التقارير أو Data API للأحجام الكبيرة — يستطيع Plausible استيراد سجل GA4 (في Community Edition بعد إعداد تكامل Google عبر
GOOGLE_CLIENT_IDوGOOGLE_CLIENT_SECRET)؛ أما مع Umami فاحتفظ بهذا التصدير أرشيفًاتشغيل سكريبت Plausible/Umami بالتوازي مع وسم GA4 لمدة 2–4 أسابيع لمقارنة المقاييس (الأرقام ستختلف: قد يأخذ GA4 عيّنات عند تجاوز حصصه، بينما يُحصي Plausible/Umami كل شيء)
التحقق من نقل الأحداث المخصصة الحيوية (النماذج، النقرات، عمليات الشراء) عبر
plausible('goal')أوumami.track()إزالة وسم GA4 وملف كوكيز
_gaبعد التحقق — تذكر تحديث سياسة الخصوصيةتوثيق المقاييس الجديدة في سجل المعالجة RGPD: الأساس القانوني (المصلحة المشروعة)، مدة الاحتفاظ، موقع الخادم
ستكون أرقام الزيارات غالبًا أعلى مع Plausible أو Umami مقارنةً بـ GA4 على الموقع نفسه: فهما لا يستخدمان الكوكيز ولا ينتظران موافقة الزائر، بينما لا يقيس GA4 بالكامل إلا من قبلوا ملفات تعريف الارتباط الخاصة به. يختلف الفارق من موقع لآخر حسب نسبة الموافقة لديك — هذا ليس خللًا، بل قياس بدون شريط موافقة.
الميزات المتقدمة: مسارات التحويل والأجزاء والأحداث وواجهة API
لدى Plausible، تقتصر مسارات التحويل متعددة الخطوات (سلسلة من عناوين URL أو الأحداث مع معدّل التحويل عند كل خطوة) وتتبع الإيرادات على العرض السحابي: لا تتضمنها Community Edition ذاتية الاستضافة. في المقابل، يتيح Plausible 3.2 (يناير 2026) حصر رابط المشاركة في جزء محدد، ويصلح الإصدار 3.2.1 (مايو 2026) الثغرة الحرجة CVE-2026-8467، وهو الحد الأدنى الواجب تثبيته. تستند التجزئة إلى مرشّحات مجتمعة (المصدر، الدولة، الجهاز، خصائص الأحداث) يمكن حفظها كأجزاء. تتيح واجهة الإحصاءات v2 (POST /api/v2/query) استخراج أي بُعد، أما النقطة القديمة /api/v1/stats/breakdown فقد صُنّفت «legacy». ذهب Umami 3.4 (سبتمبر 2026) إلى أبعد من ذلك بأجزاء الجلسة — تجمّع الزوار حسب خصائص الجلسة وتعيد تشغيل مساراتهم. أُضيف تسجيل الجلسة في Umami 3.1 (أبريل 2026) وخرائط الحرارة في Umami 3.2 (يونيو 2026) لتحليل السلوك بصرياً على الصفحة. يدعم Umami أيضاً «ربط الجلسات»: إذا عاد زائر عبر جهاز آخر وسجّل دخوله، يُدمج مساره في ملف تعريف واحد. مكتبة TypeScript @umami/api-client المولّدة من OpenAPI تسهّل الدمج في خطوط بيانات.
استكشاف الأخطاء الشائعة
المشكلات المتكررة وحلولها
- ClickHouse لا يبدأ (Plausible): تحقق من RAM المتاحة (
free -h) — توصي الجهة المطوِّرة بـ 2 غيغابايت RAM على الأقل لـ ClickHouse وPlausible، ويجب أن يدعم المعالج SSE 4.2 (أو NEON على ARM). أضف ملف مبادلة بحجم 2 غيغابايت إذا كان الخادم ضيقًا:fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile - تهجيرات Umami متوقفة: إذا رفض التطبيق البدء بعد تحديث مع خطأ
relation does not exist، أعد تشغيل الحاوية (docker compose restart umami): عند البدء يطبّق Umami بنفسه تهجيرات Prisma المعلّقة (prisma migrate deploy)؛ راجعdocker compose logs umamiلتحديد التهجير الذي يفشل - مشاهدات الصفحات لا تُسجَّل: تحقق من أن رأس CSP الخاص بموقعك يسمح بنطاق أداة التحليل (
script-src 'self' https://analytics.yourdomain.com). قد تحجب وحدات حظر الإعلانات السكريبت أيضاً، وهو أمر متوقع. - خطأ ClickHouse بعد إعادة تشغيل قسري: إذا أبلغ ClickHouse عن جدول تالف، حدّد الجدول المعني في
docker compose logs plausible_events_dbثم استعلم عنsystem.detached_partsعبرclickhouse-client، الذي يسرد الأجزاء المفصولة وسبب فصلها؛ وإن نقصت بيانات فاستعد آخر نسخة احتياطية - Umami v3 بعد الانتقال من MySQL: صدّر جميع البيانات أولًا (CSV أو dump SQL)، فزوّد PostgreSQL، ثم أعد الاستيراد باتباع الدليل الرسمي للانتقال من MySQL إلى PostgreSQL في توثيق Umami
النسخ الاحتياطي واستعادة بيانات التحليل
استراتيجية النسخ الاحتياطي لـ Plausible وUmami
Plausible / ClickHouse: استخدم
clickhouse-backup(صورةaltinity/clickhouse-backupفي حاوية مجاورة تصل إلى حجم بيانات ClickHouse) أو صدّر الجداول الحيوية بصيغة Parquet عبرdocker compose exec -T plausible_events_db clickhouse-client --query "SELECT * FROM plausible_events_db.events_v2 FORMAT Parquet" > events.parquet. احتفظ بالنسخة في تخزين الكائنات.Umami / PostgreSQL:
pg_dumpالكلاسيكي يكفي —docker compose exec db pg_dump -U umami umami > umami_$(date +%Y%m%d).sql. جدوله يوميًا عبر cron وأرسله إلى تخزين خارجياختبر الاستعادة مرة كل ربع سنة على خادم تجريبي:
docker compose exec -T db psql -U umami umami < umami_backup.sqlلـ Plausible، احتفظ بنسخة احتياطية من حجم Docker الخاص بـ PostgreSQL التطبيقي (منفصل عن ClickHouse)
وثّق إجراء الاستعادة في دليل التشغيل — النسخة الاحتياطية غير المختبرة ليست نسخة احتياطية