SynologyのNASでdocker環境のNginxをhttpsでを使ってみた

SynologyのNASでDockerでWebサービスを稼働できるか確認しました。

現時点ではまだ備忘録の段階で、最終的にはルータでポートの開放を行い、既存のサーバの置き換えを行う予定です。
その前段階として、Let'sEncryptの証明書も取得できない段階ですが、「dockerコンテナへhttpsで通信ができるか」の確認を行いました。

DSM(DiskStation Manager)のあの機能はどこにあった？など、ここを見て設定ができるようにと記録を残すことにしました。

#### 背景
* すでにLinuxサーバで稼働しているWebサービスがある
* NASでWebサーバが使えることを知ったので、ここに移行できるかまずは、Nginxのコンテナを起動して確認する
* 動作確認の段階なので 証明書はNASにインストールされている自己証明書を使う
* ルータでポート変換するので ポートは443以外のポートでも問題ない

#### 概要
NASとしてはhttpsをポート18080で待ち受ける
NASのリバースプロキシで18080(https)--->8088(http)
Dockerコンテナはホスト側(8088)-->コンテナ側(80)

　　ここは後で図を描く予定です

#### NAS DiskStation Managerでの設定
DiskStation Managerのバージョンは7.1.1
1. テスト環境としてDNSを設定
・ パッケージセンターから「DNS Server」をインストール
・ 「DNS Server」を開き、「作成」→「プライマリーゾーン」
・　ドメイン名：local.dockertest.tokyo  (テスト中のアクセスで使う名前)
　　プライマリDNSサーバ：192.168.1.1　（ルータのIPアドレス）
![スクリーンショット 2023-03-28 13.42.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/c1fe2a1e-1596-e28d-9802-5f888bc9acb5.png)

・ゾーンID「local.dockertest.tokyo」が作成されるので、右クリックして「リソースレコード」を選択
![スクリーンショット 2023-03-28 13.46.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/a9632a92-907a-726b-3538-23b90a83cff6.png)
![スクリーンショット 2023-03-28 13.47.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/3485ccb0-4b3b-a147-2dc2-c8536a004b18.png)


・作成→Aタイプを選択し、IPアドレスにNASのアドレスを入力

2. リバースプロキシの設定
　リバースプロキシでhttps(18088)をhttp(8080)に転送する設定を行う
・コントロールパネル → ログインポータル → 詳細設定 →　リバースプロキシ
![スクリーンショット 2023-03-28 14.02.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/49280148-0c93-3c15-66d2-f57a014b300b.png)
・リバースプロキシ規則の入力
![スクリーンショット 2023-03-28 14.04.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/2471c1e8-7df1-8a46-16b6-a0d5e48616d0.png)

(1) 任意　識別するための名前　（プロキシ名を反転は翻訳の誤り？）
Target
(2) プロトコル：HTTPSを選択
(3) ホスト名：NASにアクセスする時の名前　このテストではDNSで仮に設定した名前
送り先
(4) ポート：ブラウザでNASにアクセスする時のポート番号
(5) ホスト名：localhost
(6) ポート：8088   Dockerのホスト側ポート

#### NAS でのDockerコンテナの起動
・ Dockerコンテナで表示しているページなのか識別できるように、Nginxで表示するindex.htmlを作成する
　ディレクトリは作業用アカウントのHOMEディレクトリに作成したdockerWebDirディレクトリを使用する
```index.html
rainuser@DS1621-3:~$ cat /volume1/homes/rainuser/dockerWebDir/index.html 
Displayed with docker's nginxi<br>
on DS1621 Made by Taro
```

・ dockerコンテナの起動

```console
rainuser@DS1621-3:~$ docker run --name hello-nginx --rm -v /var/services/homes/rainuser/dockerWebDir:/usr/share/nginx/html:ro -d -p 8088:80 nginx
bfd7c8b1a4905f04a1d6fd06693d56f462a37b5262d8e7c52d490e4c5894aa52
```

#### ブラウザでの動作確認

・ ブラウザからはhttpsを指定して、DNSサーバで作成してテスト用のドメイン名でアクセスする
![スクリーンショット 2023-03-28 14.55.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/c05fbf69-7d3d-2e08-d5ce-c55614ff2bd2.png)


・ 自己証明書を使用しているので、この時に「自己署名証明書の警告」が表示されるので、「危険を承知で表示」などを選択してページを表示させる
下記はsafariでの表示例　「危険性を理解している場合は　このWebサイトを閲覧できます」の赤枠部分をクリックする
![スクリーンショット 2023-03-28 16.43.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/95ba91ee-d779-5899-1f4b-554dc0e436cc.png)



下記はFirefoxで証明書を確認した時の表示で、「安全ではありません」「セキュリティ例外として追加されました」と表示されているが、httpsで接続できた
![スクリーンショット 2023-03-28 14.57.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45016/2478511b-8832-eca4-4061-25980ef6bb25.png)