Ubuntu 20.04

نحوه نصب متابیس در اوبونتو 20.04 با داکر

معرفی

Metabase یک ابزار مبتنی بر جاوا منبع باز هوش تجاری (BI) است. این می تواند به تعدادی پایگاه داده مختلف متصل شود و یک ابزار سازنده سوال دارد که می تواند پیچیدگی پرس و جوهای بزرگ SQL را پنهان کند.

در این آموزش شما Metabase را با استفاده از Docker Compose نصب می‌کنید، سپس Nginx را نصب می‌کنید تا به عنوان یک پروکسی معکوس برای سایت متابیس شما عمل کند. سپس، اتصالات HTTPS ایمن را با استفاده از Certbot برای دانلود و پیکربندی یک گواهی TLS از Let’s Encrypt Certificate Authority فعال می کنید. در نهایت، Metabase را پیکربندی می‌کنید و برخی از داده‌های نمونه را بارگیری می‌کنید تا بتوانید سؤالات و داشبوردهای BI خود را بسازید.

پیش نیازها

برای تکمیل این آموزش شما نیاز دارید:

یک سرور اوبونتو 20.04 با 2 یا بیشتر CPU، یک کاربر غیر ریشه با دسترسی sudo و یک فایروال. برای تنظیم این، آموزش راه اندازی سرور اولیه ما با اوبونتو 20.04 را دنبال کنید.
داکر نصب شده است. مراحل 1 و 2 نحوه نصب و استفاده از Docker در اوبونتو 20.04 را دنبال کنید تا آن را نصب کنید و کاربر غیر روت خود را پیکربندی کنید تا بتواند دستورات docker را اجرا کند.

در نهایت، برای فعال کردن TLS به یک نام دامنه نیاز دارید که به آدرس IP عمومی سرور شما اشاره شده باشد. این باید چیزی شبیه example.com یا metabase.example.com باشد. اگر از DigitalOcean استفاده می کنید، لطفاً برای کسب اطلاعات در مورد ایجاد منابع دامنه در کنترل پنل خود، به Start سریع DNS ما مراجعه کنید.

هنگامی که تمام پیش نیازها را آماده کردید، به مرحله 1 بروید، جایی که بسته docker-compose را نصب خواهید کرد.

مرحله 1 – نصب Docker Compose

برای نصب ابزار خط فرمان docker-compose، ابتدا لیست بسته خود را بازخوانی کنید:

sudo apt update

سپس بسته را با استفاده از apt نصب کنید:

sudo apt install docker-compose

با اجرای دستور زیر می توانید تایید کنید که بسته نصب شده است:

docker-compose –version

شما باید خروجی هایی مانند زیر دریافت کنید:

Output
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10

هنگامی که تأیید کردید که Docker Compose روی سرور شما نصب شده است، از آن برای پیکربندی و راه اندازی Metabase در مرحله بعدی این آموزش استفاده خواهید کرد.

مرحله 2 – اجرای Metabase با Docker Compose

برای شروع ایجاد محفظه Metabase خود، دایرکتوری به نام metabase را در فهرست اصلی خود ایجاد کنید تا فایل هایی را که در این آموزش ایجاد خواهید کرد ذخیره کنید. شما از این دایرکتوری برای ذخیره تمام فایل هایی که برای اجرای Metabase نیاز دارید استفاده خواهید کرد.

برای ایجاد دایرکتوری دستور زیر را اجرا کنید:

mkdir ~/metabase

سپس در آن حرکت کنید:

cd ~/metabase

اکنون یک فایل YAML خالی جدید به نام docker-compose.yml را با استفاده از nano یا ویرایشگر دلخواه خود باز کنید:

nano docker-compose.yml

شما از این فایل با دستور docker-compose برای راه اندازی ظرف Metabase خود استفاده خواهید کرد. خطوط زیر را به فایل اضافه کنید:

docker-compose.yml
version: '3'
services:
  metabase:
    image: metabase/metabase:latest
    ports:
      - "3000:3000"
    volumes:
      - data:/metabase

volumes:
  data:

این فایل سرویسی به نام metabase را تعریف می کند که برنامه Metabase را اجرا می کند. این سرویس همچنین به یک حجم نام‌گذاری شده اشاره می‌کند که از آن برای ذخیره داده‌های خارج از نمونه کانتینر در حال اجرا استفاده می‌کند. در نهایت، سرویس متابیس پورت 3000 سرور شما را در معرض کانتینر Metabase که در همان پورت 3000 در حال اجرا است، قرار می دهد.

پس از اتمام ویرایش فایل را ذخیره کرده و از آن خارج شوید. اگر از نانو استفاده می کنید، CTRL+O و سپس RETURN را برای ذخیره و سپس CTRL+X را برای خروج فشار دهید.

اکنون آماده هستید تا ظرف متابیس را با دستور docker-compose راه اندازی کنید:

docker-compose up -d

فرمان فرعی up به docker-compose می‌گوید که ظرف و حجم(های) و شبکه(های) مرتبط را که در فایل docker-compose.yml شما تعریف شده‌اند، راه اندازی کند. پرچم -d (که مخفف “daemonize” است) به docker-compose می‌گوید که کانتینر را در پس‌زمینه اجرا کند تا فرمان ترمینال شما را نگیرد. docker-compose زمانی که تصویر Docker مورد نیاز را دانلود می‌کند و سپس کانتینر را راه‌اندازی می‌کند، خروجی مختصری را چاپ می‌کند:

Output
Creating network "metabase_default" with the default driver
Creating volume "metabase_data" with default driver
Pulling metabase (metabase/metabase:latest)...
latest: Pulling from metabase/metabase
. . .

docker-compose stop

وقتی این کار انجام شد، Metabase باید در حال اجرا باشد. می توانید با واکشی صفحه اصلی با استفاده از دستور curl آزمایش کنید که یک وب سرور در 127.0.0.1:3000 اجرا می شود:

curl –head http://localhost:3000

با این کار فقط سرصفحه های HTTP از پاسخ چاپ می شود:

Output
HTTP/1.1 200 OK
Date: Tue, 15 Mar 2022 19:26:22 GMT
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Last-Modified: Tue, 15 Mar 2022 19:26:22 GMT
Strict-Transport-Security: max-age=31536000
Set-Cookie: metabase.DEVICE=3525ed6d-13e0-4ad0-8fdb-f1bc426706dc;HttpOnly;Path=/;Expires=Sat, 15 Mar 2042 19:26:22 GMT;SameSite=Lax
X-Permitted-Cross-Domain-Policies: none
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-eval' https://maps.google.com https://apis.google.com https://*.googleapis.com *.gstatic.com https://www.google-analytics.com   'sha256-lMAh4yjVuDkQ9NqkK4H+YHUga+anpFs5JAuj/uZh0Rs=' 'sha256-ib2/2v5zC6gGM6Ety7iYgBUvpy/caRX9xV/pzzV7hf0=' 'sha256-JJa56hyDfUbgNfq+0nq6Qs866JKgZ/+qCq2pkDJED8k='; child-src 'self' https://accounts.google.com; style-src 'self' 'unsafe-inline'; font-src 'self' ; img-src * 'self' data:; connect-src 'self' metabase.us10.list-manage.com www.google-analytics.com https://sp.metabase.com ; manifest-src 'self';  frame-ancestors 'none';
Content-Type: text/html;charset=utf-8
Expires: Tue, 03 Jul 2001 06:00:00 GMT
Content-Length: 0
Server: Jetty(9.4.43.v20210629)

پاسخ OK 200 به این معنی است که یک برنامه در پورت 3000 پاسخ می دهد. هدرهای Set-Cookie و Server برجسته شده تأیید می کنند که برنامه Metabase در سرور وب Jetty اجرا می شود.

سپس Nginx را برای پراکسی کردن ترافیک عمومی به کانتینر Metabase راه‌اندازی می‌کنیم.

مرحله 3 – نصب و پیکربندی Nginx

قرار دادن یک وب سرور مانند Nginx در مقابل سرور Metabase شما می‌تواند عملکرد را با بارگذاری ذخیره‌سازی، فشرده‌سازی و سرویس فایل استاتیک برای فرآیندی کارآمدتر بهبود بخشد. ما قصد داریم Nginx را نصب کنیم و آن را به گونه ای پیکربندی کنیم که درخواست های پراکسی را به Metabase معکوس کند، به این معنی که از رسیدگی به درخواست های کاربران شما به Metabase و بازگشت مجدد مراقبت می کند. استفاده از فرآیند Nginx غیر کانتینری اضافه کردن گواهینامه‌های Let’s Encrypt TLS را در مرحله بعدی آسان‌تر می‌کند.

ابتدا لیست بسته خود را بازخوانی کنید، سپس Nginx را با استفاده از apt نصب کنید:

sudo apt install nginx

با استفاده از نمایه برنامه Nginx Full UFW، ترافیک عمومی به پورت های 80 و 443 (HTTP و HTTPS) را مجاز کنید:

sudo ufw allow “Nginx Full”

Output
Rule added
Rule added (v6)

در مرحله بعد، یک فایل پیکربندی جدید Nginx را در پوشه /etc/nginx/sites-available باز کنید. ما سایت خود را metabase.conf می نامیم اما می توانید از نام دیگری استفاده کنید:

sudo nano /etc/nginx/sites-available/metabase.conf

موارد زیر را در فایل پیکربندی جدید جای‌گذاری کنید، مطمئن شوید که your_domain_here را با دامنه‌ای که پیکربندی کرده‌اید برای اشاره به سرور متابیس خود جایگزین کنید. برای مثال باید چیزی شبیه metabase.example.com باشد:

/etc/nginx/sites-available/metabase.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/metabase.access.log;
    error_log   /var/log/nginx/metabase.error.log;

    location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Proto https;
      proxy_pass http://localhost:3000;
  }
}

این پیکربندی فعلاً فقط HTTP است، زیرا به Certbot اجازه می‌دهیم تا در مرحله بعدی پیکربندی TLS را انجام دهد. بقیه فایل پیکربندی مکان های ورود به سیستم را تنظیم می کند و سپس تمام ترافیک و همچنین برخی از هدرهای پراکسی مهم را به همراه http://localhost:3000، ظرف Metabase که در مرحله قبل راه اندازی کردیم، ارسال می کند.

فایل را ذخیره کرده و ببندید، سپس با پیوند دادن آن به /etc/nginx/sites-enabled/ پیکربندی را فعال کنید:

sudo ln -s /etc/nginx/sites-available/metabase.conf /etc/nginx/sites-enabled/

از nginx -t برای بررسی درست بودن نحو فایل پیکربندی استفاده کنید:

sudo nginx -t

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

و در نهایت سرویس nginx را با پیکربندی جدید بارگیری مجدد کنید:

sudo systemctl reload nginx.service

سایت متابیس شما اکنون باید با HTTP ساده در دسترس باشد. http://your_domain_here را بارگیری کنید (ممکن است مجبور شوید از طریق یک هشدار امنیتی کلیک کنید) و به شکل زیر خواهد بود:

اکنون که سایت خود را از طریق HTTP راه‌اندازی کرده‌اید، زمان آن رسیده است که اتصال را با گواهی‌های Certbot و Let’s Encrypt ایمن کنید. شما باید این کار را قبل از انجام مراحل راه اندازی مبتنی بر وب متابیس انجام دهید.

مرحله 4 – نصب Certbot و راه‌اندازی گواهی‌های TLS

به لطف Certbot و مجوز مجوز رایگان Let’s Encrypt، افزودن رمزگذاری TLS به برنامه Metabase شما تنها دو دستور را می‌گیرد.

ابتدا Certbot و افزونه Nginx آن را نصب کنید:

sudo apt install certbot python3-certbot-nginx

سپس، certbot را در حالت –nginx اجرا کنید و همان دامنه ای را که در دستورالعمل پیکربندی Nginx server_name استفاده کرده اید، مشخص کنید:

sudo certbot –nginx -d your_domain_here

از شما خواسته می شود با شرایط خدمات Let’s Encrypt موافقت کنید و یک آدرس ایمیل وارد کنید.

پس از آن، از شما پرسیده می شود که آیا می خواهید تمام ترافیک HTTP را به HTTPS هدایت کنید. این به شما بستگی دارد، اما این به طور کلی توصیه می شود و انجام آن بی خطر است.

پس از آن، Let’s Encrypt درخواست شما را تایید می کند و Certbot گواهی شما را دانلود می کند:

Output
Congratulations! You have successfully enabled https://metabase.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=metabase.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/metabase.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/metabase.example.com/privkey.pem
   Your cert will expire on 2022-05-09. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Certbot به طور خودکار Nginx را با پیکربندی و گواهی های جدید بارگیری می کند. سایت خود را مجدداً در مرورگر خود بارگیری کنید و اگر گزینه تغییر مسیر را انتخاب کنید، باید به طور خودکار شما را به HTTPS تغییر دهد.

سایت شما اکنون ایمن است و ادامه مراحل راه اندازی مبتنی بر وب بی خطر است.

مرحله 5 – راه اندازی متابیس

به مرورگر وب خود برگردید، صفحه را دوباره بارگیری کنید. اکنون باید صفحه پیکربندی پایگاه داده Metabase را از طریق یک اتصال امن https:// باز کنید. اکنون می توانید با کلیک روی دکمه Let’s get start، فرآیند پیکربندی را تکمیل کنید.

از شما خواسته می شود که جزئیات زیر را وارد کنید:

زبان مورد علاقه شما چیست؟ اگر زبان شما در لیست است، آن را انتخاب کنید و در تصویر زیر روی Next کلیک کنید:

شما را چه صدا کنیم؟ تمام فیلدها را پر کنید و مطمئن شوید که رمز عبور خود را در جایی امن ثبت کرده اید.

اطلاعات خود را اضافه کنید: روی گزینه I’ll add my data later در پایین صفحه کلیک کنید

تنظیمات برگزیده داده استفاده: برای کمک به بهبود ابزار، انتخاب کنید که آیا می‌خواهید داده‌های استفاده را با Metabase به اشتراک بگذارید. پس از انتخاب خود روی Finish کلیک کنید.

همه چیز آماده اید! اگر می‌خواهید به‌روزرسانی‌های پروژه Metabase را دریافت کنید، آدرس ایمیل خود را اضافه کنید، در غیر این صورت می‌توانید این قسمت را نادیده بگیرید.

در نهایت روی دکمه Take me to Metabase کلیک کنید. به صفحه‌ای می‌رسید که روی آن «سلام، سامی» در بالا آمده است، با مجموعه‌ای از اشعه‌های ایکس از پیش پیکربندی‌شده که می‌توانید روی آن کلیک کنید تا داده‌های نمونه‌ای را که بارگیری کرده‌اید بررسی کنید.

برای مشاهده جزئیات جدول در متابیس روی هر X-Ray کلیک کنید. می‌توانید از کنترل‌های صفحه X-Ray برای فیلتر کردن داده‌ها یا کشف فیلدها و جداول پایگاه داده مرتبط استفاده کنید.

وقتی آماده هستید که سؤال خود را ایجاد کنید (این اصطلاحی است که Metabase برای توصیف یک پرس و جو استفاده می کند)، روی نماد Browse data grid در سمت راست بالای صفحه خود کلیک کنید. روی کاشی Sample Database کلیک کنید و سپس روی جدولی از لیست کلیک کنید. در این مثال از جدول Reviews استفاده می کنیم.

صفحه نمایش شما شبیه موارد زیر خواهد بود:

اکنون بر روی دکمه خلاصه در سمت راست بالای صفحه خود کلیک کنید و قسمت Summarize by را به Average of Rating تغییر دهید. Metabase این مقدار را بر اساس داده های جدول در قسمت Rating محاسبه می کند. همچنین گروه با فیلد را به Created At تغییر دهید، زیرا این فیلد به Metabase اجازه می‌دهد تا میانگین رتبه‌بندی محصول در هر ماه را در تمام محصولات و رتبه‌بندی‌های نمونه محاسبه کند.

روی دکمه Done در پایین سمت راست کلیک کنید و در صفحه‌ای قرار می‌گیرید که نموداری از میانگین رتبه‌بندی محصول را مانند تصویر زیر نشان می‌دهد:

روی دکمه Done در پایین سمت راست کلیک کنید و در صفحه‌ای قرار می‌گیرید که نموداری از میانگین رتبه‌بندی محصول را مانند تصویر زیر نشان می‌دهد:

نتیجه

در این آموزش، ابزار Metabase BI را با استفاده از Docker Compose راه‌اندازی کردید، سپس یک پروکسی معکوس Nginx راه‌اندازی کردید و آن را با استفاده از گواهی‌های Let’s Encrypt TLS ایمن کردید. شما همچنین چند نمونه از داده‌ها را اضافه کردید، و با ایجاد سؤالات خود در Metabase آزمایش کردید تا داده‌ها را پرس و جو کنید.

شما اکنون آماده هستید تا Metabase را به یک پایگاه داده خارجی متصل کنید تا داده های خود را جستجو کنید. Metabase از انواع منابع داده، از جمله پایگاه‌های داده سنتی SQL و همچنین موتورهای تحلیلی و پایگاه‌های اطلاعاتی سند محور پشتیبانی می‌کند.


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/