質問: certbot-autoのcronが動きません。 以下のコマンドを cron に設定しています。 ``` #分 時 日 月 曜日 <実行コマンド> # SSL更新 27 9 3 * * /home/hideki/certbot/certbot-auto renew --force-renewal 40 9 3 * * sudo service nginx restart ``` root権限 で 手動で ``` /home/hideki/certbot/certbot-auto renew --force-renewal ``` をやれば動くのですが、cronだと動きません。 どうすれば良いでしょうか?
回答: まず--force-renewalはやめた方がいいです。 残り90日でも更新するのでcertbotのサーバに負荷がかかります。 cronのタイミングで調整するのも良いですが、それだとcronがエラーだった時に次の起動までの間に認証が切れるかも知れません。 なので2週間に1度とか1週間に1度とかでcronを起動し、残日数が多い場合は更新しない......等の方が運用上安心です。 certbotのcronはcrontab -eなどのコマンドは使用せず、 /etc/cron.d/ に letsencrypt を作成し、その中に直書きした気がします。 また、恐らくパスが分からないってエラーが出ると思うので echo $PATH で出てきたパスを/etc/cron.d/letsencryptの1行目に書いてください。 (環境によってパスが違います) ``` 例:/etc/cron.d/letsencrypt PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin 27 9 3 * * /home/hideki/certbot/certbot-auto renew --webroot-path /var/www/html/ --post-hook "service nginx restart" ``` (post-hookはrenewされたら実行されるので、証明書の更新が無かった場合は実行されません。) renewのオプション等についてはググったりして適切なものを選んでください。 多分こんな感じでいけるはず......