数あるBIツールの中でも、OSSかつ機能が豊富なredash。
ベンチャーから大企業までカバーできる、素晴らしいツールだと思います。
今回久々に新規構築するタイミングがありましたので、備忘録として手順を残しておきます。
基本的には公式HPの案内通りに実施すればよいのですが、多少行間を読む必要があり、わかりやすく書いたつもりです。
作るもの
- GCE上で動くredash
- redashはv8.0→v10.1(2022/6時点での最新版) にver upする
- SSL(HTTPS)対応
準備するもの
- GCP
- Aレコードが追加できる自前ドメイン(例:example.com)
- redashにアクセスする際のホスト名を考えておく(例:redash.example.com)
構築手順
インスタンス作成
公式の手順のとおり、クラウドコンソール上でイメージ作成→インスタンスを起動します。
執筆している2022/6月現在では、redashのversion8をまずは作成・起動し、その後v10.1に上げることになります。
公式にはメモリが最低4GBあればOKと記載がありますが、マシンタイプやリージョンはお好みでどうぞ。
$ gcloud compute images create "redash-8-0-0" --source-uri gs://redash-images/redash.8.0.0-b32245-1.tar.gz
$ gcloud compute instances create redash --image redash-8-0-0 --machine-type e2-standard-2 --zone asia-northeast1-a
これだけでredashを搭載したサーバが立ち上がります。月並みですがクラウドってすごいですね。
インスタンスに固定IPを付与
上記手順で起動するインスタンスには、エフェメラルIPという動的なグローバルIPが付与されます。
度々接続先のIPが変わると困るので、固定IPを発行しインスタンスに設定します。
以下GCPの画面から操作します。
VPCネットワーク → IPアドレス → 外部静的アドレスの予約
IPの名前は識別できる程度に適当でよいですが、リージョンは先程のサーバのリージョンと合わせてください。
接続先は、プルダウンで作成したインスタンス名を選択して下さい。
DNS設定
※DNSとかよく分からない場合は、管理者に聞いてみてください。
先の手順で設定した固定IPと、準備するもの で準備したホスト名とを紐付けます。
お持ちのドメインを管理できるDNSに、下記のような設定を実施してください。
redash A "外部静的アドレス"
HTTP/HTTPSアクセスのファイアウォール設定
初期設定ではサーバへのHTTP/HTTPSアクセスが開放されていないので、GCPのGUIから設定を入れます。
Compute Enginge → サーバ名をクリック → 編集
「ネットワーキング」の項目にファイアウォールの設定があるので、2つともチェックを入れて「保存」
adminユーザーの設定
公式手順にさらっと書いてありますが、ブラウザにhttp://ホスト名/
でアクセスします。
adminユーザーのメールアドレス、パスワードなどを入力し、set upボタンを押せばredashの初期セットアップが完了です。
ユーザーの追加、接続先の追加などは割愛します。
redash v8 → v10.1へのバージョンアップ
公式のgithubに記載されている手順をかいつまんで説明すると、
v8→v10.0へのVerUP手順と同じ要領でバージョンアップを進めていくのですが、
step3の記載をredash/redash:10.1.0.b50633
に変更して進めれば
v8.0.0→v10.1に直接バージョンアップ出来ます。
サーバにSSHで接続の上、上記リンク先にある設定作業を進めましょう。
ちなみにstep7に記載のdocker-compose up --force-recreate --build
を実施すると
一旦コマンドが通った後に際限なくログが続くので、ctrl-c
で止めましたが
その後の手順も特に問題なく、version upを完了することが出来ました。
SSL対応
独自にSSL証明書を入手できる場合は別の手順となりますが、
ここではredashの手順にも組み込まれている、無料の認証局Let's Encryptを利用し
証明書を発行・セットアップします。
こちらもサーバにSSHを接続しての作業になります。
HPに案内がある通り、公式githubに記載の手順に従って作業を進めていきます。
手順の中に、自分のホスト名に書き換えるところが計6箇所あるので、気をつけてください。
SSL自動更新
またgithubの手順の最後に、SSL証明書の更新手順が書いてあります。
証明書の配置場所をローカルにしておけば、certbotが自動で更新してくれるのですが、、1
公式手順から外れると次のメンテで嵌りそうなので、公式手順のコマンドをcronで回すことにします。2
引き続きSSH経由の作業になります。
$ sudo su
$ cd /home/ubuntu
$ mkdir letsencrypt
$ vim letsencrypt/renew.sh
#!/bin/sh
cd /opt/redash/
docker run -t --rm -v /opt/redash/nginx/certs:/etc/letsencrypt \
-v /opt/redash/nginx/certs-data:/data/letsencrypt \
deliverous/certbot renew --webroot --webroot-path=/data/letsencrypt
/usr/local/bin/docker-compose kill -s HUP nginx
上記作成後に実行テスト。
$ chmod 755 letsencrypt/renew.sh
$ sudo letsencrypt/renew.sh
### 実行結果が表示される。証明書の期限が30日以上あればskipped、30日を切っていれば更新が走る。
### Killing redash_nginx_1 ... done が表示されればスクリプトが最後まで回っている。
問題無さそうであればcron.dに設定。設定ファイルを作成し配置する。
毎月1日/15日に起動する設定にしています。
$ vim /etc/cron.d/letsencrypt
0 0 1,15 * * root /home/ubuntu/letsencypt/renew.sh
設定が終わったらcron再起動
sudo service cron restart
sudo service cron status
### Active: active (running) の表示が出ていればとりあえずOK
上記で終わりです。
最後に
redashは下手な有料BIよりも全然使いやすいので、ぜひ広めていきたいです!
気になるところがあればご指摘くださいー。
-
※Waza Labさんの記事が参考になります。 ↩
-
※Fire Sign Blogさんの記事を参考にしました。 ↩
Comments
Let's comment your feelings that are more than good