2025-02-04
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コンテナが正常に稼働していること
手順
- 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が外部からアクセス可能になっているか
結局
AIの力を借りてSSLはできたのだがその途中で今迄蓄積されていたメモのデータが消えてしまった。そのデータ復元もAIの力を借りてやっているのだが、どうやら行き詰まった。このためMemosのコミュニティに質問もしているが反応はなし。大したデータは入っていなかったのだが、復元できなかったという事実がくやしい。