おはこんばんにちは!
今日も冷え込みますね..._(:3 」∠)_
先日、AWS EC2にfeed-generatorをやってみました。
feed-generatorを公開するためには、https接続が必要になってますので、備忘録?やったことメモになります。
- HTTPSに対応させるために独自ドメインを取得
- Route53に独自ドメインを割り当てる
- お名前.com側のDNS設定
- 証明書の取得
- プロジェクトフォルダ内にファイル追加・編集
- docker-compose再ビルドして立ち上げ
- 参考サイト
HTTPSに対応させるために独自ドメインを取得
EC2インスタンスのパブリックDNSは、Let's Encryptに対応していないので独自ドメインを各自で取得する必要があります。
独自ドメインを取ったりするのは、省略〜_(:3 」∠)_
私は、お名前.comでドメインを管理しているので、お名前.comとの設定方法になります。
Route53に独自ドメインを割り当てる
まず、AWSコントロールパネルで、Route53へアクセスして、ホストゾーンの作成を行います。
ドメイン欄には、取得したドメインのサブドメインを入力します。
タイプ欄は、パブリックホストゾーンのままで、『ホストゾーンの作成』ボタンを押して作成します。
一覧に、作成したサブドメインが追加されているので、選択して詳細画面へ行きます。
詳細画面では、『レコードを作成』ボタンを押してレコードを追加します。
作成画面では、値の入力欄にEC2インスタンスのパブリック IPv4 アドレスを入力します。
本当はAWS Elastic IPでIPアドレスを固定した方が良いんですけど、自分用なので変わったら再設定すればいいや精神で、Elastic IPの設定を省略してます。
ホストゾーンの詳細のところを開いて、ネームサーバーの4つのアドレスを控えておきます。
お名前.com側のDNS設定
お名前.comへログインをして、メニュー画面から、『ドメインのDNSレコード設定(DNS設定/転送設定)』画面へ行きます。
『DNSレコード設定を利用する』画面へ向かって、NSを追加していきます。
登録済みの画像ですけど、上記のようになればOKです。
これはすぐに反映されないので、完了メールが来るまで気長に待ちましょう。
ネームサーバーの確認で、Route53で設定したEC2インスタンスのパブリックIPアドレスが表示されたら設定が終わっているはずです。
$ dig aws.example.com # 下記のようなのが出力される ... ;; QUESTION SECTION: ; aws.example.com. IN A ;; ANSWER SECTION: aws.example.com. 1 IN A 123.45.678.90 ...
証明書の取得
https接続するために、証明書やらの取得が必要になります。
# certbotのインストール $ sudo yum install -y certbot # 証明書の取得をするために80ポートを使用するため、一旦dockerを停止 $ sudo docker-compose down # 証明書の取得 $ sudo certbot certonly --standalone -n --agree-tos --email example@example.com -d aws.example.com
実行すると下記パスにファイルが追加されているはずです。
# 証明書 /etc/letsencrypt/live/aws.example.com/fullchain.pem # 秘密鍵 /etc/letsencrypt/live/aws.example.com/privkey.pem
プロジェクトフォルダ内にファイル追加・編集
プロジェクトフォルダ直下にDockerfile用の.envファイル追加
SSL_CRT_PATH=/etc/letsencrypt/live/aws.example.com/fullchain.pem SSL_KEY_PATH=/etc/letsencrypt/live/aws.example.com/privkey.pem
docker-compose.ymlファイルを編集
... environment: # VIRTUAL_HOSTを変更 - VIRTUAL_HOST= aws.example.com - VIRTUAL_PORT=3000 ... volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./vhost.d:/etc/nginx/vhost.d:ro # 下記を追記 - ${SSL_CRT_PATH}:/etc/nginx/certs/aws.example.com.crt - ${SSL_KEY_PATH}:/etc/nginx/certs/aws.example.com.key ...
feed-generatorの.env編集
# 設定したサブドメインに書き換え FEEDGEN_HOSTNAME="aws.example.com"
ファイル名を変更する
vhost.dフォルダ内にある『ec2〜.compute.amazonaws.com』を 『aws.example.com』にファイル名を変更します。
docker-compose再ビルドして立ち上げ
編集したファイルたちを、EC2インスタンスへアップロードして、docker-composeコマンドを実行します。
$ sudo docker-compose up -d --build
下記URLにアクセスして、なんかjson情報が表示されるか確認してみます。
https://aws.example.com/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://(DID ID)/app.bsky.feed.generator/whats-alf