Metabaseをインストールしてみた

年始に下記の記事を見て、ハニーポットのログ分析に使えないかなぁと思っていたMetabaseをUbuntu 16.04にインストールしてみました。

インストール

ダウンロードしたファイルを実行するだけなので簡単です。

(インストールされていない場合は)javaをインストールします。

# apt-get install default-jre
# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
# mkdir /opt/metabase
# cd /opt/metabase/

Metabaseをダウンロードします。

# wget http://downloads.metabase.com/v0.28.1/metabase.jar

サービスの起動

下記のコマンドを実行して、http://localhost:4000 にアクセスできればOKです。
Metabaseがデフォルトで使用するポートは3000ですが、自分の環境で他のアプリケーションがポートを使用しているので4000に変更しました。

At this point your ready to go! You can access your new Metabase server on port 3000, most likely at localhost:3000 You can use another port than 3000 by setting the MB_JETTY_PORT environment variable before running the jar

via metabase/running-the-metabase-jar-file.md at master · metabase/metabase

# MB_JETTY_PORT=4000 java -jar metabase.jar

HTTPS化

nginx & Let's Encryptを使って、HTTPS化しました。インストール手順等は省略してコンフィグファイルだけ記載します。
https://exmplple.com:9000 にアクセスすると、localhost:4000にリダレクトされる設定です。

# cat /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off;

        server_names_hash_bucket_size 64;
        server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        gzip on;
        gzip_disable "msie6";

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options nosniff;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}
# cat /etc/nginx/conf.d/metabase.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 9000 ssl;
    server_name example.com;

    location / {
        try_files $uri @metabase;
    }

    location @metabase {
        proxy_pass http://localhost:4000;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    ssl_certificate       /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key   /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_session_cache shared:le_nginx_SSL:1m;
    ssl_session_timeout 1440m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";

    ssl_stapling on;
    ssl_stapling_verify on;

    resolver 8.8.8.8 8.8.4.4 valid=300s;

}

サービス登録

下記の内容をそのまま使わせて頂きました。

# cat /etc/systemd/system/metabase.service
[Unit]
Description=Metabase server
After=syslog.target
After=network.target

[Service]
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -jar /opt/metabase/metabase.jar
Environment=MB_JETTY_PORT=4000
User=root
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=metabase
SuccessExitStatus=143
TimeoutStopSec=120
Restart=always

[Install]
WantedBy=multi-user.target
# systemctl enable metabase
Created symlink from /etc/systemd/system/multi-user.target.wants/metabase.service to /etc/systemd/system/metabase.service.
# systemctl start metabase

Ref.

$ inxi -SM
System:    Host: aries Kernel: 4.4.0-112-generic x86_64 (64 bit) Console: tty 1 Distro: Ubuntu 16.04 xenial
Machine:   System: QEMU product: Standard PC (i440FX + PIIX 1996) v: pc-i440fx-2.11
           Mobo: N/A model: N/A Bios: Sea v: rel-1.11.0-0-g63451fca13-prebuilt.qemu-project.org date: 04/01/2014