logo NodeSeekbeta

如何搭建一个真正可用的discourse论坛

discourse论坛的搭建教程很多,但真正优化到稳定好用的,照顾到细节的并不多
在这篇文章里记录下这个网站的搭建过程,以及如何做基础的安全防护
前面是基础安装,后面是防护和优化,防护和优化比较重要

先安装docker

安装docker,采用一键安装

curl -L get.docker.com | bash

拉取git项目

apt install git
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers

配置discourse

./discourse-setup

回答下面的问题,主要是把smtp给配置对了

Hostname for your Discourse? [discourse.example.com]: 
Email address for admin account(s)? [[email protected],[email protected]]: 
SMTP server address? [smtp.example.com]: 
SMTP port? [587]: 
SMTP user name? [[email protected]]: 
SMTP password? [pa$$word]: 
Let's Encrypt account email? (ENTER to skip) [[email protected]]: 
Optional Maxmind License key () [xxxxxxxxxxxxxxxx]:

discourse-setup这个命令是用于生成配置文件的,配置文件位于 /var/discourse/containers/app.yml
后面你可以再次运行./discourse-setup重新生成,也可以直接编辑配置文件,每次编辑配置文件后要重新运行 ./launcher rebuild app编译docker镜像
编译docker镜像要花费10-20分钟,这是discourse最烦的地方之一,每次编辑个配置都要重新编译镜像

机器配置要求

官方说1C1G就可以安装,但实际上至少至少2C2G,稳定运行建议2C4G以上

防护和优化

本地速率限制

discourse很笨重,你搭建的网站可能被别人攻击一下就掉线了,所以防护很重要
防护分CDN和本地防护,本地这里discourse已经帮你配置了nginx防护规则,所以如果你是小白,可以直接用docker暴露出的nginx端口,一般情况下就够用了
如果你使用了CDN,比如cloudflare,那么下面这条配置非常非常关键

templates:
  - "templates/cloudflare.template.yml"
  - "templates/web.ratelimited.template.yml" #这条默认开启

一定要在templates里面加一条cloudflare.template.yml,这条规则会重新编译nginx,增加realip模块,不然别人cc你网站的时候,discourse会把cloudflare的ip拉黑,非常坑。

是否在docker外另开一个nginx

discourse每次修改配置,都要重新编译镜像,这个很让我不爽
而且修改discourse镜像里面nginx的配置,要手写templates,然后编译进去
所以我在docker外用nginx代理内部的端口,让docker监听本地端口
为了防止realip不认识我的本地ip,需要把docker的内网ip加到realip的信任ip上

防止扫描

禁止了除cloudflare外的ip访问443端口

防止discourse摘要爬虫露ip

discourse有爬取网站摘要的功能,会暴露ip,为了防止此类问题直接让出战流量走warp
CDN端的防护也有些讲究,大家感兴趣的话,有时间我再写一篇关于CDN的防护配置。

最后,卑微发些邀请码,可以来抢注好看的id
http://clochat.com/invites/p2eHEnoSVb

123
  • 我得了一种看见新论坛就想去注册的病 xhj003

  • @Aicnal #14

    /assets/
    /stylesheets/
    /images/

    或者你也可以按照文件名扩展来配置缓存

  • Discourse 搭建的挺好看的,鸡腿支持 xhj025

  • 和隔壁linux.do不能说是毫不相干,只能说是一摸一样

  • @1000ly #1
    哈哈,都是用的discourse,搭建很快,你可以试试

  • @Vellow #3
    曾经我刷pt也是这样的 xhj027 ,可以来玩玩
    不求有多少人,小圈子快乐下就行

  • 我也建了一个
    弄了两个月了日活十位数
    image.png

  • discourse给人感觉太笨重 xhj002

  • 佬,有机会讲讲WAF和CDN怎么设置呗
    我现在这个缓存命中率不高

  • @Flare #7
    这个日活都没有我博客高哈哈哈哈

  • @cos #6

    就是笨重,没得洗,0ip搭建完还要吃近2G的内存

    但是discourse现代化,定位是bbs领域的wordpress

    用习惯了还挺好的,用户操作反馈到位

123

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有61018位seeker

🎉欢迎新用户🎉