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

Mads Do
新的一人公司社区,用AI 和系统提升效率,少工作,多赚钱,享受生活

同时把这个流程给大家写一写,如果各位自己有这个想法,也可以去搭建一个玩一玩。总的来说,有以下 4 个流程:

  1. 域名购买与迁移到 Cloudflare
  2. 购买服务器,最好是买境外的,例如香港,国内对于开论坛审查非常严格,基本上个人是过不了的,但境外的服务器不用备案,挺方便的。
  3. 在服务器中部署 1Panel 可视化控制面板
  4. 在 1Panel 面板中部署 Discourse
  5. 域名反向代理和申请证书
  6. 配置 SMTP 事务性邮件

在这个过程中,SMTP 邮件是必须要有的,否则你和用户都无法登录,我目前是使用的 mailgun 的邮件服务商,包括我的博客也是使用的 mailgun ,有免费计划,一个月 3,000 封邮件的额度,目前对于我而言,额度有些少,只能说省着点用,不想开付费。

至于为什么选择 mailgun 这个邮件服务商,因为 Ghost 博客系统只支持这个服务商,真的无语。

至于其他的邮件服务商,我没怎么了解,貌似别人给我推荐过 Resend,刚看了下,也是每月 3,000 封的限制,每天 100 封的限额。Mailgun 之前也限制我的账户,一天 100 封,之后我给他们发邮件说明我的情况,之后也就拉了白名单,现在虽然是免费计划,但不影响我一天发个大几百封。

那么话不多说,我们进入正题吧:

😩
2026.4.28 更新:我发现使用 1Panel 面板直接部署的 Discourse 论坛会出现压力过载的情况,两核服务器配置远远不够用且经常爆表。

因此,我果断删除了 1Panel 面板中的相关配置,重新在服务器终端中直接拉取官方文件进行配置。因为官方的部署方式会将所有组件打包成一个容器,并根据服务器性能对整个容器进行调优,所以本篇文章新增了「方法二」的内容。

前置准备

域名购买

域名的购买就不多说了,在我的《一人跨境手册》中有详细的讲这一块,可以移步去看,在阿里云上买了域名后,迁移到 Cloudflare 中,然后解析 A 到你的服务器域名即可

服务器购买

我选的是 DogYun(狗云)服务器,整体的价格还算实惠,65 一个月,2 CPU 4 核,够够的了对于前期而言。

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


方法一:1Panel 面板一键部署

部署 1Panel 面板

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

部署 Discourse 论坛

进入到 1Panel 面板后,按照如下顺序安装,安装的时候都选择默认设置即可,其中 Discourse 的访问域名,填写你自己为论坛准备的主域名,例如我就是 madsgogo.top

然后等待安装,这个时候肯定会出现内容和负载爆掉的情况,这个情况属于正常,耐心等待即可,大概 5~10 分钟后,等 Discourse 编译完毕,就会恢复到正常的负载。

这个非常重要,在这一步,你的网站是打不开的,别傻傻的去打开网站,老老实实等就可以了,就因为这一步,浪费了我半天的时间,最后才发现是这个原因,我真的哭死

反向代理域名

  1. 选择 1Panel 左侧边栏的网站→新建→反向代理,如下图输入即可,在这一步不用选择开启 https,因为我们还没有申请证书,在下一步申请:
CleanShot 2026-04-17 at 17.09.59@2x.png
  1. 在 1Panel 首页的左侧边栏点击网站→证书→申请证书,设置如下:
  1. 然后点击网站→你的域名→https,设置如下:
CleanShot 2026-04-17 at 18.37.36@2x.png

然后就开始等待即可,等待 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 面板。这是一个可视化的面板,我们所有的操作都会在面板中的终端里进行,需要准备的东西也与之前的大致相同:

  1. 域名已解析到这台服务器
  2. SMTP 邮件设置(与上文中的邮件参数一致)
  3. 可以接受邮件的一个邮箱,也就是管理员邮箱

因为像 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。

CleanShot 2026-04-18 at 22.11.20@2x.png

你可以看到我这里是一个错误的例子,因为我的管理者邮箱输错了。这一步如果你跟我一样,也是邮箱输错的情况,没关系。你就正常地填写你的用户名和密码,然后点击确认,它会跳转到验证邮件的界面。

然后我们打开 1Panel 面板的终端,输入如下代码授权,直接激活账号:

./launcher enter app
rails runner "User.find_by_email('mads@madsgogo.top').activate"

然后我们直接打开一个新的网页, Discourse 的 login 页面,一般是:

你设置的域名/login

在浏览器输入上面的地址,然后我们就能直接进入到 Discourse 的正常使用了。

结尾

那么本篇文章就到此结束,我们在里面讲了两种 Discourse 的配置方法。说实话,我也踩了不少的坑,真的是运气坏,什么样的错误都会被我碰上。

所以如果你有任何的疑问,也欢迎在我的论坛里面留言,以后我们就在论坛里面愉快地玩耍吧!

Mads Do
新的一人公司社区,用AI 和系统提升效率,少工作,多赚钱,享受生活