app.yml 中哪个 Let’s Encrypt 变量名是正确的?

大家好,

在重新构建过程中,我看到了警告:

“Let’s Encrypt 电子邮件未设置”

但在我的 app.yml 中我已经有了这一行:

LETSENCRYPT_ACCOUNT_EMAIL: myemail@example.com

我的证书有效,并且跳过了颁发。启动器打印了正确的警告。

在更新任何内容之前,有人能确认一下吗:

  • LETSENCRYPT_ACCOUNT_EMAIL 是一个旧的/遗留的变量吗?

  • 正确的现代变量名称现在是:

letsencrypt_email:

我应该删除旧的变量并切换到新的变量以避免警告并确保自动续订正常工作吗?

谢谢!

感谢到目前为止的回复——我进一步调查了一下,想确认我是否正确理解了这一点。

我的安装最初是使用 ./discourse-setup 创建的,它在 app.ymlenv: 下添加了

LETSENCRYPT_ACCOUNT_EMAIL: myemail@example.com

从那时起,Let’s Encrypt 一直成功颁发和续订证书,并且当前的 web.letsencrypt.ssl.template.yml 似乎仍然使用 LETSENCRYPT_ACCOUNT_EMAIL 作为它所依赖的环境变量。今天在一次新的测试安装中,我看到了通常的引导输出:

I, [2025-12-07T12:29:22.272059 #1]  INFO -- : Replacing # after ssl with if [ -n "$LETSENCRYPT_ACCOUNT_EMAIL" ]; then
  if [[ ! "$LETSENCRYPT_ACCOUNT_EMAIL" =~ ([^@]+)@([^\\.]+) ]]; then
    echo "LETSENCRYPT_ACCOUNT_EMAIL is not a valid email address"
    exit 1
  fi
  /usr/local/bin/configure-ssl
  exec /usr/local/bin/configure-letsencrypt
else
  echo "LETSENCRYPT_ACCOUNT_EMAIL ENV not set. Skipping Let's Encrypt setup."
fi
# after ssl in /etc/runit/1.d/install-ssl

这与模板中的内容相符。

然而,当我运行 ./launcher rebuild app 时,我看到一条警告,内容大致是“Let’s Encrypt email not set”(未设置 Let’s Encrypt 电子邮件)。通过阅读 launcher 和相关文档,这似乎来自于一个较新的配置检查,它查找合并配置中是否存在 letsencrypt_email 键,而不是旧的环境变量 LETSENCRYPT_ACCOUNT_EMAIL

所以我认为目前的情况是:

  1. Docker Let’s Encrypt 模板仍然使用 LETSENCRYPT_ACCOUNT_EMAIL 作为驱动 acme.sh 和续订的环境变量。
  2. 一些较新的检查(例如打印“Let’s Encrypt email not set”的检查)只查找配置中的 letsencrypt_email
  3. 这可以解释为什么证书颁发/续订工作正常,但重建仍然会打印警告。

我希望从团队那里得到一些澄清:

  1. 对于标准的 ./discourse-setup 安装,LETSENCRYPT_ACCOUNT_EMAIL 仍然是 app.yml 中预期的变量名,还是我们现在应该使用 letsencrypt_email
  2. LETSENCRYPT_ACCOUNT_EMAIL 是被视为遗留但受支持的,还是有计划将模板迁移到新的键?
  3. 对于当前使用 LETSENCRYPT_ACCOUNT_EMAIL 且续订有效的现有安装,推荐的方法是:
    • (a) 什么都不做,安全地忽略 launcher 警告,还是
    • (b) 在 env: 中添加一个 letsencrypt_email: 条目(使用相同的地址)纯粹是为了满足较新的检查?

我主要想让配置与“官方”方向保持一致,并避免在 Let’s Encrypt 集成未来重构时出现意外情况。

再次感谢指导,并感谢您确认这里的预期情况。

我相当确定那不重要。Let’s Encrypt 不再发送通知了。

2 个赞