2025-02-04
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コンテナが正常に稼働していること
手順
- 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_certificate
とssl_certificate_key
はLet’s Encryptで取得したSSL証明書のパスを指定します。proxy_pass
はコンテナアプリがlistenしているアドレスとポート番号 (http://127.0.0.1:5230) を指定します。proxy_set_header
はproxyヘッダーを設定します。2. nginxの再起動:
sudo systemctl restart nginxnginxの設定ファイルを変更したら、nginxを再起動して変更を反映させます。
確認
ブラウザで
https://shimada-farm.net:5230
にアクセスし、コンテナアプリがSSL化されていることを確認します。注意事項
- コンテナアプリ側でHTTPSの設定を行う必要はありません。nginxがSSL終端処理を行います。
- Let’s Encryptの証明書は定期的に更新する必要があります。自動更新の設定を行うことを推奨します。
その他
上記の手順でSSL化がうまくいかない場合は、以下の点を確認してください。
- nginxの設定ファイルに誤りがないか
- SSL証明書のパスが正しいか
- dockerコンテナが正常に稼働しているか
- ポート5230が外部からアクセス可能になっているか