پرش به مطلب اصلی
افزودن پراکسی معکوس برای Metabase

افزودن پراکسی معکوس برای Metabase

بازارچه ابریخواندن 7 دقیقه

Metabase یک MCP Server داخلی دارد که Claude یا سایر ارائه‌دهندگان هوش مصنوعی می‌توانند از طریق آن، بدون جابه‌جایی داده‌ها، مستقیماً روی داده‌های متابیس کوئری اجرا کنند.

برای اتصال، ابتدا MCP Server از مسیر Admin → AI → MCP در پنل مدیریت متابیس فعال می‌شود:

سپس در Claude (یا هر کلاینت مشابه)، از بخش Connectors و صفحه‌ی Connector متابیس، گزینه‌ی Connect to Claude انتخاب می‌شود:

در پنجره‌ی بازشده، دامنه‌ی MCP Server در فیلد Server URL وارد و اتصال تأیید می‌شود:

با توجه به محدودیت‌های مرتبط با شبکه و تحریم‌ها، اتصال ارائه‌دهندگان هوش مصنوعی به این دامنه به‌صورت پیش‌فرض برقرار نیست و خطای زیر نمایش داده می‌شود:

برای حل این مشکل، اتصال باید از بیرون شبکه‌ی محدود و از طریق یک پراکسی معکوس برقرار شود. در این راهنما، استقرار Nginx به‌عنوان یک اپ داکری در دارکوب و پیکربندی آن به‌صورت قدم‌به‌قدم نشان داده می‌شود:

  1. اپ Nginx در دارکوب ساخته و پیکربندی می‌شود.
  2. متغیر MB_SITE_URL روی سرویس متابیس تنظیم می‌شود.
  3. اتصال در Claude با دامنه‌ی پروکسی بررسی می‌شود.

گام اول: پیکربندی Nginx در دارکوب​

از پنل محصول دارکوب، گزینه ساخت اپ و سپس داکر ایمیج انتخاب می‌شود:

فیلدمقدار
آدرس ایمیجnginx
تگ ایمیج1.29

اطلاعات عمومی​

در تب اطلاعات عمومی، نام اپ و پورت سرویس به این ترتیب وارد می‌شود:

فیلدمقدار
نام اپmetabase-mcp-proxy
پورت سرویس80
دستور اجراییخالی
ورودی‌هاخالی

یک HTTP readiness probe روی مسیر /healthz تعریف می‌شود (این مسیر در ادامه ساخته می‌شود).

دامنه​

سپس دامنه‌ی دلخواه به اپ متصل و HTTPS معتبر در سطح Ingress فعال می‌شود؛ در این راهنما برای مثال از دامنه‌ی <my-mcpserver>.darkube.ir استفاده شده است. پایان‌دهی TLS (TLS Termination) توسط Ingress انجام می‌شود و Nginx صرفاً روی HTTP و پورت 80 گوش می‌دهد:

تنظیمات پیشرفته (Custom Config)​

در تب تنظیمات پیشرفته (Custom Config)، محتوای زیر وارد و ذخیره می‌شود. این ساختار، فرمت مخصوص Custom Config دارکوب است و یک مانیفست کامل ConfigMap کوبرنتیز نیست؛ جزئیات بیشتر در مستند Custom Config آمده است. این پیکربندی کل دایرکتوری /etc/nginx/conf.d را جایگزین می‌کند:

configmap:
configmapItems:
nginx-config:
path: /etc/nginx/conf.d
value:
default.conf: |-
server {
listen 80;
server_name <my-mcpserver>.darkube.ir;

server_tokens off;

access_log /dev/stdout;
error_log /dev/stderr warn;

client_max_body_size 10m;

location = /healthz {
access_log off;
default_type text/plain;
return 200 "ok\n";
}

location / {
proxy_pass https://<metabase-domain>;

proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host <metabase-domain>;

proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_ssl_server_name on;
proxy_ssl_name <metabase-domain>;

proxy_buffering off;
proxy_cache off;

proxy_connect_timeout 15s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}

پس از ذخیره‌ی تنظیمات، اپ در کلاستر انتخابی ساخته می‌شود و پس از رسیدن به وضعیت Up and Running، در دسترس بودن و Resolve شدن دامنه‌ی اپ بررسی می‌شود.


گام دوم: تنظیم متابیس​

آدرس مرجع (Canonical URL) متابیس باید به دامنه‌ی پروکسی تغییر کند تا فرایند احراز هویت از طریق دامنه‌ی عمومی انجام شود. در تب متغیرهای محیطی اپ متابیس:

MB_SITE_URL=https://<my-mcpserver>.darkube.ir

گام سوم: اتصال و بررسی نتیجه در Claude​

پیش از اتصال مجدد، دسترسی عمومی پروکسی با دو بررسی اولیه کنترل می‌شود:

curl -i https://<my-mcpserver>.darkube.ir/healthz
curl -i \
-H 'Accept: application/json, text/event-stream' \
https://<my-mcpserver>.darkube.ir/api/metabase-mcp

در استقرار مرجع، خروجی‌های زیر مشاهده شد:

GET /healthz
→ ok

GET /api/metabase-mcp
→ {"jsonrpc":"2.0","id":null,"error":{"code":-32603,"message":"Authentication required"}}

دریافت پاسخِ بدون احراز هویت لزوماً نشانه‌ی خرابی نیست؛ رفتار مورد انتظار همین است.

سپس در Claude، در فیلد Server URL (تصویر ابتدای راهنما)، آدرس زیر وارد و Connector افزوده می‌شود:

https://<my-mcpserver>.darkube.ir/api/metabase-mcp

پس از تأیید، صفحه‌ی ورود (لاگین) متابیس از طریق دامنه‌ی پروکسی باز می‌شود؛ این رفتار مورد انتظار است و بخشی از فرایند احراز هویت OAuth محسوب می‌شود. پس از ورود با حساب کاربری متابیس، صفحه‌ی تأیید دسترسی زیر نمایش داده می‌شود و دسترسی‌های درخواستی Claude — خواندن منابع، مشاهده‌ی محتوا و اجرای کوئری — در همین مرحله تأیید می‌شود:

با تأیید دسترسی، اتصال کامل می‌شود و در بخش Connectors کلاینت، وضعیت متابیس Connected نمایش داده می‌شود:

در پایان، ابزارهای متابیس (مانند query و create_dashboard) در Claude در دسترس قرار می‌گیرند.


عیب‌یابی​

در بروز مشکل، لاگ‌های اپ Nginx (که روی stdout نوشته می‌شوند) از کنسول دارکوب بررسی می‌شوند.

این راهنمایی کاربردی بود؟

با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.