Cài đặt Metabase trên Ubuntu 20.04 với Nginx


Metabase là một công cụ phân tích đơn giản và mạnh mẽ cho phép bạn tìm hiểu và đưa ra quyết định từ dữ liệu của công ty mình mà không cần bất kỳ kiến thức kỹ thuật nào hoặc sự phát triển của các ứng dụng cụ thể. Về cơ bản, nó hoạt động dựa trên các câu hỏi bạn đặt ra và nó sắp xếp dữ liệu dưới dạng biểu đồ và báo cáo như bạn muốn.

Nó hỗ trợ kết nối với các loại nguồn dữ liệu khác nhau, bao gồm MySQL, PostgreSQL, NoSQL (như MongoDB), các dịch vụ cơ sở dữ liệu đám mây như Amazon Redshift, Google BigQuery và thậm chí kết nối với Google Analytics.

Bước 1 - Cài đặt Java

Bước 2 - Cài đặt máy chủ cơ sở dữ liệu (MariaDB)

Bước 3 - Tạo cơ sở dữ liệu và người dùng

Bây giờ cài đặt tất cả các gói cần thiết để Metabase hoạt động, hãy tạo một cơ sở dữ liệu trống cho Metabase và định cấu hình người dùng MariaDB để truy cập cơ sở dữ liệu này.

Đăng nhập vào MySQL shell bằng lệnh dưới đây: mysql -u root -p
Sau đó, tạo một siêu dữ liệu cơ sở dữ liệu mới: 

    MariaDB [none] > CREATE DATABASE metabase;

Tạo một người dùng cơ sở dữ liệu metabase_user với mật khẩu mới: 

    MariaDB [none] > CREATE USER 'metabase_user'@'localhost' IDENTIFIED BY 'Strong_Password';

Sau đó, cấp cho người dùng toàn quyền truy cập vào cơ sở dữ liệu được tạo cho localhost:

    MariaDB [none] > GRANT ALL ON metabase.* TO 'metabase_user'@'localhost' WITH GRANT OPTION;

Cuối cùng, lưu các thay đổi của bạn và thoát.

    MariaDB [none] > FLUSH PRIVILEGES;
    MariaDB [none] > EXIT;

Bước 4 - Cài đặt Metabase

Bây giờ Java và máy chủ cơ sở dữ liệu đã được cài đặt, hãy cài đặt Metabase từ kho lưu trữ chính thức của nó. Trong bài viết này, sẽ cài phiên bản sẽ là 0.36.7.

Hãy tải xuống tệp metabase và đặt nó vào thư mục cài đặt /home/metabase:

    sudo mkdir /home/metabase
    cd /home/metabase
    wget https://downloads.metabase.com/v0.36.7/metabase.jar

Vì lý do bảo mật, Metabase chạy với tư cách người dùng không có đặc quyền. Chúng ta sẽ gọi người dùng đơn giản là metabase. Hơn nữa, chúng ta sẽ tạo các tệp mà chúng ta sẽ cần sau này để ghi log và định cấu hình Metabase, đồng thời áp dụng cài đặt bảo mật chính xác cho người dùng không có đặc quyền.

    sudo groupadd -r metabase
    sudo useradd -r -s /bin/false -g metabase metabase
    sudo chown -R metabase:metabase /home/metabase
    sudo touch /var/log/metabase.log
    sudo chown metabase:metabase /var/log/metabase.log
    sudo touch /etc/default/metabase
    sudo chmod 640 /etc/default/metabase

Sau đó, bạn cần tạo dịch vụ trong Metabase systemd để có thể kiểm soát việc bắt đầu, dừng dịch vụ. Để làm điều này, chỉ cần thực hiện các lệnh để tạo tệp dịch vụ: sudo vi /etc/systemd/system/metabase.service

Sau đó ghi nội dung bên dưới vào tệp và lưu nó:

    [Unit]
    Description=Metabase server
    After=syslog.target
    After=network.target

    [Service]
    WorkingDirectory=/home/metabase/
    ExecStart=/usr/bin/java -jar /home/metabase/metabase.jar
    EnvironmentFile=/etc/default/metabase
    User=metabase
    Type=simple
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=metabase
    SuccessExitStatus=143
    TimeoutStopSec=120
    Restart=always

    [Install]
    WantedBy=multi-user.target

Tiếp theo, chúng ta cần tạo cấu hình Syslog để đảm bảo rằng systemd có thể xử lý các bản ghi đúng cách: sudo vi /etc/rsyslog.d/metabase.conf
Sau đó ghi nội dung bên dưới vào tệp và lưu nó:

    if $programname == 'metabase' then /var/log/metabase.log & stop

Khởi động lại dịch vụ Syslog để tải cấu hình mới: sudo systemctl restart rsyslog.service

Tệp cấu hình Metabase 

Trong /etc/default/metabase, thay thế các mục có thể cấu hình bằng các giá trị hợp lý cho hệ thống của bạn. Một số cấu hình Metabase có sẵn một số tùy chọn và một số cấu hình tôi sẽ hiển thị được phân tách bằng ký hiệu | trong comment bên cạnh mỗi biến. Tôi khuyên bạn nên chọn một tùy chọn và xóa comment này.

    sudo vi /etc/default/metabase

    MB_PASSWORD_COMPLEXITY=strong #weak|strong
    MB_PASSWORD_LENGTH=10
    MB_DB_TYPE=mysql #postgres|mysql|h2
    MB_DB_DBNAME=metabase
    MB_DB_PORT=3306
    MB_DB_USER=metabase_user
    MB_DB_PASS=Strong_Password
    MB_DB_HOST=localhost
    MB_EMOJI_IN_LOGS=true #true|false

Bây giờ, chúng ta có thể kích hoạt và kiểm tra dịch vụ Metabase bằng các lệnh bên dưới:

    sudo systemctl daemon-reload
    sudo systemctl start metabase

Để xác minh rằng dịch vụ đang hoạt động, hãy chạy các lệnh bên dưới để xác minh.

    sudo systemctl status metabase

Bạn sẽ thấy output tương tự như sau:

    ● metabase.service - Metabase server
    Loaded: loaded (/etc/systemd/system/metabase.service; enabled; vendor preset: enabled)
    Active: active (running) since Sun 2020-10-18 21:11:45 -03; 7s ago
    Main PID: 14703 (java)
    Tasks: 12 (limit: 2270)
    Memory: 61.9M
    CGroup: /system.slice/metabase.service
    └─14703 /usr/bin/java -jar /home/metabase/metabase.jar

Khi bạn đã xác nhận mọi thứ đang hoạt động, bạn có thể kích hoạt khởi động khi máy chủ khởi động.

    sudo systemctl enable metabase

Dịch vụ Metabase đã chạy trên cổng 3000 và cài đặt Nginx để thực hiện reverse proxy và trong bước 6, sẽ quay lại cấu hình ban đầu của Metabase.

Bước 5 - Cài đặt và cấu hình Nginx

Chúng ta sẽ sử dụng Nginx để tạo reverse proxy cho cổng mà MetaBase đã được cài đặt trên đó và vì vậy bạn sẽ có thể cấu hình tên miền của mình và truy cập thông qua các cổng SSL 80.
Cài đặt Nginx tại đây
Khi quá trình cài đặt hoàn tất, hãy tạo tệp cấu hình Nginx mới với các cài đặt bên dưới, xác định server_name bằng FQDN example.com: sudo vi /etc/nginx/sites-available/metabase
Sau đó ghi nội dung bên dưới vào tệp và lưu nó. Đừng quên sửa đổi miền example.com lại thành tên miền theo ý bạn

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        location / {
            proxy_pass http://127.0.0.1:3000;
        }
    }

Bây giờ, hãy liên kết cấu hình này với cấu hình Nginx đã được kích hoạt.

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

Tiếp theo, hãy kiểm tra cài đặt Nginx bằng lệnh bên dưới: sudo nginx -t
Bạn sẽ thấy một kết quả tương tự như bên dưới:
    
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

Bây giờ chúng ta có thể khởi động lại dịch vụ Nginx:  sudo systemctl restart nginx

Bước 6 - Cài đặt Metabase ban đầu

Trong bước này, chúng ta sẽ tạo cấu hình ban đầu của Metabase và tạo người dùng quản trị viên. Truy cập trình duyệt của bạn và nhập http://example.com

Bạn sẽ thấy trình hướng dẫn thiết lập Metabase.

Nhấp vào nút Let's get started. Đầu tiên, hãy xác định ngôn ngữ ưa thích của bạn. Trong trường hợp này, chúng tôi sẽ chọn tiếng Anh
Bây giờ chúng ta hãy xác định tài khoản quản trị và mật khẩu.

Sau đó chọn thêm cơ sở dữ liệu. Đối với hướng dẫn này, chúng tôi đang sử dụng MySQL hoặc MariaDB. Nhập thông tin cơ sở dữ liệu đã tạo ở trên và tiếp tục với cấu hình.

Ok bây giờ chỉ cần hoàn thành cấu hình và bắt đầu sử dụng nền tảng.
Bằng cách nhấp vào nút Take me to Metabase, bạn sẽ có quyền truy cập vào trang tổng quan.