LoginSignup
8
5

More than 3 years have passed since last update.

RedashをGoogle Compute Engineに立てる

Last updated at Posted at 2018-09-04

RedashをGoogle Compute Engineに立てる手順をまとめました。

環境

  • Google Compute Engine
  • Redash.2.0.0
  • Let's Encrypt

前提条件

  • GCPプロジェクトが作成できていること
  • ドメインが取得できていること

ゴール

  • RedashへGoogle認証でログインできる
  • HTTPS化する

手順

Redashの仮想マシンイメージから仮想マシンを立てる

GCEの仮想マシンイメージを作成。

gcloud compute images create "redash-2-0-0" --source-uri gs://redash-images/redash.2.0.0.b2990.tar.gz

GCEの仮想マシンを起動。推奨は、n1-standard-1だが、g1-smallで始める。
リソースが足りなければ、後でスケールアップする。

gcloud compute instances create redash \
--image redash-2-0-0 --scopes storage-ro,bigquery \
--machine-type g1-small --zone asia-east1-a

GCPのコンソールでファイヤーウォールの設定で、HTTPとHTTPSのトラフィックを許可する。
特定のIPからのみ接続したい場合は、事前に固定IPのみを許容するネットワークタグを作成し、設定する。

スクリーンショット 2018-09-04 20.51.56.png

外部IPアドレス設定からタイプを"静的"に設定する。

Cloud DNSでドメインと静的IPをマッピングする。

Let's EncryptでHTTPS化する

Let's Encryptのクライアントcertbotをインストールする。

wget https://dl.eff.org/certbot-auto

一時的に、nginxの設定をデフォルトに戻す。

sudo rm /etc/nginx/sites-enabled/redash
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-available/

certbotで証明書を作成する。

./certbot-auto certonly --webroot -w /var/www/html -d {自身のドメイン}

nginxの設定を変更する。

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/letsencrypt/live/{自身のドメイン}/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/{自身のドメイン}/privkey.pem;

  # 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;
  }
}

nginxの設定をもとに戻す。

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/redash /etc/nginx/sites-available/

nginxを再起動する。

Google認証を有効化する

GoogleのクライアントIDとクライアントシークレットを環境変数に設定する。
/opt/redash/.env に設定すればよい。

export REDASH_GOOGLE_CLIENT_ID=""
export REDASH_GOOGLE_CLIENT_SECRET=""

ドメインを設定する。

cd /opt/redash/current
sudo -u redash bin/run ./manage.py org set_google_apps_domains {自身のドメイン}

参考

8
5
0

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
8
5