Bootstrap 错误:Discourse 安装过程中出现 ENOENT - /etc/runit/1.d/letsencrypt

这是一个更新。

将此添加到 app.yml 底部的 run 部分将解决为 DISCOURSE_HOSTNAME 和 www.DISCOURSE_HOSTNAME 请求证书的问题,方法是获取 /usr/local/bin/letsencrypt

- exec: sed -i "s|-d \\${DISCOURSE_HOSTNAME}|-d \\${DISCOURSE_HOSTNAME} -d www.\\${DISCOURSE_HOSTNAME}|g" /usr/local/bin/letsencrypt

这(不知何故?)曾经足够了,但现在当请求来自 http://www.HOSTNAME/.well-known… 时,它会被重定向到非 www 站点,而不是发送它应该发送的挑战。我尝试过这样做:

server {
  listen 80;
  listen [::]:80;
  server_name nzarchitecture.net.nz www.nzarchitecture.net.nz;

  # Serve ACME challenge (Let's Encrypt)
  location ^~ /.well-known/acme-challenge/ {
    root /var/www/discourse/public;  # Make sure this matches your Let's Encrypt webroot
    allow all;
  }

  # Redirect everything else to HTTPS
  location / {
    return 301 https://$host$request_uri;
  }
}

但没有完全弄清楚。

如果团队中的任何人听到,最好有一个 letsencrypt 钩子,以便可以在 after_letsencrypt 中调用它。在 after_ssl 中进行这些更改之前是有效的,但现在似乎如果我们这样做,它会在 ssl 之后运行,但在 letsencrypt 之前运行。

3 个赞