Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

redash v10.1をGCP上で新規構築してみた(2022/06版)

Posted at

数ある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の名前は識別できる程度に適当でよいですが、リージョンは先程のサーバのリージョンと合わせてください。
接続先は、プルダウンで作成したインスタンス名を選択して下さい。
スクリーンショット 2022-06-11 14.57.19.png

DNS設定

※DNSとかよく分からない場合は、管理者に聞いてみてください。
先の手順で設定した固定IPと、準備するもの で準備したホスト名とを紐付けます。
お持ちのドメインを管理できるDNSに、下記のような設定を実施してください。
redash         A            "外部静的アドレス"

HTTP/HTTPSアクセスのファイアウォール設定

初期設定ではサーバへのHTTP/HTTPSアクセスが開放されていないので、GCPのGUIから設定を入れます。
Compute Enginge → サーバ名をクリック → 編集
「ネットワーキング」の項目にファイアウォールの設定があるので、2つともチェックを入れて「保存」
スクリーンショット 2022-06-11 15.21.12.png

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
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
/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よりも全然使いやすいので、ぜひ広めていきたいです!
気になるところがあればご指摘くださいー。

  1. Waza Labさんの記事が参考になります。

  2. Fire Sign Blogさんの記事を参考にしました。

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?