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的防護配置。
|