Redashインストール + SSL対応 + Googleログイン実装 + アップデート

わたなべです。

いよいよGWですね!
みなさまご予定いかがでしょうか😃

ORATTAは暦通りのお休みの人が80%、
1-2日を有給にして9連休にした人が20%くらいですかね。
僕も暦通りお休みを頂きます!

さて、今回は「Redash」のインストール方法をご紹介します。

Redash概要

正式版であるv1.0.3が今月リリースされ、
機能もどんどん追加されているオープンソースのダッシュボードツールです。

データソースへの対応が非常に強く、公式サイトに記載があるだけでも32種類あります。
ちなみに弊社はIDCフロンティアさん経由のTreasureDataとMySQLの可視化の為に使用しています。

TreasureDataに対応しているダッシュボードツールは余り選択肢がないのですが、
Redashはデータソースが自由に追加出来ることから、
TreasureData社さんがコミッターになり対応されております。
インストール・保守が面倒という方は、SaaS型も29ドルから提供されています。

余談ですが、現在のバージョンは正式名称が”Redash“なのですが、
昔のバージョンは正式名称が”re:dash“でした。Qiita等を検索する際は、
未だ旧名のほうが引っかかりやすいかもしれません。

動作要件

  • Ubuntu 16.04 のみ動作確認済み

基本的には真っさらなUbuntuに、プロビジョニングスクリプトで、
必要な構成をセットアップしていく流れになります。
弊社では使用していませんが、Dockerを使った方法もあります。

サーバーセットアップ

真っさらなUbuntu Server 16.04 LTS 64-bitをベースにインストールしていきます。
Redashに関係ない内容も含まれますので、不要な方は適宜飛ばしてください。

事前準備

swap

mkdir /var/swap
dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
chmod 600 /var/swap/swap0
mkswap /var/swap/swap0
swapon /var/swap/swap0
echo '/var/swap/swap0 swap swap defaults 0 0' >> /etc/fstab

cat /proc/swaps

ubuntu update

apt-get install vim
apt-get install screen
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo apt-get -y autoclean

>keep the local version currently installed

shutdown -r now

Redashインストール

プロビジョニングスクリプト

cassandra-driverという所で5分程度掛かりました。

wget https://raw.githubusercontent.com/getredash/redash/master/setup/ubuntu/bootstrap.sh
sh bootstrap.sh

初期設定

ここまで終わったら、80番ポートでアクセスできるようになっているはずです。
実際にアクセスしてみましょう!

初期ユーザーを設定します。

正常にログインできました!

SSL対応

さて、デフォルトではHTTPなので、HTTPS対応を行いましょう。
プロビジョニングスクリプトで自動的にnginxがインストールされ、デフォルトで80番ポートにマッピングされています。
これを443ポートに変更+SSL対応と80番ポートのリダイレクトを設定します。

vi /etc/nginx/sites-available/redash

参考までに弊社のnginx.confです。

upstream redash_servers {
  server 127.0.0.1:5000;
}

server {
  listen 80;

  # Allow accessing /ping without https. Useful when placing behind load balancer.
  location /ping {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass       http://redash_servers;
  }

  location / {
    # Enforce SSL.
    return 301 https://$host$request_uri;
  }
}

server {
  listen 443 ssl;

  # Make sure to set paths to your certificate .pem and .key files.
  ssl on;
  ssl_certificate      /etc/nginx/ssl/{ssl_certificate}.cert;
  ssl_certificate_key  /etc/nginx/ssl/{ssl_certificate_key}.key;

  # Specifies that we don't want to use SSLv2 (insecure) or SSLv3 (exploitable)
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  # Uses the server's ciphers rather than the client's
  ssl_prefer_server_ciphers on;
  # Specifies which ciphers are okay and which are not okay. List taken from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

  access_log /var/log/nginx/redash.access.log;

  gzip on;
  gzip_types *;
  gzip_proxied any;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass       http://redash_servers;
    proxy_redirect   off;
  }
}

Googleログイン準備

ログイン機構をID形式から、Googleログインに変更します。

1.Googleデベロッパーコンソールで新しいプロジェクトを作成します。

2.ダッシュボード>APIを有効にする>Google+ APIを有効にします。
認証情報>OAuth 同意画面から同意画面を作成します。

3.認証情報>認証情報を作成>OAuth クライアントIDを作成します。

  • アプリケーションの種類:ウェブアプリケーション
  • 承認済みのJavascript生成元
    https://redash.example.com

    末尾にスラッシュはつけません。

  • 承認済みのリダイレクトURL

    https://redash.example.com/oauth/google_callback

    後ろに”/oauth/google_callback”をつけます。
    末尾にスラッシュはつけません。

クライアントIDとクライアントシークレットが表示されるので、控えておきます。

ログインを許可するドメインを登録します。

cd /opt/redash/current
redash bin/run ./manage.py org set_google_apps_domains **許可するドメイン**

ここのコマンドは例文が{{domains}}と記載されていたので、
愚直に{{oratta.net}}と書いてエラーになって動かず、
Twitterで作者の方に助けていただいた思い出があります…

オプション設定変更

Googleログインの設定とメールの設定を行います。

vi /opt/redash/.env

export REDASH_COOKIE_SECRET=hogehogehoge # クッキーのシークレットキーををランダムな値に変更

export REDASH_GOOGLE_CLIENT_ID="000000000000-aaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com" # GoogleクライントID
export REDASH_GOOGLE_CLIENT_SECRET="bb_bbbbbbbbbbbbbbbbbbbbbb" # Googleシークレットキー
export REDASH_PASSWORD_LOGIN_ENABLED=false # パスワードログインを禁止

export REDASH_MAIL_DEFAULT_SENDER="server@example.com" # 送信元のメールアドレス
export REDASH_HOST="https://redash.example.com/" # Redashトップのアドレス

再起動

オプションの反映は再起動後になります。

sudo supervisorctl restart redash_server

ここまでやると、httpsのURLで接続+Googleログインが可能になっているはずです。

アップデート

v1.0系から、最新版へのアップデートがとても簡単になったので、一緒にご紹介しておきます!

cd /opt/redash/current
sudo bin/upgrade

これだけです😃
自分の環境だと最後の再起動だけ上手く行かなかったので、手動で行いました。

sudo supervisorctl restart redash_server

今まではfabricで云々〜ってやつだったんですが、かなり簡単になってます。どんどん最新版にアップデートしましょう!

以上、Redashのご紹介でした。

作者 Jun Watanabe

2010年11月ORATTA入社。エンジニアリーダーと名刺には書いてました。

コメントを残す