لماذا تستضيف لوحات ذكاء الأعمال ذاتياً
أدوات ذكاء الأعمال المُستضافة مريحة إلى أن تصل فاتورة كل مقعد — وإلى أن تدرك أن بيانات منتجك وإيراداتك وعملائك يجري نسخها إلى خدمة SaaS من طرف ثالث مُسعّرة بالدولار. يقلب Metabase ذلك: فهو مفتوح المصدر (AGPL)، وقابل للاستضافة الذاتية، ويتصل بقاعدة بيانات تملكها بالفعل. شغّله على خادم VPS خلف نطاقك الخاص فلا تغادر طبقة تحليلاتك خادمك أبداً. تدفع تكلفة شهرية ثابتة لخادم VPS، لا اشتراكاً متزايداً لكل مستخدم، وتبقى بياناتك على بنية تحتية تتحكم فيها — وهو ما يعني أيضاً لفريق مغربي سيادةً على البيانات، لا مركز بيانات في قارة أخرى.
ما الذي يمنحك إياه Metabase
- منشئ استعلامات مرئي يتيح للمستخدمين غير التقنيين إنشاء الرسوم والأسئلة بالنقر — مع محرّر SQL كامل للمحلّلين.
- لوحات تفاعلية بمرشّحات، وتنقّل تفصيلي (drill-through)، وتحديث مجدوَل.
- موصّلات لأكثر من 20 قاعدة بيانات: PostgreSQL وMySQL/MariaDB وSQL Server وClickHouse وBigQuery وRedshift وSnowflake وغيرها.
- اشتراكات مجدوَلة وتنبيهات عتبة تُرسَل إلى البريد الإلكتروني أو Slack.
- أذونات على مستوى المجموعة والمجموعة (collection) مع ضوابط على مستوى الصف/العمود بحيث يرى كل فريق بياناته فقط.
- تحليلات مُضمّنة لإدراج لوحات موقّعة ومرشّحة داخل تطبيقك الخاص.
- مفتوح المصدر برخصة AGPL — لا رسوم لكل مقعد، وحالته الخاصة مخزّنة في قاعدة بيانات Postgres تملكها.
المتطلبات
خادم VPS بنظام Ubuntu 22.04 (أو Debian 12) مع تثبيت Docker. يعمل Metabase على JVM، فامنحه مجالاً: 2 GB من الذاكرة هي الحدّ الأدنى الواقعي، و4 GB مريحة لفريق صغير. يتكوّن النشر من حاويتين — Metabase نفسه وقاعدة postgres:16 مرافقة تخزّن البيانات الوصفية الخاصة بـ Metabase (المستخدمون، اللوحات، الأسئلة المحفوظة). لا يلزم نطاق بشكل صارم — يستجيب Metabase على المنفذ 3000 عبر عنوان IP الخاص بخادمك — لكنك ستحتاج إلى وكيل عكسي من أجل HTTPS في الإنتاج.
انشر Metabase على خادم VPS الخاص بك
أنشئ حُزمة docker-compose
ينبغي أن يخزّن Metabase حالته الخاصة في قاعدة بيانات فعلية، لا في ملف H2 المدمج الافتراضي. أنشئ ملف docker-compose.yml بخدمتين: metabase/metabase:v0.62.3.6 وقاعدة postgres:16 مرافقة. اربط Metabase بـ Postgres عبر MB_DB_TYPE=postgres وMB_DB_HOST=metabase-db وMB_DB_DBNAME=metabaseappdb وMB_DB_PORT=5432 وMB_DB_USER=metabase وكلمة MB_DB_PASS قوية. استخدم كلمة المرور نفسها لـ POSTGRES_PASSWORD الخاصة بحاوية Postgres، وحمّل حجماً مُسمّى لـ /var/lib/postgresql/data، واضبط restart: unless-stopped على كلتيهما.
شغّلها وانتظر الإقلاع
شغّل docker compose up -d. عند أول تشغيل، يشغّل Metabase عمليات ترحيل قاعدة بياناته على Postgres، وهو ما يستغرق 60–120 ثانية على خادم VPS صغير — وهذا طبيعي. استقصِ الجاهزية عبر curl -f http://localhost:3000/api/health؛ وبمجرد أن يُعيد {"status":"ok"} يكون التطبيق جاهزاً. تربط حُزمة compose تشغيل Metabase بفحص صحة Postgres بحيث لا يبدأ التطبيق أبداً قبل أن تكون قاعدة بياناته جاهزة.
أكمِل معالج الإعداد
افتح http://<your-server-ip>:3000. يعيد Metabase التوجيه إلى معالج الإعداد: أنشئ حساب المسؤول، ثم اربط قاعدة البيانات التي تريد تحليلها فعلاً — عادةً PostgreSQL أو MySQL الخاصة بتطبيقك، ويُفضّل نسخة قراءة (read replica) بحيث لا تصيب استعلامات التحليلات قاعدتك الأساسية للإنتاج أبداً. يفحص Metabase المخطّط وتصبح جداولك جاهزة للاستعلام في ثوانٍ.
ابنِ لوحة
أنشئ سؤالين أو ثلاثة عبر منشئ الاستعلامات المرئي (عدّ عبر الزمن، وتفصيل حسب الفئة)، واحفظها في مجموعة (collection)، وثبّتها على لوحة مع مرشّح تاريخ. بدّل أي سؤال إلى محرّر SQL الأصلي عندما تحتاج إلى تحكّم كامل. أعِدّ اشتراك بريد إلكتروني أو Slack ليُسلَّم إليك محتوى اللوحة وفق جدول زمني.
أضِف HTTPS وأحكِم إغلاقه
ضَع Metabase خلف وكيل عكسي للحصول على نطاق حقيقي وشهادة. مع Caddy: apt install caddy، ثم ملف /etc/caddy/Caddyfile يحتوي على bi.yourdomain.com { reverse_proxy localhost:3000 } وsystemctl reload caddy للحصول على شهادة Let's Encrypt تلقائية. وجّه سجل DNS من نوع A لـ bi.yourdomain.com إلى خادم VPS الخاص بك أولاً، وقيّد المنفذ 3000 عبر ufw allow from <proxy> to any port 3000، واضبط كلمة مرور مسؤول قوية — فأي شخص يستطيع تسجيل الدخول يمكنه الاستعلام عن كل قاعدة بيانات متصلة.
أول تسجيل دخول
افتح العنوان مباشرة بعد التثبيت: يعرض Metabase شاشة ترحيب ثم زر «Let's get started»، وينشئ لك حسابًا انطلاقًا من اسمك وبريدك الإلكتروني وكلمة المرور التي تختارها — ويكون هذا الحساب الأول مديرًا تلقائيًا.
وجّه Metabase إلى نسخة قراءة، لا إلى قاعدتك الأساسية
قد تكون استعلامات التحليلات ثقيلة. اربط Metabase بنسخة قراءة (read replica) أو بقاعدة بيانات تقارير مخصّصة بدلاً من قاعدتك الأساسية للإنتاج، بحيث لا يُبطئ استعلام لوحة بطيء تطبيقك الحيّ أبداً. على خادم VPS واحد يمكنك تشغيل نسخة قراءة خفيفة في حاويتها الخاصة على شبكة Docker الخاصة نفسها — يصل إليها Metabase عبر اسم الخدمة وتبقى قاعدتك الأساسية دون مساس.