Dokkuのletsencryptプラグインの自動更新失敗後の手動更新

公式サイトdokku-letsencrypt のとおりに dokku letsencrypt:cron-job --add を実行して、dokkuユーザーのcrontabに自動更新コマンドが設定されていることは確認済みだったが、Let’s EncryptからSSL証明書の有効期限まであと20日ですよ、というメールが届いた。

更新コマンドの手動実行

更新コマンドを手動実行したがまだ証明書の有効期限が残ってるよ、と言われて更新できない。

ubuntu$ dokku letsencrypt:ls
-----> App name           Certificate Expiry        Time before expiry        Time before renewal
gnote                     2019-08-03 14:20:12       19d, 22h, 20m, 21s        19d, 22h, 18m, 51s

ubuntu$ dokku letsencrypt:auto-renew
=====> Auto-renewing all apps...
       gnote still has 19d, 22h, 18m, 24s days left before renewal
=====> Finished auto-renewal
gnote still has 19d, 22h, 18m, 24s days left before renewal

ubuntu$ dokku letsencrypt:auto-renew gnoteubuntu$ dokku letsencrypt gnote などのコマンドも試したがNG。

Nginx再起動や、Nginxを停止してから上記コマンドの実行なども試したが、いずれも全く同じメッセージが返ってきた。

証明書の手動削除

仕方がないため手動で証明書を削除。

ubuntu$ dokku letsencrypt:revoke gnote
=====> Revoke Let's Encrypt certificate from gnote...
-----> Updating letsencrypt docker image...
latest: Pulling from dokkupaas/letsencrypt-simp_le
Digest: sha256:XXXXXXXXXXXXX
Status: Image is up to date for dokkupaas/letsencrypt-simp_le:latest
       done updating
-----> Revoking letsencrypt certificate for gnote...
        - Domain 'gnote.ujull.com'
darkhttpd/1.12, copyright (c) 2003-2016 Emil Mikulic.
listening on: http://0.0.0.0:80/
-----> Certificate revoked successfully.
-----> Removing SSL endpoint from gnote
-----> Configuring gnote.ujull.com...(using built-in template)
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
       Reloading nginx
nginx.service is not active, cannot reload.
       done

証明書の再インストール

証明書インストールコマンド実行するも、うまくインストールされない。

ubuntu$ dokku letsencrypt gnote
=====> Let's Encrypt gnote
-----> Updating letsencrypt docker image...
latest: Pulling from dokkupaas/letsencrypt-simp_le
Digest: sha256:XXXXXXXXXXXXX
Status: Image is up to date for dokkupaas/letsencrypt-simp_le:latest
       done updating
-----> Enabling ACME proxy for gnote...
nginx.service is not active, cannot reload.

ubuntu$ dokku letsencrypt:ls
-----> App name           Certificate Expiry        Time before expiry        Time before renewal

$ dokku ps:stop gnote で停止してから上記コマンドの実行したり、Dokkuのアプリを再起動してから実行したが、うまくいかず。

サーバーの再起動

ubuntu$ reboot で再起動してからSSL証明書の再インストールをしたら、うまくいった。

自動更新が失敗した理由はよくわからなかったが、ひとまず手動更新で失敗する場合は、サーバー再起動を試してもよさそう。