Gid
1
(我的水平:在 Wix 上搭建过几个半复杂的网站,编程初学者)
我之前的一个重大困惑现在稍微清晰了一些,那就是:自行托管 Discourse 与“网络托管”截然不同。
1) 自行托管 Discorce 需要服务器,这意味着完全是另一回事,对吧?(因此其价格与通常广告中宣传的网络托管价格差异巨大,对吧)
2) 那么,“VPS 托管”是否是相对于自行托管 Discourse 的等效术语?还是说还有其他选项?其他类型的自行托管?(我知道可以在自己的硬件上托管)
3.1) 那么“托管服务”;这是否是在 VPS 类型托管之上的服务?
3.2) 这是否昂贵得多?
3.3) 具体做什么呢?
3.4) 作为一个刚起步、预算有限的新手,运营一个小型论坛(每月约 100 名用户),可以不做托管服务,对吧?
在网上阅读了数小时关于托管 Discourse 的内容后,以下引用所在的帖子是最有帮助且最全面的概述之一,帮助我选择了托管路径。
关于这个引用点,能否有人请澄清以下几点:
4.1) 我理解这是关于维护服务器?现在通过 DO/Hetzner 时是否已经包含在内?还是说只有在另一种单独的服务中才包含?那叫什么?
比如,如果我使用 DO 的一键 Droplet 功能,这是否包含那种维护?还是说那仅与设置有关?
4.2) 对于像我这样的论坛,“维护它”需要多少时间/时间和知识水平?
4.3) @tophee 说“出于各种原因,Discourse 论坛的管理员很少使用托管服务器”。这是为什么?
我还发现这个决策树也很有帮助,可能有些内容已经过时了,所以如果其中一些现在更容易了,请告诉我。
5.1) 我不太明白 SSH 是什么,根据这张图,所有自行托管者都需要这个吗?
5.2) 他们所说的“能够管理 DO、MailGun 和 DNS”是什么意思?对于像我这样的论坛,管理这些需要多少时间/时间和知识水平?
我会尽力回答你的问题,不过我认为你可能混淆了一些重叠的术语,这导致了一些困惑。
当本论坛的用户提到“自行托管”(self-hosting)Discourse 时,他们指的是在你自己的服务器上运行 Discourse 实例。(稍后会详细说明)当他们提到“托管服务”(managed hosting)时,他们指的是由服务商提供硬件并运行 Discourse 实例的服务。所谓“托管服务”,意味着 Discourse 实例由服务商管理,他们负责保持 Discourse 实例及其运行所在的操作系统处于最新状态并正常运行。
要“自行托管” Discourse,你需要一台能访问互联网且配置了正确指向你服务器的 DNS 服务的服务器。这台服务器可以是你本地场所运行的实体硬件,也可以是一台“VPS”(虚拟专用服务器)。VPS 是服务商提供给你、你可以完全控制(就像本地硬件一样)但通过“远程”方式访问的服务器硬件。所谓“远程访问”,是指你使用 SSH 和 FTP 等工具来访问服务器、控制它以及向它传输文件。
SSH 即“安全外壳”(Secure Shell)。安全外壳本质上是一个通过安全(加密)隧道运行的命令行提示符。你熟悉通过命令行提示符运行服务器吗?
Shell、终端、命令行和命令提示符大体上指的是同一个东西。即通过终端窗口输入命令来运行计算机。如果我刚才说的内容听起来像另一种语言,那么在尝试之前可能需要先学习一些基础知识。
当你租用 VPS 时,你会获得登录凭据和新服务器的 IP 地址。通常在购买时,你可以选择操作系统。你可以使用 PuTTY 这样的终端程序或电脑自带的终端窗口登录到服务器。你可以使用 Filezilla 等 FTP(文件传输协议)程序将文件从电脑传输到 VPS。
因此,一旦你租用了 VPS 并通过 SSH 登录,你就可以在服务器上安装 Discourse 实例,从而实现“自行托管” Discourse。你将完全控制你的 Discourse 实例及其运行的服务器。通常你可以使用 Discourse 内置的管理工具来保持 Discourse 更新,但偶尔也需要通过命令行手动更新。你还需要备份数据并知道如何恢复。Discourse 会自动进行备份,但你必须下载并安全存储这些备份,以备不时之需。
使用 VPS 时,你还需要维护 Discourse 实例运行的操作系统。这需要具备一定的操作系统知识,知道如何保持其更新和正常运行。如果你搞砸了 VPS,通常 VPS 服务商能做的只是清除你的操作系统并重新加载一个全新的版本。你还需要备份重要数据,以便在需要重新加载操作系统时恢复。
一旦设置好并运行起来,如果你懂行,维护起来其实相当简单。从你对自己技能的描述来看,我认为你能胜任。学习这一切的最佳方法就是动手尝试。如今租用 VPS 的费用相当低廉。搭建一台服务器,尝试在上面运行 Discourse,如果有问题,可以来这里或 ask.discourse.org 提问。
只要记住,如果你运营的论坛流量不大(单靠自身确实不会有很多流量),搞砸了大不了重头再来。如果有很多人加入你的论坛并开始发帖,你就需要做好维护和备份工作。如果你已有现成的论坛,或者有想要推广或提供支持的产品,或许可以考虑使用托管服务商。如果你只是随便玩玩、学习一下……那就放手去做吧。
Lilly
(Lillian )
3
Discourse 托管 ≠ 自托管
我是一位经验丰富的自托管用户,曾完成过一些复杂的配置;此外,我曾在 Discourse 工作过,因此对这两个概念有一定的了解,而您似乎对它们有些混淆。我会尽量为您澄清一些事情,但这绝非详尽的解释,即使篇幅较长,哈哈。我不知道您从哪里得到那张流程图,但它并不完全正确。
Discourse 托管名副其实——Discourse 会收取费用为您托管网站,正如您已经发现的那样,有不同的价格层级,从免费开始,随着层级提升提供更多选项,而企业版是最高且最昂贵的层级(它提供最多的选项,以及他们顶级的支持团队服务和定制设计与开发选项)。托管式托管也是一样的(Discourse 托管是一种托管式托管),但也由 Communiteq 或 Literate Computing 等其他合作伙伴公司提供。这些合作伙伴公司除了提供托管服务外,还收取费用提供各种开发和支持服务(我也提供)。请记住,开发和专业支持通常不是免费的,这就是 Marketplace 存在的原因。此外,虽然 Discourse 托管的价格结构对您来说可能显得昂贵,但我可以向您保证,许多知名公司为其大型、繁忙且运营良好的企业论坛(其中许多是私有的)支付高昂费用。Discourse 为他们提供的服务等级协议(SLA)和支持/开发服务级别之所以如此,是因为他们的业务活动需要这样。例如,如果您是一家科技公司或金融机构,遭受 DDoS 攻击可能导致您的公司损失六位数美元的停机时间和服务损失,或者您需要为大量员工提供高度定制的专业界面,那么支付企业托管费用是非常值得的。
自托管顾名思义——您在租用的服务器(或您拥有的物理服务器,我不推荐这样做,因为那会引入另一个高级难题)上托管自己的网站。自托管不仅仅是租用服务器(或 VPS——虚拟专用服务器)并通过 SSH 登录就万事大吉了。作为自托管管理员,您需要具备一些知识。一个只搭建过几个 Wix 网站的编程初学者在自托管 Discourse 方面能帮您的忙并不多;这是完全不同的事情和技能水平。您目前还不知道什么是 SSH,这可能表明您在该领域还有成长空间。Secure Shell - Wikipedia
如果您有兴趣学习,我建议您从阅读标准安装文档开始,并从中了解相关知识。有些人觉得容易,有些人觉得难,您拥有的一些网站管理经验可能会帮助您更快学习。能够 SSH 登录服务器是一回事,但您必须习惯命令行界面,了解 Docker 管理的基础知识,以及容器的工作原理。既然您说您有一个小型网站,那么从标准安装开始可能完全可行,它将为您提供所有内置插件的访问权限,以及您可能想要添加的任何其他插件;本质上,自托管的 Discourse 实例就像拥有自己的企业级 Discourse 托管论坛,但没有他们的专家支持、正常运行时间 SLA 和性能(例如,每次重建或更新时您都会有一些停机时间,但 Discourse 托管会为您处理这些,且没有任何明显的停机时间)。
没有任何理由说明您无法学习如何自托管,但请记住,没有任何东西是免费的,您想要的服务和规模将决定您需要支付的成本。一些 VPS 服务比其他服务更便宜,这里有一个 @pfaffman 整理的列表,可以帮助您做出决定。例如,我有 3 个 Discourse 网站,都在 Hetzner 上,但服务器大小和相关成本不同:2 个网站是位于 Cloudflare CDN 后面的双容器安装,并使用 R2(S3 兼容)对象存储 进行上传和备份,另一个是用于测试目的的标准安装。我以前使用过 DigitalOcean,但它可能相对昂贵;然而,它是学习标准安装的推荐起点(尽管我实际上并不觉得 Hetzner 有多大不同,而且我更喜欢他们的仪表板)。
如果您不想支付 Discourse 或其任何合作伙伴托管公司的托管管理费用,并且您需要比免费层级更多的功能,那么我的建议是做一些研究和阅读,然后尝试自行安装。了解 app.yml 文件是什么以及如何编辑它,如何设置您的名称服务器和电子邮件服务——这是学习如何作为自托管用户配置自己的 Discourse 实例的起点。一些 VPS 服务允许您以非常低廉的价格短期租用服务器,仅用于测试或学习。
这张图表挺不错的,我也完全同意上面几位网友的观点(尽管我会强烈建议新手不要使用 LLM 来获取支持,因为它们经常会出现明显的错误)。不过,“自建托管”(self-hosting)是一个涵盖面很广的术语,在这里需要稍作澄清。
如果你:
- 能够熟练地在自己的硬件上运行 Linux(或者不介意去翻阅那些 15 年前的 Reddit 帖子)
- 没有预算花在大型科技公司身上
- 拥有稳定、可靠的 24/7 互联网连接和电力供应
- 不受 ISP 限制(例如端口 80/443 被封禁或动态 IPv4)
- 具备基础的网络知识(如端口转发)
- 有一台备用电脑(实际上可以是一台只有 4GB DDR3 内存的旧办公机,只要配备 SSD 即可)
……那么我绝对推荐你在自己的硬件上进行托管。在这里,自建托管经常背负着莫名的坏名声(可能是因为稳定性参差不齐?),但只要你具备相应的能力,我绝对建议你试一试!自建托管一直是我做事的方式,在我年轻时负担不起云服务时,它帮了我大忙。即使到现在,我依然选择在本机服务器上自建托管,因为它成本低、可预测性强,而且你可以随心所欲地操作。
自建托管需要学习的东西很多,即使你成功地在自己的硬件或 VPS 上安装好了,后续还有更多工作等着你。你当然可以跳过所有这些步骤,直接选择托管方案,但如果你想省钱,自建托管(尤其是在自己的硬件上)是非常棒的选择。
如果拿一台家里的备用电脑来运行,那就需要这台电脑全天候开机,并且很可能还要配置 Cloudflare Tunnel,对吧?所以我更倾向于直接租用服务器、购买域名并搭建邮件服务器。刚开始自我托管时,我对周围各种术语感到一头雾水,但由于 Discourse 拥有完善的文档,且安装过程通过 CLI 安装程序进行引导,我认为对初学者来说,搭建起来其实并不难。
不见得。许多路由器(即使是基础型号和运营商网关)都支持端口转发,这显然是首选方式,特别是如果你能使用反向代理的话。我只会向那些无法进行端口转发或不想折腾网络设置的人推荐 Cloudflare Tunnel。
这里忽略了一个关键考虑因素:你无法确定你的家庭防火墙是否准备好处理所有因向公共互联网开放端口而可能被利用的攻击向量。一般来说,我建议不要直接开放端口,而是使用类似 Cloudflare Tunnels 的工具来保护你的家庭 IP 免受 DDoS 攻击,并避免被大多数其他网络封禁。
这可能是一件我习以为常的事,因为我的 UniFi 网络会自动设置并维护防火墙,几乎无需人工干预,除了解除那些被误判为恶意的签名(主要是 Soulseek 和 Minecraft)。Cloudflare 隧道是解决大多数与 ISP 相关瓶颈的好方案,但我从未出于安全目的使用过它,因此无法就此给出准确的评价,只知道在 DNS 中使用橙色云朵(Orange Cloud)能提供更好的安全性,包括内置的 DDoS 防护等一切功能。
互联网是一个危险的地方,在公共网络上发布任何内容都意味着存在风险,机器人可能会发现你并尝试攻击你。CF 隧道在防止部分此类攻击方面表现良好,但你无法阻止自动化的机器人扫描流量,而且根本不存在 100% 安全的程序。
你的 UniFi 设备执行了任何合理配置的防火墙应该执行的任务,但我们永远不知道是否或何时存在正在野外被积极利用的未修补漏洞。
不在住宅连接上开放端口的理由,特别是如果你正在托管家庭实验室或包含重要/个人数据的服务,一个开放的端口如果没有得到妥善保护,确实会被用来未经授权访问你的家庭网络。
通过类似 Cloudflare Tunnels 的路由其优势在于,你不会立即将你的家庭网络暴露给公众。你有 Cloudflare 作为中间人,鉴于其规模,他们的过滤在防止新兴威胁方面可能会更加主动。
Ed_S
(Ed S)
10
我认为我们想表达的是,自托管需要具备一定的 Linux 系统管理和安全技能。
成本更低的方案则需要更多的专业知识和精力。
Gid
11
我尽快回复了。花了一段时间仔细欣赏并消化针对我每个疑问的深思熟虑且详细的回答。这些回复非常有用,让我在阅读时忍不住微笑;澄清了许多困惑,现在我真的理解了许多事物的含义及其涉及的内容。多么特别的一群灵魂,多么可爱的社区
还有几个剩余的疑问;
1) 像 DO 这样的 VPS 提供商是否也为 Discourse 提供托管服务?
2.1) 对于我这种类型的论坛,维护一个托管 Discourse 的 VPS 需要多少时间/精力以及具备什么水平的知识?
2.2) @tophee 说“出于各种原因,Discourse 论坛的管理员很少使用托管服务器”,这是为什么呢?是因为它需要一些临时性的工作,但工作量不算太大吗?
3) 关于管理 SMTP 和 DNS,对于我这种类型的论坛,这需要多少时间/精力以及具备什么水平的知识?
[quote=“Andrew_Rowe, post:2, topic:407752”]
你熟悉通过命令行运行服务器吗?
[/quote]\n在这个背景下完全不熟悉。我只曾按照教程极少地使用命令行在我的电脑上安装/修复东西,几乎不知道自己在做什么。
@Andrew_Rowe 说“请记住,如果你运行的论坛流量不大,而它确实不会自动拥有大量流量”
这触及了我对 SEO 和可发现性的一个担忧;
4) 假设论坛内容保持不变。与免费 Discourse 托管相比,自托管论坛的 SEO 和可发现性会有何不同?
这是一个导致重大差异的重要因素吗?Discourse 自己的免费计划在这方面是否经过高度优化,远超新手使用非托管 VPS 搭建的自托管设置?
或者这甚至不是一个导致显著差异的因素?
仅仅更新自托管的 Discourse 就能确保这一方面达到 Discourse 免费计划的同等水平吗?
@Lilly 我非常感谢你这篇长篇解释。虽然你回复中某些评论背后的一些假设并不适用于我,而且我已经在你必须阅读过的帖子中澄清了这些点
这是你许多有益见解中的一个,让我有了更清晰的认识
@Lilly 说“我以前用过 DigitalOcean,但它可能相对昂贵;然而,它是学习标准安装者的推荐起点”
这触及了另一个我关心的点;不是关于计算性能和规格,而是关于正确的设置和维护;
5) 与非常便宜(但当然必须是合法的)的 VPS 相比,DO/Hetzner 是否有显著差异?例如这个 IONOS VPS Hosting | Virtual Private Servers | Starting at $2/month
它们是否会导致更多的工作量?是否有其他问题需要避免使用类似的服务?
@darkpixlz 感谢你的回复。我觉得在自己硬件上托管对我来说会是另一个麻烦,所以我没有考虑这个选项,而你进一步澄清了我确实不具备处理这个特定选项的能力
我想没有吧。
如果你懂行的话,花不了多少时间……但是……
这会让维护 VPS 上的 Discourse 变得困难得多。
DNS 相当简单。你可以在 AI 的帮助下摸索着完成,一旦配置成功,任务就结束了,而且网上有工具可以验证其是否正常工作。
SMTP 则是另一回事。许多自建 Discourse 的用户会使用第三方服务。你可以在本论坛搜索相关推荐。我个人使用的是 Docker Mail Server,但我关闭了摘要邮件功能,所以邮件流量不大。
pfaffman
(Jay Pfaffman)
13
哎呀,这基本上就是 @Andrew_Rowe 说过的话。我回复前真应该先看完整个帖子。
通常不。
这取决于你愿意投入多少精力。我曾让它成为我的全职工作。我也见过有人好几年都不升级服务器。
你需要了解足够的 SMTP 知识来配置 Mailgun 或类似服务。你需要了解足够的 DNS 知识来创建邮件和主机运行所需的记录。
SEO 与你是否自行托管无关。
据我回忆,原因是如果你想通过命令行进行更新或修复某些问题,你可能无法始终获得完全的控制权限,而是需要由服务商代为处理这些事务,因此在某种意义上,你并不完全拥有自己的所有数据。不过,请先核实这一信息,情况可能已经发生变化。
Lilly
(Lillian )
15
我不确定这是什么意思,但如果你澄清了我发布过的任何内容,我想我在发帖前并没有读过。无论如何,我尽量写得详尽,所以可能提供了比你需要的更多的信息,我也不确定。
我对这些 VPS 服务一无所知,但我看了一下……
我自己,我不会尝试在任何低于 4GB 内存且没有足够磁盘空间来创建 2GB 交换文件的设备上运行即使是很小的论坛。
但你需要阅读条款和细节,了解你得到的是什么。其中一些服务仅提供共享分配 IP,这不适用于 Discourse——例如 vps-mart.com:
因此,即使其他规格对于小型 Discourse 安装来说是合理的,我也不建议使用他们的服务。官方 discourse_docker 安装通常需要独占访问端口 80 和 443 以提供 Web 流量并自动配置 Let’s Encrypt SSL 证书。
在 IONOS VPS Hosting | Virtual Private Servers | Starting at $2/month 上,我看到 4 美元/月的配置需要 12 个月的期限,且没有关于 IP 的详细信息,因此真正阅读条款非常重要(我还注意到他们提供 Plesk,这是你不想要的
):
这是当前 Hetzner 类似 Linux 配置的成本,适用于 Discourse,并提供专用 IP 和 root SSH 访问:
我认为最简单的方法是遵循 Discourse 官方的 30 分钟安装指南,在 Digital Ocean 上进行自托管:
我第一次按照这些说明操作时,在设置 DNS、SMTP、SSH 方面几乎没有或没有任何先前经验,但我能够立即成功设置论坛。现在,由于多次操作,我觉得这些步骤很直接。
如果你最终没有使用那个论坛,之后只需将其删除即可。
如果你遇到任何问题,可以随时在这个支持论坛上提问,这里也有大量现有信息可以帮助你。
如果你觉得这些步骤可行,那么你应该能够进行自托管。如果太难或太耗时,那么你可能最好选择托管服务。
有时候,过度思考很容易,而实际尝试一下反而能回答你的许多问题!
RGJ
(Richard - Communiteq)
17
我没有确切的数据,但很大一部分 Discourse 实例是由 Discourse.org、Communitiq.com 以及一些其他较小的提供商以托管方式运行的。
确实,托管服务提供商通常不会向客户提供控制台访问权限。提供商无法合理地为一个它无法完全控制的系统的安全性、稳定性和维护承担责任。
然而,这并不意味着客户不拥有自己的数据。他们当然拥有。
我们的一些客户偶尔会提交支持工单,要求我们运行 rails c 脚本。我们会审查脚本的安全性和合理性,运行它,并在需要时提供输出结果。虽然响应时间可能比你自己运行稍长一些,但作为回报,你可以免费获得额外的合理性检查。
使用托管服务,你也不必担心自行执行更新,因为这部分工作由我们处理。特别是紧急安全更新通常可以快速部署,无需每个站点管理员先发现问题并采取行动。
Gid
18
那非常有帮助,感谢 @Andrew_Rowe @Lilly @pfaffman @NateDhaliwal @RGJ @traceymoko 澄清了后续的疑问。现在事情清楚多了。综合考虑,我现在正在认真考虑使用 VPS 进行自托管,因为这几乎是我实现目标所需基本功能的唯一途径。
为了提供更多背景信息:Web 开发完全不是我的专业领域;我的主要精力都投入在我运营的一家小型慈善机构,它需要我投入大量的关注、时间、精力和资金。正因为我的资源有限,所以我希望最大化效用,并尽量避免将资源浪费在低效的事情上。因此,我担心这可能会带来另一项需要大量投入的任务,而这本不该是我花时间去做的事。
在搭建网站的过程中,它已经占用了我太多的精力。所以我担心这会再增加一项负担。我拥有扎实的理工科背景,能够学习并完成任务,这并不是主要的疑虑。即使是一次性的高成本搭建,只要之后能基本自动运行,我也可以接受。但如果它还需要持续的维护,这条路究竟需要耗费多少时间,是我目前最不清楚的地方。也许不久的将来,随着事情的发展,我将拥有足够的资源来外包这部分工作,届时我会想起你们。但目前,我陷入的是时间和资源都极度匮乏的困境。我打算自己尝试一下,但非常犹豫。
我相信非营利组织是可以享受折扣的。以下是来自定价页面的说明:
要享受我们提供的 50% 非营利组织折扣,我们需要您提供政府出具的正式文件,证明您的非营利组织身份及联邦税收豁免资格(例如 501(c)(3) 信函)。
请查看
Lilly
(Lillian )
20
正如你可能在这里看到的那样,大多数常客都非常乐于助人。一旦你开始自己的自托管项目,你可以随时提出问题,我们中的许多人都会通过提供建议来帮助你。很多人都是从和你相似的地方起步的,现在他们管理和托管着繁忙的论坛。我的路径略有不同,因为我一生大部分时间都在从事IT工作,几年前我继承了一个由Discourse托管的繁忙论坛的管理员角色。我通过与他们的支持渠道沟通,并在Meta上阅读和发帖,学到了很多东西。最终,我学到了足够的知识,有幸并愉快地为他们工作,并学到了更多。尽管我后来离开了那家公司,但我仍然从事与Discourse相关的开发和支持项目,并且我现在自托管了我最初作为管理员开始的那个特定论坛——它蓬勃发展,和以前一样繁忙,并且有更多的自定义功能。
老实说,最耗时的部分是初始搭建和将论坛配置成你想要的样子。一旦你有一个运行和设置好的论坛,维护时间就不会太高,只需要定期进行更新。备份可以自动化,并且通过某些配置,更新和重建期间的停机时间可以保持在最低限度。使用CDN和双容器(一个用于Web应用,另一个用于数据库),我的实际重建停机时间为30秒,我有一个bash脚本运行整个更新,并显示一个提示用户网站将在准备好时自动重新加载的启动画面。如今,那个论坛每两周左右只需要我花费不超过15分钟的时间,只是保持操作系统、Docker和Discourse的最新状态。我只需SSH进入服务器,进行任何系统更新,然后运行脚本。我知道它可以进一步自动化,但我仍然喜欢一些手动操作。