其实这个想法已经想很久了,大概想了半个多月吧。我们还是在今天决定,去做一个论坛出来,先附上我的论坛地址,目前还只是邀请制,想要参与的可以找我要链接

同时把这个流程给大家写一写,如果各位自己有这个想法,也可以去搭建一个玩一玩。总的来说,有以下 4 个流程:
- 域名购买与迁移到 Cloudflare
- 购买服务器,最好是买境外的,例如香港,国内对于开论坛审查非常严格,基本上个人是过不了的,但境外的服务器不用备案,挺方便的。
- 在服务器中部署 1Panel 可视化控制面板
- 在 1Panel 面板中部署 Discourse
- 域名反向代理和申请证书
- 配置 SMTP 事务性邮件
在这个过程中,SMTP 邮件是必须要有的,否则你和用户都无法登录,我目前是使用的 mailgun 的邮件服务商,包括我的博客也是使用的 mailgun ,有免费计划,一个月 3,000 封邮件的额度,目前对于我而言,额度有些少,只能说省着点用,不想开付费。
至于为什么选择 mailgun 这个邮件服务商,因为 Ghost 博客系统只支持这个服务商,真的无语。

至于其他的邮件服务商,我没怎么了解,貌似别人给我推荐过 Resend,刚看了下,也是每月 3,000 封的限制,每天 100 封的限额。Mailgun 之前也限制我的账户,一天 100 封,之后我给他们发邮件说明我的情况,之后也就拉了白名单,现在虽然是免费计划,但不影响我一天发个大几百封。
那么话不多说,我们进入正题吧:
因此,我果断删除了 1Panel 面板中的相关配置,重新在服务器终端中直接拉取官方文件进行配置。因为官方的部署方式会将所有组件打包成一个容器,并根据服务器性能对整个容器进行调优,所以本篇文章新增了「方法二」的内容。
前置准备
域名购买
域名的购买就不多说了,在我的《一人跨境手册》中有详细的讲这一块,可以移步去看,在阿里云上买了域名后,迁移到 Cloudflare 中,然后解析 A 到你的服务器域名即可
服务器购买
我选的是 DogYun(狗云)服务器,整体的价格还算实惠,65 一个月,2 CPU 4 核,够够的了对于前期而言。

购买的时候,操作系统我是选择的“Debian 12“,抱着选新的总没错的原则,等待系统处理好之后,点进右上角的“显示屏“按钮,打开服务器后台。
方法一:1Panel 面板一键部署
部署 1Panel 面板

- 看到 Login 的提示后,输入
root然后回车 - 接着会提示输入密码,手动敲击你之前保存的那串系统密码(注意区分大小写),输入密码时屏幕上不会有任何显示,光标也不会动,这是正常的,敲完直接按回车即可。
- 如果密码正确,屏幕上会出现包含
root@XXXX(你的服务器名字):~#的绿色或白色字样,说明你已经成功进入系统内部了! - 安装
curl工具,复制下面这行命令,apt update && apt install curl -y使用终端面板右上角的”发送文本”,粘贴过去,然后回车 - 安装 1Panel,等 curl 安装完成后,一样,输入命令
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"- 然后就等待,之后就是正常的 1Panel 的安装,一般都有中文指引
1. 端口为默认的即可,直接回车
2. 账号和密码就自己设置
3. 设置完成后,它会给你一串告知,其中你的访问地址也在里面
http://43.255.156.70:五位数字/一段随机字母- 以上,就完成了 1Panel 的部署,直接在浏览器中输入这个地址打开即可。
部署 Discourse 论坛
进入到 1Panel 面板后,按照如下顺序安装,安装的时候都选择默认设置即可,其中 Discourse 的访问域名,填写你自己为论坛准备的主域名,例如我就是 madsgogo.top

然后等待安装,这个时候肯定会出现内容和负载爆掉的情况,这个情况属于正常,耐心等待即可,大概 5~10 分钟后,等 Discourse 编译完毕,就会恢复到正常的负载。
这个非常重要,在这一步,你的网站是打不开的,别傻傻的去打开网站,老老实实等就可以了,就因为这一步,浪费了我半天的时间,最后才发现是这个原因,我真的哭死
反向代理域名
- 选择 1Panel 左侧边栏的网站→新建→反向代理,如下图输入即可,在这一步不用选择开启 https,因为我们还没有申请证书,在下一步申请:

- 在 1Panel 首页的左侧边栏点击网站→证书→申请证书,设置如下:

- 然后点击网站→你的域名→https,设置如下:

然后就开始等待即可,等待 Discourse 编译完成,也就是当面板的指数恢复正常,如下图,那么你就可以从你的域名进入论坛了

配置 SMTP 事务性邮件
这里我们按照下方视频的指引,来到 Discourse 容器的环境配置,也就是编辑 Compose 文件
然后在环境中找到下方的参数,并进行修改,记住,格式必须与原文件的格式一致,不能多一个字符,空格也不行,并且上下要对齐,下方我给出的代码我顶格了,复制上去可能你需要自己对齐一下格式:
DISCOURSE_SMTP_HOST: smtp.mailgun.org(你的邮件服务商的地址,我的是mailgun)
DISCOURSE_SMTP_PASSWORD: "SMTP 的密码"
DISCOURSE_SMTP_PORT_NUMBER: 587
DISCOURSE_SMTP_PROTOCOL: tls
DISCOURSE_SMTP_USER: "SMTP 的账户名"
注意:密码和账号建议用英文双引号 "" 括起来,防止密码里的特殊符号导致格式报错
然后往下滚动,有一行代码如下,这个是容器 sidekiq 的环境代码,这个我们也要配置:
environment:
DISCOURSE_DATABASE_HOST: ${PANEL_DB_HOST}
DISCOURSE_DATABASE_NAME: ${PANEL_DB_NAME}
DISCOURSE_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
DISCOURSE_DATABASE_PORT_NUMBER: ${PANEL_DB_PORT}
DISCOURSE_DATABASE_USER: ${PANEL_DB_USER}
DISCOURSE_HOST: ${DISCOURSE_HOST}
DISCOURSE_REDIS_HOST: ${PANEL_REDIS_HOST}
DISCOURSE_REDIS_PASSWORD: ${PANEL_REDIS_ROOT_PASSWORD}
我们需要将之前修改的那五行参数,加到这行代码的下面,总览如下方代码所示:
environment:
DISCOURSE_DATABASE_HOST: ${PANEL_DB_HOST}
DISCOURSE_DATABASE_NAME: ${PANEL_DB_NAME}
DISCOURSE_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
DISCOURSE_DATABASE_PORT_NUMBER: ${PANEL_DB_PORT}
DISCOURSE_DATABASE_USER: ${PANEL_DB_USER}
DISCOURSE_HOST: ${DISCOURSE_HOST}
DISCOURSE_REDIS_HOST: ${PANEL_REDIS_HOST}
DISCOURSE_REDIS_PASSWORD: ${PANEL_REDIS_ROOT_PASSWORD}
# --- 从下面这里开始,是你手动追加的内容 ---
DISCOURSE_SMTP_HOST: smtp.mailgun.org(你的邮件服务商的地址,我的是mailgun)
DISCOURSE_SMTP_PASSWORD: "SMTP 的密码"
DISCOURSE_SMTP_PORT_NUMBER: 587
DISCOURSE_SMTP_PROTOCOL: tls
DISCOURSE_SMTP_USER: "SMTP 的账户名"
注意参数的格式对齐,不对齐就会出现报错,格式与1 panel 面板中的参数格式保持一致,我这穿参数格式复制过去后有可能会不对,请自己调整
方法二:官方脚本部署
当然,这一步我们肯定要在服务器中部署一个 1Panel 面板。这是一个可视化的面板,我们所有的操作都会在面板中的终端里进行,需要准备的东西也与之前的大致相同:
- 域名已解析到这台服务器
- SMTP 邮件设置(与上文中的邮件参数一致)
- 可以接受邮件的一个邮箱,也就是管理员邮箱
因为像 Discourse 这个论坛会独占 80 和 443 端口,所以我们在 1Panel 面板中没有必要去安装 OpenResty 这个管理工具,我们直接在 1Panel 面板的终端中,直接开始进行命令部署就行。
创建 SWAP 虚拟内存
在正式安装之前,我们需要为服务器创建一个虚拟内存(SWAP)。如果你的服务器配置买得比较高,比如 4 核 8G,那这一步可以跳过。由于我的服务器是 2 核 4G,相对而言刚处于起步线的水准,所以需要创建 SWAP,命令如下,创建一个 4G 的虚拟内存:
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
检查一下看是否成功:
swapon --show
free -h
如果 free -h 里能看到 swap,就好了。
拉取官方安装脚本
在服务器创建一个 Discourse 的目录并进入:
mkdir -p /var/discourse
cd /var/discourse
其中 cd 代表进入到这个目录,mkdir 是用来创建目录的。然后拉取官方安装仓库:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
运行官方安装向导
./discourse-setup
运行后,它会问你一大堆问题,按问题填写即可,都是我们之前准备的资料,例如会问你论坛域名、管理者邮箱、SMTP 的东西,然后执行回车安装即可。
在这一步之前必须要完成服务器的解析,也就是域名绑定了这个服务器,另外,如果你的域名是部署在 Cloudflare 上,那么不要开“橙云“代理,开启了会导致 Discourse 的安装失败,所以不用开启。
然后这个安装的过程可能要持续 10~20 分钟,在整个安装过程中,你的服务器会一直处于负载比较高的情况。但是安装完之后,它就会恢复正常。
在整个安装的过程中,你的网页会处于一种打不开的状态,这属于正常的反应。不用着急,耐心等待即可。
登录 Discourse
当你完成配置之后,就可以输入你的域名,进入 Discourse 的第一次加载。
在第一次加载时,它会让你注册一个管理者账号。这个账号对应的就是我们之前在终端中配置 Discourse 时,所输入的那个管理者邮箱,在这个页面输入你的用户名和密码,然后去邮箱进行邮箱验证跳转,就可以直接正常地开始你的 Discourse。

你可以看到我这里是一个错误的例子,因为我的管理者邮箱输错了。这一步如果你跟我一样,也是邮箱输错的情况,没关系。你就正常地填写你的用户名和密码,然后点击确认,它会跳转到验证邮件的界面。
然后我们打开 1Panel 面板的终端,输入如下代码授权,直接激活账号:
./launcher enter app
rails runner "User.find_by_email('mads@madsgogo.top').activate"
然后我们直接打开一个新的网页, Discourse 的 login 页面,一般是:
你设置的域名/login
在浏览器输入上面的地址,然后我们就能直接进入到 Discourse 的正常使用了。
结尾
那么本篇文章就到此结束,我们在里面讲了两种 Discourse 的配置方法。说实话,我也踩了不少的坑,真的是运气坏,什么样的错误都会被我碰上。
所以如果你有任何的疑问,也欢迎在我的论坛里面留言,以后我们就在论坛里面愉快地玩耍吧!



Discussion