./letsencrypt-auto run -d akimasa.jp -d www.akimasa.jp -d blog.akimasa.jp --renew-by-default
で自動化できると思いきや、いろいろと足りなかった。まず、crontabで実行するときの環境変数PATHが足りないようで、apacheが検出できない。PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
を適当なシェルスクリプトの最初に書いておいて、そっから実行するようにした。
ほかに、引数として--no-redirect --non-interactive --apache
が足りていなかったので、ユーザーの操作を求められたり、プラグインの指定が無いと言われたりする。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
を実行するようにしておいたらなんとかなった。ただ、一定期間に発行できる証明書の数をオーバーしてしまって発行できない状態なので、これが本当に機能するのか謎である。
./letsencrypt-auto run -d akimasa.jp -d www.akimasa.jp -d blog.akimasa.jp --renew-by-default --no-redirect --non-interactive --apache
ちなみに、実際のシェルスクリプトはslackへの通知を行う1> >(in="STDOUT:" postbot) 2> >(in="STDERR:" postbot)
とかがついたり、postbotの関数があったりする。process substitutionではfdが返ってくるとよく知らなくて、echo "hogehoge" >(postbot)
をやっても、何か変なゴミが出力されているし、postbotで何故か標準入力を受け取れないなあとか思ってしまった。echo "hogehoge" 1> >(postbot)
と書くべきだったな