先日、ブログのコメント欄にてopenmediavault(omv)のssl化のご意見いただきました。ありがとうございます。個人的にはあまり利点を感じなかったのですが、調べてみると意外と情報が少なかったのでトライしてみました。
結論から言うと、できたものの、かなりハマったので参考にしてください。
omvをインストールして稼働している前提です。
sslではなくダイナミックDNSで公開
ダイナミックDNSと呼ばれるサービスの中で、コメント欄にもあったようにduckdnsを利用しました。
このサービスは通常は有料である固定IPアドレスの代わりに、動的なIPアドレスが変更しても同じドメインで運用できるようにしてくれるサービスです。有料もありますが、duckdnsは無料です。
ssl化に対応する前に、omvをduckdnsで外に公開してみます。
duckdnsで取得したアドレスでomvへアクセスできるかということです。
手順としてはほぼこの動画の手順通りです。非常に分かり易いです。
ここではomvのプラグインとしてDockerとShellboxをインストールするとありますが、Shellboxはインストールしなくて良いです。何故なら日本語環境では文字が2重に打ち込まれてしまい、全く意味を成しません。

修正も何も面倒なので、Macからrootでssh接続して対応しました。
Dockerがインストールできたら同じ作者の動画で、これまたほぼそのまま参考にします。
動画を何回も見直して行えば間違いないと思います。
下図のように設定します。(一部伏せています)

PUID、PGIDは設定するユーザーから。私の場合は1001と100でした。
TZはタイムゾーンです。大文字小文字などよく分かりませんけど、取りあえずJAPAN/Tokyoとしました。

SUBDOMAINSは、duckdnsで取得した任意の文字列です。(○○.duckdns.orgの○○部分)
TOKENは、DuckDNSのトップページにログインすれば出ています。
この段階まではomv側のプラグインで大丈夫です。Dockerで入れたDuckdnsのプラグインで登録したドメインの「○○○.duckdns.org」で外部から接続可能です。
Wi-Fi内だと異なりますので、iPhoneなりスマホの4G接続でアクセスしてみてください。omvの管理画面へのログイン画面が出てくればOKです。
SSL化
いよいよ、ssl化です。これは別の動画で非常に分かり易いのがあり、一部変更すればそのまま使えそうだったので参考にしました。
これはopenmediavaultではないので、読み替える必要はあるものの、90%はそのままです。何度も観ました!他のサイトの情報も参考にし、自分の環境に読み替える必要があるため、そのままその通りではダメです。
やり直しもできます。ただ、何度も予習した方が良いでしょう。
ハマりポイント!
実はかなりハマったのが、動画の3:40付近から始まる実際の作業の最初であるサービスの停止です。この動画では、ホームアシスタントというサービスを稼働させていますので、それを停止しているのですけど、これはTCPポート80番を使用しているから止めています。
認証を取得する際にTCP80番ポートがバッティングする(バインドする)ため正常に実行できないからです。
実は、同じようにエラーが出ました。
しかし、TCP80番ポートは何も使っていないかと思っていたら、openmediavaltでは標準でサーバーであるnginxが動いていて、それがTCPポート80番を使っています。

どのプロセスが使用しているか調べるコマンドはこちら。(TCPポート80番)
lsof -i:80
接続待ちをしている(LISTEN)TCP、UDPポートを表示するにはこちら
ss -antu netstat -antu
既に通信が確立しているtcpポートの状況を調べるにはこちら
ss -t netstat -t
参考:https://qiita.com/sonoshou/items/cc2b740147ba1b8da1f3
調べると確かにnginxが表示されますね。
そうか、と思ってnginxを停止するコマンドを打ちます。
systemctl stop nginx
そして再び認証を取得する長いコマンドを実行しても、またバインドエラー・・・。ん?
もしやと思ってステータスを確認すると・・・。
systemctl status nginx
停止していないでactiveのままじゃーないですか?!
どうやらアプリとしてサービスとしてデーモンとして、masterプロセスとworkerプロセスと止め方にも色々あるそうな。
ちょっと色んな停止を試してみた。結果としては止まったものの、最終的にどれが有効か分からない・・・。
systemctl stop nginx.service (サービスの停止) nginx -s stop (デーモンの停止) /etc/init.d/nginx stop (フルパスで)
nginxについてこちらのサイトがオススメです。とても詳しく載っていました。

何度かstatusを確認して止まっていることを確認してから、認証を取得するコマンドを打ったらイケました!

成功すると、/etc/letsencrypt/の中に、以下のファイル群が出来上がっています。
そして、その中のliveの中に、○○.duckdns.orgがあり、更にその中に以下のファイル群が出来ています。
これらpemが認証ファイルになります。
最後にスタートさせます。
systemctl start nginx
NginxでのSSLの設定方法
ここでサーバーとして稼働しているNginxにsslの設定をしないとなりません。他にApacheなど他のサーバーで動かすならその設定ファイルになります。openmediavaultではNginxがサーバーなので、そこに認証ファイル(.pemなど)の場所を指定します。
nginx.confにsslの設定を追記する。
sudo nano /etc/nginx/nginx.conf
## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; server { listen 443; ssl on; server_name ○○.duckdns.org; ssl_certificate /etc/letsencrypt/live/○○.duckdns.org/fullchain.pem; # サーバー証明書のパス ssl_certificate_key /etc/letsencrypt/live/○○.duckdns.org/privkey.pem; # 秘密鍵のパス location / { } }
※いつものごとく、スペースは適時合わせてください。
○○.duckdns.orgは自分の環境に合わせてください。
エラーがないか確認
記述した内容が間違っている場合はエラー行が表示されますので、以下コマンドでテストします。
nginx -t
エラーが無ければ以下でリロードして設定を読み込み直しします。
systemctl reload nginx
こちらに詳しく載っていました。感謝です。



SSDドライブ起動させたRaspberry Pi 4 サクサクと愛用中!
コスパが抜群のSSDドライブは内蔵型でいい
Crucial SSD 480GB BX500 SATA3 内蔵2.5インチ 7mm
Raspberry Pi4はメモリー8GBモデルなら余裕
【国内正規代理店品】Raspberry Pi4 ModelB 8GB 技適対応品
USBブートの構築方法を実践
ラズパイ4をUSB接続のSSDから起動する方法(USBブート)
sslで接続OK
これでsslで接続が可能になりました。
iPhoneなり外部から「https://○○.duckdns.org」でアクセスすると、鍵マークが付きます。

あと、Lets Encrypt証明書は有効期限が90日しかないので、crontabに記述します。
crontab -e
以下を追記する。(毎月1日の4:00に更新)
0 4 1 * * root /bin/systemctl stop nginx && /usr/local/src/certbot/certbot-auto renew --force-renewal && /bin/systemctl start nginx
参考:https://sys-guard.com/post-14859/
最後に
sslで接続したのはnginxのhtmlです。あとは、openmediavaultで共有しているファイルに対してsslで接続するには別の設定が必要です。
どれが一番簡単で分かり易いのかちょっと検討しています。
それでもあまり利点がないなーと思ったのは、一時的ならDropboxでもGoogleドキュメントでも代替のサービスがあります。遠隔の操作ならVPNを張るソフトが楽です。
一頃と違って安価で利用できるサービスが面倒もないのでオススメします。
しかし、Raspberry Pi でもここまでできるので、面白い使い方があったらできるように知っておくのはアリですね。
ただ、他の人のようにSynology社のNASを購入した方が何かと簡単で便利かも知れない・・・。
2ベイ(HDD2台)でも安くなったからなー。HDDだって3TBが軽く1万円切っているし・・・。
こういった構築が難しいなーと思ったら、既製品の方がとっても幸せになります。次のセールで買おうかなと本末転倒に思ってます。
Raspberry Pi はもっとエンタメ系の方が楽しいですね!
コメント ご感想をお願いします。
たいへん参考になりました。ありがとうございます。