使用 Caddy 一键脚本安装,再使用 CloudFlare 作为前置代理,会出现开机启动错误。原因是 Caddy 无法获取 Let’s Encrypt 证书。解决方法是安装**tls.dns.cloudflare**插件。要使用插件需要设置 CloudFlare 变量,有三种方案:

注意:VPS 使用的操作系统是 Debian 10,Caddy 配置中 tls [email protected],改成 tls { dns cloudflare }

设置临时变量

设置 CloudFlare 临时变量,关闭 SSH 自动清除。
export CLOUDFLARE_EMAIL="CloudFlare 邮箱" ``export CLOUDFLARE_API_KEY="CloudFlare 全局密钥"
查询设置的 CloudFlare 环境变量
echo $CLOUDFLARE_EMAIL
echo $CLOUDFLARE_API_KEY
正常后重启 Caddy 。

设置永久环境变量

VPS 重启需要 SSH 登陆,执行一些命令。

设置全局变量

执行sudo vim /etc/profile,再适当的位置添加 CloudFlare 邮箱和密钥。保存,执行 source /etc/profile,使变量生效,重启 Caddy 。

推荐设置

在 Root 模式下,执行vim .bashrc,输入 source /etc/profile 和 Caddy 重启命令,这样使用sudo su切换 Root 自动执行命令。

使用脚本,开机自动执行命令(推荐)

编写脚本(root模式下)

vim caddy.sh,内容如下

#!/bin/bash

export CLOUDFLARE_EMAIL="[email protected]"

export CLOUDFLARE_API_KEY="xxxxxx"

/etc/init.d/caddy restart

介绍: CloudFlare 邮箱,CloudFlare 全局密钥,Caddy 重启命令

执行chmod +x caddy.sh,赋予执行权限。

开机自动执行命令

Root 模式下 crontab  -e,新建定时任务。

@reboot sleep 10 && bash /root/caddy.sh

解释: 开机重启 10 秒,执行 /root/caddy.sh下的命令。

补充:

可以使用 CloudFlare 的加密证书,格式改为如下:

域名:443 {

tls 公钥证书完整路径 私钥证书完整路径

}

参考:

    1. 一个极简的HTTP Server: Caddy一键安装脚本,带网站配置教程
    2. Bash Shell 脚本编程基础
    3. 重启Linux主机后自动运行任务或者脚本
    4. Caddy (Linux) CloudFlare Credentials Missing
    5. Cloudflare 成功击毙了 Caddy server
    6. 使用Caddy申请免费的Let’s Encrypt泛域名SSL证书