أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول
How To Make It

اعمل Self-Hosted Analytics بـ Umami و Postgres: بديل Google Analytics بدون كوكيز في 10 دقايق

📅 ٨ مايو ٢٠٢٦⏱ 6 دقائق قراءة
اعمل Self-Hosted Analytics بـ Umami و Postgres: بديل Google Analytics بدون كوكيز في 10 دقايق

مستوى المقال: مبتدئ. لو ركّبت Docker مرة وفتحت ملف .env قبل كده، هتقدر تكمّل المقال ده من غير ما تستعين بحد.

هتشغّل تحليلات كاملة لموقعك على VPS بـ $5 شهرياً، بدون كوكيز، بدون banner GDPR، وبتشوف أول pageview جوّا الـ dashboard في 10 دقايق فعلية.

اعمل تحليلات موقع ذاتية الاستضافة بـ Umami بدل Google Analytics

لابتوب يعرض لوحة تحليلات Umami الذاتية الاستضافة مع رسوم بيانية لزوار الموقع وأوقات الذروة

المشكلة باختصار

Google Analytics 4 بيخزّن بيانات زوارك على سيرفرات Google، بيلزمك بـ banner cookies ضخم، وبيبدأ يسامبل البيانات بمجرد ما الموقع يعدّي 10 مليون event شهرياً. على ده كله، أحكام جهات حماية البيانات في النمسا وفرنسا (2022–2023) اعتبرت GA4 مخالف لـ GDPR في حالات معيّنة بسبب نقل البيانات الشخصية لـ US.

Umami بيدّيك نفس الـ pageviews والـ events والـ referrers، شغّال على Postgres بتاعك انت، بدون أي cookie واحد، وبيتركّب في 10 دقايق بـ docker compose واحد.

Umami بالظبط بيعمل إيه

مثال للمبتدئ

تخيّل عندك دكان وعايز تعرف كل يوم: كم زبون دخل، جاي منين، اشترى ولا لأ. قدّامك خياران. الأول: تحط كاميرا تصوّر وش كل واحد وتربط الصورة باسمه — ده Google Analytics مع الكوكيز. الثاني: تحط عدّاد عند الباب يعدّ كل اللي يدخلوا ويسجّل أول مكان جاي منه الزبون، بدون ما يعرف هو مين شخصياً ولا يخزّن صورته — ده Umami. الاتنين بيدّوك نفس قرار العمل تقريباً، بس التاني مش محتاج موافقة الزبون قبل ما يدخل.

التعريف العلمي

Umami محرّك مفتوح المصدر مكتوب بـ Next.js + Prisma + PostgreSQL/MySQL. بيستخدم تقنية اسمها fingerprintless tracking: لكل زائر بيتولّد session salt مشتق من IP + User-Agent + tenant secret، والـ salt ده بيتغيّر تلقائياً كل 24 ساعة. النتيجة: تقدر تعرف إن نفس الشخص فتح 4 صفحات في نفس اليوم، لكن مفيش طريقة تربط زيارة النهارده بزيارة بكره. ده اللي بيخلّيه متوافق تلقائياً مع GDPR و ePrivacy و CCPA بدون أي banner، حسب توثيق Umami الرسمي v2.

الـ Stack المطلوب

  • VPS صغير: 1 vCPU + 1GB RAM (Hetzner CX22 ≈ €4.5/شهر، أو DigitalOcean basic $6).
  • Docker و Docker Compose مركّبين على Ubuntu 24.04.
  • Subdomain زي analytics.yoursite.com.
  • NGINX مع Certbot (Let's Encrypt) للـ HTTPS.
حاويات Docker تشغّل خدمة Umami بجانب قاعدة بيانات PostgreSQL على خادم ذاتي الاستضافة

7 خطوات لتركيب Umami

  1. اعمل فولدر للمشروع على VPS واتنقل جوّه:

    Bash
    mkdir -p /opt/umami && cd /opt/umami
  2. اكتب docker-compose.yml بالـ stack الكامل:

    YAML
    services:
      umami:
        image: ghcr.io/umami-software/umami:postgresql-v2.13.1
        ports: ["3000:3000"]
        environment:
          DATABASE_URL: postgresql://umami:${DB_PASS}@db:5432/umami
          DATABASE_TYPE: postgresql
          APP_SECRET: ${APP_SECRET}
        depends_on:
          db: { condition: service_healthy }
        restart: unless-stopped
    
      db:
        image: postgres:16-alpine
        environment:
          POSTGRES_DB: umami
          POSTGRES_USER: umami
          POSTGRES_PASSWORD: ${DB_PASS}
        volumes: ["./pgdata:/var/lib/postgresql/data"]
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U umami"]
          interval: 5s
        restart: unless-stopped
  3. اكتب ملف .env بأسرار قوية (متخليش الباسورد افتراضي):

    Bash
    cat > .env <<EOF
    DB_PASS=$(openssl rand -hex 24)
    APP_SECRET=$(openssl rand -hex 32)
    EOF
    chmod 600 .env
  4. شغّل الـ stack وراقب اللوج:

    Bash
    docker compose up -d
    docker compose logs -f umami
    # لازم تشوف: ready - started server on 0.0.0.0:3000
  5. اربط NGINX على الـ subdomain:

    server {
        server_name analytics.yoursite.com;
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    وبعدين شغّل certbot --nginx -d analytics.yoursite.com علشان HTTPS تلقائي يتجدّد كل 60 يوم.

  6. سجّل دخول لأول مرة: افتح https://analytics.yoursite.com. اليوزر الافتراضي admin والباسورد umami. غيّر الباسورد فوراً من Profile → Change password قبل ما تكمّل خطوة واحدة.

  7. ضيف موقعك واحصل على tracking script: من Settings → Websites → Add website، Umami بيدّيك سطر زي ده:

    HTML
    <script defer src="https://analytics.yoursite.com/script.js"
            data-website-id="b3f5e8a9-1c2d-4e6f-9a0b-1234567890ab"></script>

    الصقه في <head> أي صفحة في موقعك. خلال دقيقتين هتلاقي أول pageview ظهر فعلاً في الـ dashboard.

أرقام حقيقية بعد شهر تشغيل

على موقع شخصي بيستقبل 12,000 pageview شهرياً، الاستهلاك المقاس على Hetzner CX22:

  • RAM: 280MB في الذروة (Umami) + 120MB (Postgres) = 400MB من الـ 1GB.
  • CPU: 4% متوسط، 18% في الذروة لمدة 30 ثانية.
  • تخزين Postgres: 14MB لـ 12K event، يعني نمو خطّي تقريباً 1.2KB لكل event.
  • زمن استجابة الـ tracking script: P95 = 38ms من أوروبا، 110ms من الخليج.
  • الفاتورة الكاملة: €4.5 VPS + €0 subdomain فرعي = أقل من $5 شهرياً.

trade-offs لازم تعرفها قبل ما تركّب

  • بتكسب: ملكية كاملة للبيانات، صفر cookies، صفر banner GDPR، API REST جاهز للاستعلام، الزوار اللي عندهم AdBlock بيعدّوا (لأن دومين الـ tracking بتاعك انت، مش google-analytics.com).
  • بتخسر: مفيش audience demographics ولا attribution paths زي GA. لو مهتم بـ "زائر شاف 3 صفحات قبل ما يشتري"، Umami يدّيك ده. لو مهتم بـ "زائر دخل من Facebook ad في يناير ورجع من Google search في مارس"، مش هيدّيك ده.
  • صيانة: لازم تعمل docker compose pull && docker compose up -d كل شهرين علشان تواكب أمن Postgres + Umami.
  • backup: pg_dump يومي ضروري. غير كده فقدان VPS = فقدان كل تاريخ الزوار. الباك أب على B2 أو S3 بيكلّفك سنتات شهرياً.

متى لا تستخدم Umami

لو فريق التسويق بتاعك معتمد بشكل أساسي على Google Ads conversion tracking أو Meta Pixel، Umami مش هيعوّض ده — هتحتاجهم برضه جنبه. كمان لو بتشغّل e-commerce محتاج funnel analysis معقّد بـ 8 خطوات أو cohort retention بنفس عمق Mixpanel، Umami v2 لسه أبسط من اللازم. الافتراض إن استخدامك في حدود pageviews + custom events + UTM tracking — لو خرجت بره ده، PostHog self-hosted خيار أنسب رغم استهلاكه ~3GB RAM وتعقيد التركيب.

الخطوة التالية

بعد ما الـ tracking script يبعت أول event، افتح Reports → Insights وضيف custom event واحد لزر مهم في موقعك (اشتراك، تحميل، إضافة لسلة) باستخدام السطر ده على الزر:

HTML
<button data-umami-event="signup_click">اشتراك</button>

ده هيدّيك أول conversion metric حقيقي مش بس pageviews. لو الـ dashboard ما ظهرتش بيانات بعد 5 دقايق، افحص docker compose logs umami ودوّر على سطر فيه POST /api/send — لو مش موجود، الـ tracking script مش بيوصل أصلاً (غالباً CORS أو CSP في موقعك).

المصادر

  • Umami v2 Documentation — توثيق رسمي للـ fingerprintless tracking ومنهجية الـ session salt: https://umami.is/docs
  • Umami GitHub Repository (release v2.13) — صورة الـ Docker الرسمية و schema الـ Postgres: https://github.com/umami-software/umami
  • Hetzner Cloud CX22 spec sheet — التسعير الفعلي للـ VPS المستخدم في القياسات: https://www.hetzner.com/cloud
  • Austrian Data Protection Authority ruling on Google Analytics (DSB-D155.027/0003-DSB/2021) — السابقة القانونية اللي خلّت الشركات الأوروبية تدوّر على بدائل: https://noyb.eu/en/austrian-dsb-eu-us-data-transfers-google-analytics-illegal
  • PostgreSQL 16 official Docker image — الإصدار المستخدم في الـ stack: https://hub.docker.com/_/postgres
  • Let's Encrypt with Certbot + NGINX — التوثيق الرسمي لتفعيل HTTPS تلقائي: https://certbot.eff.org/instructions

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة