# 在家庭互联网环境下通过Cloudflare Tunnel安装Discourse

**URL:** https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297
**Category:** Sysadmins
**Tags:** arm, how-to, raspberry-pi, install
**Created:** [2021年十二月7日 14:02 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297 "2021-12-07T14:02:07Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年六月29日 10:33 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/21 "2022-06-29T10:33:51Z")

</div>

您好，

我刚在我的 R-Pi 4 上安装了 Discourse 和 Cloudflared，并遵循了原始帖子的说明，但不确定 Discourse 的主机应该填什么，因为 Cloudflared 隧道会转发它，我应该只填 localhost 吗？  
也许 @Falco 可以帮忙？

顺便说一句，抱歉顶帖。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 13:34 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/22 "2022-06-29T13:34:52Z")

</div>

您仍然需要拥有一个域名才能使用本指南，因此 host 值将是您为 Discourse 和隧道配置的域名顶点或子域名。

---

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年六月29日 13:44 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/23 "2022-06-29T13:44:53Z")

</div>

> [@Falco](#):
>
> 您为 Discourse 和隧道配置的子域。

所以主机值应该是我想让 Discourse 所在的子域？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 13:48 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/24 "2022-06-29T13:48:46Z")

</div>

是的，它应该是您想要 Discourse 的网址。

---

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年六月29日 15:01 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/26 "2022-06-29T15:01:00Z")

</div>

你确定吗？  
如果我这样做，它会给我这个错误：

 ![image](https://global.discourse-cdn.com/meta/original/4X/1/7/7/177fd3707b915a5b69350d094d7dd66745cbde4b.png)  
你认为我做错了什么吗？

我将 Discourse 主机名设置为我想要 Discourse 所在的精确子域名。  
我按照此处所述（[Set up your first tunnel · Cloudflare One docs](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/#5-start-routing-traffic%EF%BC%89%E4%BB%8E) CLI 安装了 Cloudflared 到 R-Pi4，并将其作为服务运行。  
而且，我确信我按照你原始帖子中的说明安装了 Discourse。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 15:01 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/27 "2022-06-29T15:01:35Z")

</div>

您可以分享一下域名吗？

---

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年六月29日 15:02 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/28 "2022-06-29T15:02:54Z")

</div>

我能私信发给你吗？我不太想让陌生人看到。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 17:49 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/29 "2022-06-29T17:49:21Z")

</div>

现在你设置了正确的域名，它能正常工作了吗？

---

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年六月29日 17:52 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/30 "2022-06-29T17:52:03Z")

</div>

太棒了！刚启动！感谢您的帮助！我只有一个与 MailJet（我用于 STMP 的邮件提供商）有关的问题，它正在预先阻止我的验证电子邮件。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 18:03 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/31 "2022-06-29T18:03:20Z")

</div>

帖子已拆分为新主题：[Any MailJet alternatives?](https://meta.discourse.org/t/any-mailjet-alternatives/231478)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年六月29日 18:04 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/32 "2022-06-29T18:04:23Z")

</div>

一个帖子已合并到现有主题：[任何 MailJet 替代方案？](https://meta.discourse.org/t/any-mailjet-alternatives/231478/2)

---

<div class="post-metadata">

### Author: ![Fabrice](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabrice/32/265087_2.png) [@Fabrice](https://meta.discourse.org/u/Fabrice)
#### Post date: [2022年七月2日 08:56 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/33 "2022-07-02T08:56:37Z")

</div>

嘿，我成功安装了！我有一个小问题，您认为配备 4GB 内存的树莓派 4 型 B 可以处理多少活动/用户？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年七月2日 18:22 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/34 "2022-07-02T18:22:05Z")

</div>

这是一个很好的问题。由于在像 Discourse 这样复杂的系统中很难直接将用户数量与服务器负载相关联，因此承认 Raspberry Pi 系统中的主要瓶颈是存储 IOPS 是公平的。

因此，只要您的大部分所需资源都位于 RAM 中，介于进程 RSS 和 Linux 缓存之间，您就应该获得流畅的体验。Cloudflare 充当缓存 CDN 的事实也将大有帮助，您甚至可以使用 [使用对象存储进行上传（S3 和克隆）](https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916) 来延长 Pi 设置的使用寿命。

---

<div class="post-metadata">

### Author: ![Chan\_Patrick](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/chan_patrick/32/264297_2.png) [@Chan\_Patrick](https://meta.discourse.org/u/Chan_Patrick)
#### Post date: [2022年八月11日 15:17 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/35 "2022-08-11T15:17:47Z")

</div>

我收到了这个 Docker 部分的错误

```plaintext
FAILED
--------------------
Pups::ExecError: /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end' failed with return #<Process::Status: pid 115 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params "/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_HOSTNAME\"] == \"discourse.example.com\"; puts \"Aborting! Domain is not configured!\"; exit 1; end'"
bootstrap failed with exit code 1
**FAILED TO BOOTSTRAP** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
9ba0db264ae559f3f748cc1e42a8683ea0b4e355b0d45da0f472afea7ff7c472

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年八月11日 15:21 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/36 "2022-08-11T15:21:07Z")

</div>

这意味着您没有正确配置域名。您需要一个有效的域名才能使其正常工作。请再次运行 `./discourse-setup` 或编辑 app.yml 文件进行修复。

---

<div class="post-metadata">

### Author: ![Chan\_Patrick](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/chan_patrick/32/264297_2.png) [@Chan\_Patrick](https://meta.discourse.org/u/Chan_Patrick)
#### Post date: [2022年八月11日 15:54 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/37 "2022-08-11T15:54:25Z")

</div>

谢谢回复，我已成功在 RockPi4 上部署 👍

---

<div class="post-metadata">

### Author: ![shyguy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shyguy/32/295079_2.png) [@shyguy](https://meta.discourse.org/u/shyguy)
#### Post date: [2023年三月13日 06:19 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/38 "2023-03-13T06:19:04Z")

</div>

你好 @Falco，

我确信我已按照你的指南进行设置，但我注意到有些奇怪。

在容器配置中，我没有加载 SSL 模板，并且 `DISCOURSE_FORCE_HTTPS` 环境变量设置为 true。我不确定这有什么作用，但我想它会将 `SiteSetting.force_https` 设置为 true，然后在管理员仪表板中隐藏它以防止被禁用。

我的 cf tunnel 配置如下：

```yaml
ingress:
  - hostname: dc.example.com
    service: http://dc:80 # dc 是我的 discourse 单机应用容器名称

```

**问题是，我可以访问 `http://dc.example.com`，它不会重定向到 https** 。这是预期行为吗？

你能重现这个问题吗？我想知道这是否是一个 bug。

我相关的 cf 设置是：

- SSL/TLS \> Overview \> SSL/TLS encryption mode: **full** (_不是 full (strict)_)
- SSL/TLS \> Edge Certificates \> Always Use HTTPS: **off**

我知道我可以让 cf 进行重定向（通过 `Always Use HTTPS` 或批量重定向规则），但我原以为 discourse 会处理这个问题并在 `force_https` 为 true 时重定向所有内部 URI。有什么想法？

忽略重定向问题，无论 `DISCOURSE_FORCE_HTTPS` 或 `SiteSetting.force_https` 的值如何，浏览 `https://dc.example.com` 都可以正常工作。

编辑：尽管不明白 `force_https` 实际上有什么作用（也许如果未包含 SSL 模板，它就什么都不做？），但我突然想到，如果 discourse 实际将所有内容 https 重定向，那么 tunnel 配置可能无法按原样工作。如果它这样做了，argotunnel 就无法通过 http（如 `service: http://dc:80`）访问 discourse，所以也许我应该：

- 依赖 cf 进行重定向 OR
- 让 discourse 使用证书，并让 cloudflared 通过 https 访问 discourse 源站 (`service: https://dc:443`)

总之，也许你的 argotunnel 指南可以更新以解决这个问题？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2023年三月13日 14:30 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/39 "2023-03-13T14:30:37Z")

</div>

你说得对。我没注意到我的测试 TLD .dev 仅支持 HTTPS：

> **[Chrome & Firefox now force .dev domains to HTTPS via preloaded HSTS](https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/)**
>
> tl;dr: Chrome 63 (out since December 2017), will force all domains ending on .dev (and .

我已经更新了指南，告知用户为此使用页面规则，感谢你的报告！

---

<div class="post-metadata">

### Author: ![syandriz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/syandriz/32/274337_2.png) [@syandriz](https://meta.discourse.org/u/syandriz)
#### Post date: [2023年四月5日 22:19 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/40 "2023-04-05T22:19:01Z")

</div>

但我有一个问题……  
我看到“合并页面浏览量”上有很高的匿名查看量，我认为这是由于 DDoS 攻击，因为服务器 CPU 达到了 60%，而爬虫只占一小部分……但如何防止 DDoS 攻击呢？……先谢谢你的回答。

---

<div class="post-metadata">

### Author: ![shyguy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shyguy/32/295079_2.png) [@shyguy](https://meta.discourse.org/u/shyguy)
#### Post date: [2023年四月5日 22:34 UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297/41 "2023-04-05T22:34:03Z")

</div>

> [@syandriz](#):
>
> 如何防御DDoS攻击？

如果您使用 Cloudflare 作为反向代理（这与 Cloudflared/Argo Tunnel 是分开的），您应该能获得一些开箱即用的 DDoS 防护。在您的 DNS 记录上启用它，并将其设置为“橙色云”。

[上一頁](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297.md?page=1)

[下一頁](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297.md?page=3)
