首先,由我隆重地介绍Discourse:
这是一个优秀的论坛部署平台,相较于flarum Discuz!,有着更加简洁的画面、完全开源等优点,同时资源占用也不高!
并且,这和我们亲爱的雨云论坛是有几分相似的哦!
成品大家可以期待一下,嘿嘿……
【请CSDN审核注意:无广告&强制消费】
部署平台
既然我们的文章都打着云服务器的标签了,所以就让我们打开雨云,登录/注册一个账号。
然后点击主页的云服务器按钮:
然后购买一个服务器。
配置要求并不高,根据官网的介绍,1G的服务器就足以运行了(要有swap),那我们可以再多一点,比如2核4G之类的,自己选择吧!
注意操作系统一定要选Linux系列的,个人推荐Ubuntu,千万不要选Windows&MacOS!
开始安装!
首先,根据官网的介绍:
The only officially supported installs of Discourse are Docker based. You must have SSH access to a 64-bit Linux server with Docker support. We regret that we cannot support any other methods of installation including cpanel, plesk, webmin, etc.
也就意味着我们只能通过Docker来安装 :|
由于本次环境的特殊,我们需要用noVNC来进行连接,可以在雨云面板的远程连接里找到。

出现这个界面时,login后面输入root,Password后面输入服务器密码,注意不会显示密码。

出现root@RainYun-XXX~#:时,就表示成功了!
首先更新一下软件包:
apt update
apt upgrade
为了防止后续安装Docker时出现找不到文件的情况(本次坑1)。
‘
这里出现了Do you want to continue? [Y/n]时,一律输入Y。

然后安装部署环境Docker:
apt install docker.io

把Discourse的git仓库给clone下来:
git clone https://github.com/discourse/discourse_docker.git /var/discourse

克隆好后进入目录并改权限:
cd /var/discourse
chmod 700 containers
然后就可以运行./discourse-setup。
当你兴致勃勃地输入你的域名后,你就会发现(本次坑2)(其实你不挂cdn也是可以的):

不要着急rebuild docker,而是重新运行:
./discourse-setup --skip-connection-test
不过这次要开始下docker镜像了,所以just wait...

这次,你就可以正常的输入域名了!

这里输入你的电子邮件:

好,本期第3坑点来了:

这表示SMTP(发邮件用的协议)的地址,不同的邮件商有着不同的SMTP地址,比如Outlook的就是smtp-mail.outlook.com
这个表示 SMTP端口,也是按照厂商提供的信息:

username就是你的邮箱地址,password就是邮箱密码(有的可能是应用密码):

这里是noreply地址,看情况而定,可以设置自己的邮箱:

下一个有关Let's Encrypt的是免费的SSL证书,可以不填。
验证之后,就可以开始enter,然后耐心等待,不要动它,不要手欠按了Ctrl+C/Z……


像这几个看起来卡住了的地方,也不要手欠(本次坑4),等等等……
为了防止报错,你可以尝试(来自hhjmk):

出现...[@embroider/webpack]时会重复好几遍(我重复了13次),也不要手欠!
这样就表示成功了!!!

next:
./launcher destroy app
./launcher start app
然后打开你的域名(上面填的那个),稍微设置一下邮箱之类,就可以访问了!
此时你就会遇到另一个坑(坑5),那就是你可能无法收到邮件!
这是官方配置问题,我们只需要打开containers/app.yml,然后找到:
expose:
- "80:80",
- "443:443"
加上一行:
- "587:587"
再找到:
- exec: rails r "xxx"
将xxx改成SiteSettings.notification_email='你的邮箱'就好了!
然后输入:
./launcher destroy app
./launcher start app
完成!
然后你就可以happy运维了!
参考了【跨世纪】手把手教你搭建一个雨云同款论坛 - 教程分享 / 云服务器 RCS - 雨云论坛 (rainyun.com)


















