最新の情報で日本語化されてるものがなかったので、手順をまとめておきます。
手順は難しくないので、初見でも10分くらいで環境構築できるかなと思います。良い時代ですね。
環境
- Google Compute Engine
- Redash 8.0.0
- docker
- Let's Encrypt
目標
- Redash環境をGoogle Compute Engine上に作る
- Redashにログインできる
- https化する
前提
- GCPプロジェクトが作成できていること
- ドメインが取得できていること
参考
この記事の内容は、だいたいここに書いてあることの日本語訳です。
Setting up a Redash Instance
こちらの記事内容を最新にしたものが、この記事の内容となります。(フォーマットを参考にさせていただきました)
https://qiita.com/t-oi/items/6fd670b89ed71a7928d4
作業手順
インスタンスの作成
GCP上でCloud Shellを開き、以下を実行
# プロジェクト名を設定
$ gcloud config set project PROJECT_ID
# redashイメージを取得
$ 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 --zone asia-northeast1-a
ドメインの紐付け
VPCネットワーク > 外部IPアドレス > タイプ より、「エフェメラル」を「静的」に変更してIPアドレスを永続化。
永続化したIPアドレスを、自身のDNSのAレコードに追加しドメインを紐付け。(ここは省略します)
Redash側の設定
ここまでで、設定したドメインにアクセスすればセットアップ画面が開くようになっている。
セットアップ画面で必要事項を記入する。
HTTPS化
公式の説明の上部注意書きの通り、このページの説明は古くなっているので、以下のgistを参考に作業する。
https://gist.github.com/arikfr/64c9ff8d2f2b703d4e44fe9e45a7730e
Compute Engine > VMインスタンス > 接続 > SSH を使い、インスタンスにSSHして作業する。
$ sudo su
$ cd /opt/redash
$ mkdir nginx && mkdir nginx/certs && mkdir nginx/certs-data
# ファイルの内容はgist参照
$ vi nginx/nginx.conf
# nginxのサービスに、portsとvolumesを追加
$ vi docker-compose.yml
# 再起動
$ docker-compose up -d
# 証明書の発行(ドメイン名を適宜変えてください)
$ docker run -it --rm \
-v /opt/redash/nginx/certs:/etc/letsencrypt \
-v /opt/redash/nginx/certs-data:/data/letsencrypt \
deliverous/certbot \
certonly \
--webroot --webroot-path=/data/letsencrypt \
-d example.redashapp.com
# メールアドレスを聞かれたりするので入力する
# SSL用のnginx.confに書き換え
$ vi nginx/nginx.conf
# 再起動
$ docker-compose restart nginx
ここまでで、httpsでアクセスできるようになる。
※GCPインスタンスでhttp接続を許可していないと証明書の更新がうまく行かないので注意。
証明書の更新
以下コマンドで更新できる。
(gistにコメントが付いている通り、gistのコマンドは間違っているので注意)
$ sudo 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
$ sudo docker-compose kill -s HUP nginx
cronで更新させたい場合は、rootで登録すべきなことに注意する。
sudo crontab -u root -e
# 毎月1日に実行したければ以下(renew-certificate.shの中身は上)
# 0 0 1 * * sudo sh /opt/redash/renew-certificate.sh
その他
環境変数を変更したければ、 vi /opt/redash/env
する。
例えば、redashのdatetimeの表示を変更するには、以下の環境変数で変更できる。
REDASH_DATE_FORMAT=YYYY/MM/DD