Connect acme.sh via IFTTT
acme.sh 是一个使用纯 posix shell 实现的 ACME 协议,经常被用来自动申请更新 tls 证书。在最近的更新中 acme.sh 新增了 notify 特性,该功能可以将每次定时任务的(成功更新、跳过、失败等)状态通过指定的方式发送通知。目前可用的的通知方式以及使用方式可见该项目的 wiki 页。
Obtain IFTTT Webhooks API Key
其实我已经在使用 IFTTT 很久了,但是最近才知道它支持 webhooks 作为触发器。在使用之前我们需要先进行一些简单的配置,可以在 IFTTT 中搜索 Webhooks 服务,在该页面点击 Connect 后就算是配置好啦。再次回到该页面点击右上角的 Documentation 按钮,就可以看到自己的 Key 和一个简单的教程。需要注意的是这个 Key 是和账户绑定的,不要轻易泄漏。
要触发一个 Webhooks 事件,需要前面得到的 API Key 和一个事件名称(在建立 IFTTT Applet 时指定)。IFTTT 会使用 Key 来识别用户,再根据事件名称来确定应该触发该用户的哪个 Applet。
Create an IFTTT Applet Triggered by Webhooks
接下来我们就可以建立自己的 Applet 了,将 “This” 配置为 Webhooks 时会让用户指定一个 event name 即事件名称,本文填写了 acme_status
作为例子。而 “That” 则可以选择我们喜欢的服务啦。
Setup Notify for acme.sh
acme.sh
命令使用 --set-notify
来配置 notify 功能:
1 | export IFTTT_API_KEY=xxxx # setup api key |
该命令会尝试触发一次 Webhooks,我们可以通过 Applet 的运行状态来判断 acme.sh notify 特性是否配置成功。
IFTTT Webhooks 的消息体支持三个自定义域,分别是 value1
, value2
和 value3
。acme.sh 默认使用 value1
来发送 notify 的标题,使用 value2
来发送 notify 的正文,我们可以在配置 acme.sh 时通过设置 IFTTT_SUBJECT_KEY
和 IFTTT_CONTENT_KEY
环境变量来分别指定标题和正文所使用的域。注意两个变量不可以指定相同域。