ما يتيحه PostHog ولا تتيحه بدائل SaaS
Mixpanel وAmplitude وHeap أدوات سحابية: بياناتك تنتقل إلى خوادمهم، وسياسة الاستبقاء لديهم تُحدّد ما يمكنك الاحتفاظ به، والتأخير التلقائي يُفعَّل تلقائيًا فور تجاوز حجمك حدودًا معيّنة. PostHog المستضاف ذاتيًا يُزيل هذه القيود الثلاث. تبقى الأحداث في قاعدة بيانات ClickHouse الخاصة بك، على قرصك أو مخزن الكائنات — لا نسخة تغادر بنيتك التحتية. الاستبقاء غير محدود: أنت تقرّر متى تحذف البيانات القديمة. لا يوجد تأخير: كل حدث يُسجَّل حتى خلال ذروات الحركة. أضف إلى ذلك التوافق مع RGPD دون التفاوض على DPA مع طرف ثالث، وإمكانية تعديل الكود المصدري، والوصول المباشر إلى البيانات الخام في ClickHouse لتحليلات SQL الخاصة بك.
مقارنة سريعة: PostHog المستضاف ذاتيًا مقابل Mixpanel Cloud
مرّر الجدول أفقيًا
| المعيار | PostHog المستضاف ذاتيًا | Mixpanel Cloud |
|---|---|---|
| التكلفة الشهرية (مليون حدث/شهر) | ~15–20$ (تكلفة VPS) | ~25–100$+ |
| البيانات مستضافة لديك | نعم | لا |
| التوافق مع RGPD المبسَّط | نعم (لا DPA لطرف ثالث) | جزئي (DPA مطلوب) |
| التأخير التلقائي | لا يوجد | يُفعَّل بعد الطبقات |
| تسجيلات الجلسات مضمّنة | نعم | خيار مدفوع |
| رايات الميزات واختبار A/B | نعم، مضمّن | مدفوع (خطة Growth+) |
| وصول SQL الخام إلى البيانات | نعم (ClickHouse مباشر) | لا |
متطلبات الخادم
يُشغِّل PostHog كلًّا من ClickHouse وKafka وRedis وPostgreSQL ضمن نفس حزمة Docker Compose. إنّه الحلّ الأكثر استهلاكًا للموارد في هذه الفئة، وسوء تحديد حجم VPS يتسبّب في تعطّل ClickHouse أو انتهاء مهلة Kafka منذ أولى الأحداث. خطّط بحدٍّ أدنى لـ4 vCPU و8 غيغابايت RAM للاستخدام الخفيف (أقل من مليون حدث شهريًا). للحمل الأثقل — من 1 إلى 5 ملايين حدث شهريًا — استهدف 8 vCPU و16 غيغابايت RAM. على صعيد التخزين، ClickHouse فعّال جدًا في الضغط، لكنّ تسجيلات الجلسات تتراكم سريعًا: خصّص 50 غيغابايت SSD على الأقل، وأضف مخزن كائنات خارجيًا (S3 أو MinIO) فور تفعيل التسجيلات. على صعيد البرمجيات: Docker Engine 24+ وDocker Compose v2، واسم نطاق بسجلّ A يشير إلى VPS، والمنفذان 80 و443 مفتوحان في جدار الحماية.
تثبيت PostHog بـDocker Compose
تثبيت Docker على VPS
اتصل عبر SSH، ثمّ ثبّت Docker بالسكربت الرسمي:
curl -fsSL https://get.docker.com | sh. أضف مستخدمك إلى مجموعة docker لتجنّب sudo:usermod -aG docker $USER. تحقّق بـdocker compose versionمن توفّر Compose v2.استنساخ مستودع PostHog وتجهيز البيئة
استنسخ المستودع الرسمي:
git clone https://github.com/PostHog/posthog.git && cd posthog. انسخ ملف البيئة النموذجي:cp .env.example .env. افتح.envفي محرّر لضبط المتغيّرات الأساسية.ضبط متغيّرات البيئة
في
.env، حدّد كحدٍّ أدنى: SECRET_KEY(ولّد مفتاحًا عشوائيًا بـ50 حرفًا:python3 -c "import secrets; print(secrets.token_hex(25))"),SITE_URL=https://posthog.your-domain.com،DISABLE_SECURE_SSL=false(أوtrueللاختبار المحلي عبر HTTP). أبقِ قيمPOSTGRES_*وREDIS_*وCLICKHOUSE_*افتراضية لنشر بسيط.تشغيل الحزمة وانتظار الترحيل
شغّل جميع الخدمات في الخلفية:
docker compose -f docker-compose.yml up -d. في المرّة الأولى، يُشغِّل PostHog تلقائيًا عمليات ترحيل قاعدة البيانات — يستغرق ذلك من 2 إلى 5 دقائق. تابع التقدّم بـdocker compose logs -f webحتى ترىPostHog server is now listening on port 8000.الوصول إلى الواجهة وإنشاء حسابك
انتقل إلى
http://localhost:8000(أو عبر نطاقك إذا كان DNS مهيَّأً بالفعل). يرشدك معالج الإطلاق الأول لإنشاء حساب المسؤول، وتسمية مؤسّستك، وإنشاء مشروعك الأول. دوّن Project API Keyالمعروض — ستحتاجه لتوصيل حزمة SDK.
إعداد وكيل عكسي nginx لـHTTPS
تثبيت nginx وCertbot
على الجهاز المضيف (خارج Docker):
apt install -y nginx certbot python3-certbot-nginx. تأكّد من أنّ نطاقكposthog.your-domain.comيشير فعلًا إلى IP الـVPS قبل هذه الخطوة — يحتاج Certbot للتحقّق عبر HTTP.إنشاء vhost لـnginx
أنشئ
/etc/nginx/sites-available/posthogبالمحتوى:server { listen 80; server_name posthog.your-domain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }. فعّله:ln -s /etc/nginx/sites-available/posthog /etc/nginx/sites-enabled/.إصدار شهادة TLS
شغّل
certbot --nginx -d posthog.your-domain.com. يعدّل Certbot تلقائيًا ملف vhost لإعادة توجيه HTTP إلى HTTPS ويهيّئ التجديد التلقائي. اختبر التجديد بـcertbot renew --dry-run.إعادة تحميل nginx والتحقّق
طبّق الإعداد:
nginx -t && systemctl reload nginx. افتحhttps://posthog.your-domain.comفي المتصفّح — يجب أن تظهر واجهة PostHog بشهادة صالحة. حدّثSITE_URLفي.envإن لزم، ثمّ أعد تشغيل خدمة الويب:docker compose restart web.
مخزن الكائنات لتسجيلات الجلسات (S3 أو MinIO)
لماذا مخزن الكائنات ضروري
تُولِّد تسجيلات الجلسات ملفّات صغيرة كثيرة (واحد لكلّ مقطع جلسة). تخزينها على قرص VPS المحلّي يملأ SSD بسرعة ويُعقِّد النسخ الاحتياطية. مخزن كائنات متوافق مع S3 — سواء كان AWS S3 أو Cloudflare R2 أو MinIO المستضاف ذاتيًا — يُخرِّج هذا التخزين بمرونة.
نشر MinIO على نفس VPS (خيار الاستضافة الذاتية)
إذا لم تُرِد الاعتماد على خدمة خارجية، أضف MinIO إلى
docker-compose.yml:minio: image: minio/minio environment: MINIO_ROOT_USER: posthog MINIO_ROOT_PASSWORD: كلمة-مرور-قوية command: server /data --console-address ':9001' volumes: - ./minio-data:/data. ثمّ أنشئ حاوية باسمposthogفي لوحة MinIO (المنفذ 9001).ضبط متغيّرات بيئة PostHog
في
.env، أضف:OBJECT_STORAGE_ENABLED=true،OBJECT_STORAGE_ENDPOINT=http://minio:9000(أو عنوان حاوية S3)،OBJECT_STORAGE_ACCESS_KEY_ID=posthog،OBJECT_STORAGE_SECRET_ACCESS_KEY=كلمة-مرور-قوية،OBJECT_STORAGE_BUCKET=posthog. أعد تشغيل الحزمة:docker compose up -d.التحقّق بأول تسجيل جلسة
في إعدادات مشروع PostHog، فعّل «Session recording». تصفّح تطبيقك بضع ثوان، ثمّ ارجع إلى PostHog تحت «Session Recordings». يجب أن يظهر تسجيل خلال دقائق. تحقّق في MinIO (أو S3) من إنشاء ملفّات في الحاوية.
إرسال أول أحداث من تطبيقك
تثبيت حزمة SDK لـJavaScript
في مشروعك الأمامي:
npm install posthog-js. إذا كنت تستخدم إطار عمل مثل React أو Vue أو Next.js، استورد PostHog وهيّئه مرّة واحدة على مستوى جذر التطبيق.التهيئة بمفتاح مشروعك وعنوان نسختك
أضف التهيئة:
import posthog from 'posthog-js'; posthog.init('phc_YOUR_PROJECT_API_KEY', { api_host: 'https://posthog.your-domain.com', autocapture: true });. استبدل phc_YOUR_PROJECT_API_KEYبالمفتاح الظاهر في إعدادات مشروع PostHog. معautocapture: true، يُسجِّل PostHog تلقائيًا النقرات وإرسال النماذج وتغييرات الصفحة.التقاط أحداث مخصّصة
لحدث أعمال محدّد، استدعِ:
posthog.capture('order_placed', { amount: 49.90, currency: 'USD', product: 'vps-cloud-4vcpu' });. ستكون الخصائص المرتبطة بالحدث متاحة في مسارات التحويل والمجموعات وأسئلة SQL لـClickHouse.التحقّق في لوحة التحكّم
انتقل في PostHog إلى «Activity» أو «Events». تظهر الأحداث في شبه الوقت الفعلي (بضع ثوانٍ من الكمون). إذا لم يصل شيء بعد دقيقتين، تحقّق من أنّ
api_hostفي التهيئة يطابق تمامًا URL نسختك، وأنّ شهادة TLS صالحة.
تفعيل رايات الميزات
تتيح رايات الميزات طرح ميزة تدريجيًا — أولًا لـ5% من المستخدمين، ثمّ 20%، ثمّ 100% — دون إعادة تجميع التطبيق أو نشره. في PostHog، انتقل إلى «Feature Flags» وأنشئ علمًا جديدًا بمفتاح (my-new-module)، وشرط طرح (نسبة أو مجموعة مستخدمين)، وبدائل اختيارية لاختبار A/B حقيقي. على صعيد JavaScript، قيّم العلم: if (posthog.isFeatureEnabled('my-new-module')) { /* عرض الميزة الجديدة */ }. للتقييم من جانب الخادم (Python أو Node.js)، استخدم حزمة SDK الخلفية المقابلة بنفس PROJECT_API_KEY — يجري التقييم حينئذٍ دون ذهاب-إياب للعميل، تجنّبًا للوميض. يُسجِّل PostHog تلقائيًا حدثًا $feature_flag_called عند كلّ تقييم، ممّا يُتيح ربط تفعيل علم بأيّ مقياس في لوحتك.
نصيحة أداء: عطّل تسجيلات الجلسات عند الإطلاق
إذا كان VPS الخاص بك مهيَّأً بالحدّ الأدنى من 4 vCPU و8 غيغابايت RAM، تستهلك تسجيلات الجلسات موارد ClickHouse كبيرة منذ أولى ساعات الحركة. التوصية: أبقِ التسجيلات معطّلة لأوّل 30 يومًا. هذا يمنحك الوقت للتحقّق من استقرار الحزمة، وضبط إعدادات مخزن الكائنات، وزيادة RAM إن لزم. فعّلها بعد ذلك في إعدادات المشروع — ستُلتقَط جميع التسجيلات المستقبلية، ويمكنك تحديد معدّل عيّنة لتسجيل نسبة فقط من الجلسات للتحكّم في التخزين.
تحديث PostHog
يُصدر فريق PostHog تحديثات منتظمة. للتحديث: git pull origin master في دليل المستودع، ثمّ docker compose pull لجلب الصور الجديدة، ثمّ docker compose up -d. تُشغَّل ترحيلات قاعدة البيانات تلقائيًا عند إعادة تشغيل خدمة الويب — انقطاع قصير لبضع عشرات من الثواني أمر طبيعي. راجع ملاحظات الإصدار قبل كلّ تحديث رئيسي: تشترط بعض الإصدارات تحديثًا وسيطًا (لا تخطّ الإصدارات).
الوثائق الرسمية
يغطّي هذا الدليل التثبيت الأساسي على VPS. للمواضيع المتقدّمة — تكرار ClickHouse، وSSO SAML، والـwebhooks، وتكاملات data warehouse، وخيارات إعداد Kafka — ارجع إلى الوثائق الرسمية لـPostHog. تبقى المرجع للتحديثات الكبرى وحالات الاستخدام الخاصة.