GCEで、GoogleDomains でドメインを取得して、SSL接続できるredashを立ち上げる

redashwoGCEにhttpsで接続できるようにしたので、メモついでに書いておきます

## 読む人
- GCEでredashを立ち上げたい人

## この記事のゴール
- GCEにredashを立ち上げて、admin画面を表示する

## 結論
1. [GCEにredashをインストールする](https://redash.io/help/open-source/setup#-Google-Compute-Engine)
2. [GCEにSSLでredashに接続する](https://gist.github.com/arikfr/64c9ff8d2f2b703d4e44fe9e45a7730e)

1., 2をちゃんとやればなんとかなるはず

## 1. GCEにredashをインストールする Tips
### インスタンスを作る

[re:dash ドキュメント](https://redash.io/help/open-source/setup#-Google-Compute-Engine)に書いてあるshellを実行していく
※versionが、けっこう変わっていくので注意

- bigqueryを使う場合は、インスタンスを作る場合は、scopでbigqueryを指定する
- machine-typeは`f1-micro`だとメモリアウトしちゃうので、`g1-small`を指定することをおすすめします(redashのドキュメントではもう一個上のインスタンスをしてすることをおすすめしています。)

```shell

$ 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  
--scopes storage-ro,bigquery  
--machine-type g1-small --zone asia-northeast1-a
```

http, https アクセスを許可する

```shell
gcloud compute instances add-tags redash \
      --tags http-server,https-server \
      --zone us-west1-a
```

### ドメインを割り当てる

- GCPコンソールで静的アドレスを取得
- 静的アドレスとドメインをひもづける。(Aレコード）

<img width="1596" alt="スクリーンショット_2019-06-10_02_09_29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112515/beee98d2-a2d2-0382-3add-5a6177b8c9fd.png">

## 2　GCEにSSLでredashに接続する
- [GCEにSSLでredashに接続する](https://gist.github.com/arikfr/64c9ff8d2f2b703d4e44fe9e45a7730e) このgistのREADMEをちゃんとやれば大丈夫なはず
- example.redash.com をちゃんと置換する(ここにはまった)
- フォルダ名でも使っていて、全5箇所あるので注意


# トラブルシューティング

## nginx が restarting になって動かない

```sh
root@re-dash:/opt/redash# docker-compose ps
          Name                         Command               State                    Ports
-------------------------------------------------------------------------------------------------------------
redash_adhoc_worker_1       /app/bin/docker-entrypoint ...   Up      5000/tcp
redash_nginx_1              /docker-entrypoint.sh ngin ...   Restarting..      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
redash_postgres_1           docker-entrypoint.sh postgres    Up      5432/tcp
redash_redis_1              docker-entrypoint.sh redis ...   Up      6379/tcp
redash_scheduled_worker_1   /app/bin/docker-entrypoint ...   Up      5000/tcp
redash_scheduler_1          /app/bin/docker-entrypoint ...   Up      5000/tcp
redash_server_1             /app/bin/docker-entrypoint ...   Up      0.0.0.0:5000->5000/tcp

```

### 対応方法

以下で nginx の logを確認します。

```
docker-compose logs nginx
```

自分の場合は以下のようになっていました。
`/var/log/nginx/error.log` を確認すると、ディレクトリーになっていました。そのため、 `rm -rf access.log` `rm -rf error.log` を排除し、`touch access.log` `touch error.log` でlogファイルを置き直しました。そしたら、直りました。


```
nginx_1             | 2021/02/01 03:52:29 [emerg] 1#1: open() "/var/log/nginx/error.log" failed (21: Is a directory)
nginx_1             | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
nginx_1             | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
nginx_1             | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx_1             | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
nginx_1             | 10-listen-on-ipv6-by-default.sh: error: /etc/nginx/conf.d/default.conf differs from the packaged version
nginx_1             | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx_1             | /docker-entrypoint.sh: Configuration complete; ready for start up
nginx_1             | nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (21: Is a directory)
```