dockerアプリのSSL化成功 but

Memosというオープンソースのメモ帳アプリをここ数年使っているなか、メインサイトの
このブログサイトのSSL化はLetsencryptを利用して証明書を作り利用している。

しかしMemosというアプリケーションはssl化できていない。理由はこれはcontainerを利用したアプリで、そのサイトをssl化するノウハウがなかった。
一方書いたメモを公開する場合もあるので、その際にhttpサイトだとユーザーがアクセスしにくいと考えSSL化をやってみた次第。手順はAIのGemini2.0Flashに説明してもらった。

コンテナアプリサイトのSSL化手順

shimada-farm.net:5230 で運用されているコンテナアプリサイト (neosmemo/memos) をSSL化する手順は以下の通りです。

前提条件

  • 既に shimada-farm.net のSSL証明書をLet’s Encryptで取得済みであること
  • nginxがwebサーバーとして稼働していること
  • dockerコンテナが正常に稼働していること

手順

  1. nginx設定ファイルの編集:
    nginxの設定ファイル (wordpress.conf) に、コンテナアプリ用の設定を追加します。
server {
server_name shimada-farm.net;
listen 5230 ssl;ssl_certificate /etc/letsencrypt/live/www.shimada-farm.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.shimada-farm.net/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

location / {
    proxy_pass http://127.0.0.1:5230;
    proxy_set_header Host $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;
}
}

  • server_name はコンテナアプリにアクセスする際のURL (shimada-farm.net) を指定します。
  • listen はコンテナアプリがlistenしているポート番号 (5230) とSSL (ssl) を指定します。
  • ssl_certificatessl_certificate_key はLet’s Encryptで取得したSSL証明書のパスを指定します。 proxy_pass はコンテナアプリがlistenしているアドレスとポート番号 (http://127.0.0.1:5230) を指定します。
  • proxy_set_header はproxyヘッダーを設定します。

2. nginxの再起動:
sudo systemctl restart nginx

nginxの設定ファイルを変更したら、nginxを再起動して変更を反映させます。

確認

ブラウザで https://shimada-farm.net:5230 にアクセスし、コンテナアプリがSSL化されていることを確認します。

注意事項

  • コンテナアプリ側でHTTPSの設定を行う必要はありません。nginxがSSL終端処理を行います。
  • Let’s Encryptの証明書は定期的に更新する必要があります。自動更新の設定を行うことを推奨します。

その他

上記の手順でSSL化がうまくいかない場合は、以下の点を確認してください。

  • nginxの設定ファイルに誤りがないか
  • SSL証明書のパスが正しいか
  • dockerコンテナが正常に稼働しているか
  • ポート5230が外部からアクセス可能になっているか

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.