dockerアプリのSSL化成功 but

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

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

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

コンテナアプリサイト (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が外部からアクセス可能になっているか

結局

AIの力を借りてSSLはできたのだがその途中で今迄蓄積されていたメモのデータが消えてしまった。そのデータ復元もAIの力を借りてやっているのだが、どうやら行き詰まった。このためMemosのコミュニティに質問もしているが反応はなし。大したデータは入っていなかったのだが、復元できなかったという事実がくやしい。

Add a Comment

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

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