見出し画像

MyDNSでLet's Encryptを使う

code-serverでコードを書き始めたのですが、terminalでコピーするにはhttpsで接続する必要があるそうで、VPNにしたんだけどhttpsも設定することにしました。

httpsといえばLet's Encrypt。core-serverは外部に公開してないから普通にHTTP経由ではLet's Encryptの設定ができないのでDNSを使う必要がある。そしてドメインは適当なDynamic DNSを使いたい・・・と思って検索したらMyDNS.jpDNSを使ったLet's Encryptの認証をサポートしてました。

適当にMyDNSのアカウントを作り、サーバのローカルIPを手動でDNSに設定したあと、下記のコマンドでLet's Encryptの証明書の取得とrenewの設定を行います。

GROUP=1001 MYDNSJP_DOMAIN=XXXX.mydns.jp MYDNSJP_MASTERID=mydnsXXXXX MYDNSJP_MASTERPWD=XXXX EMAIL=mydns@example.com bash -c "$(curl -sSL https://gist.githubusercontent.com/masuidrive/68ef9e612003fe33a23742679ea50794/raw/eb7fe374f833f539ebe879490df2cfe83c8de56f/set_mydns_and_letencrypt.sh)"

これで`/etc/letsencrypt/live/XXXX.mydns.jp/`フォルダに証明書とキーが生成されるので、`/etc/systemd/system/code-server.service`の`ExecStart`行に下記のオプションを追加します。

--cert /etc/letsencrypt/live/XXXX.mydns.jp/fullchain.pem --cert-key /etc/letsencrypt/live/XXXX.mydns.jp/privkey.pem

これで下記のコマンドでcode-serverを再起動して、指定したMyDNSドメインを開くとhttpsで接続されます。今後IPアドレスでは繋がらなくなります。

systemctl daemon-reload
systemctl restart code-server.service

画像2