Discourse 是一款旨在革新传统论坛体验的开源现代论坛软件,它由 Stack Overflow 的联合创始人 Jeff Atwood 和 Robin Ward 等人共同创建,其首个公开测试版本(v0.8)于 2013年2月5日 发布。
💡 Discourse 的诞生与愿景:
Discourse 的诞生源于 Jeff Atwood 对当时论坛软件现状的不满,他认为它们大多体验陈旧、功能落后。他梦想打造一个如同 WordPress 之于博客那样标志性的论坛工具,旨在与 Twitter、Facebook 等社交媒体竞争,成为未来十年互联网讨论的基础设施。其目标是构建一个文明、理性的讨论环境,并为此在软件设计上做了诸多努力。
🤝 开源与商业化:
Discourse 遵循 GPLv2 开源协议,任何人都可以自由使用、修改和分发。项目通过提供专业的托管服务(最便宜的托管套餐起价为每月100美元)来获得收入。据报道,其托管服务在2016年左右月收入达到8万美元,在2018年前后已实现月收入约12万美元。这种“开源软件 + 付费托管”的模式,与 WordPress 的商业模式有相似之处。
Debian12如何部署Discourse
为什么选Debian12,因为个人在aws上同等配置,选择不同系统配置完Discourse,在Debian12下内存占用最少,流畅程度更有优势。
准备工作:
1,需要有一个域名,Discourse不支持IP部署,解析域名到云服务器ip,部署不能有cdn,部署中会监测域名,如果检测不到443端口,会自动退出部署。
2,需要有支持SMTP的邮件系统,个人用gmail和hotmail都测试过,Discourse不能正常发送邮件,建议用sendgrid或者aws邮件系统,国内可以用sendcloud国际版aurorasendcloud来发,每天有50封足够前期测试。
3,需要有支持587和465的云服务器,邮件端口如果不能开,那么无法完成部署,因为Discourse注册和登录等各种操作严重依赖邮件系统。
部署步骤:
安装Docker更新包列表 首先,确保包列表是最新的。打开终端并运行以下命令:
sudo apt-get update
安装必要的依赖项 为了安装 Docker,需要一些依赖项。运行以下命令来安装:
sudo apt-get install \ca-certificates \curl \gnupg \lsb-release
添加 Docker 的官方 GPG 密钥,为了确保下载的 Docker 软件是安全的,应该添加 Docker 的官方 GPG 密钥。运行以下命令:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
设置 Docker 的稳定版仓库,现在,您需要设置 Docker 的稳定版仓库。根据您的 Debian 版本,可能需要选择不同的存储库。例如,对于 Debian Buster:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker 引擎,更新包列表并安装 Docker 引擎:
sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io
验证安装,安装完成后,可以通过运行以下命令来验证 Docker 是否正确安装:
sudo docker --version
启动 Docker 服务并启用开机启动,最后,启动 Docker 服务并设置为开机启动:
sudo systemctl start dockersudo systemctl enable docker
添加当前用户到 docker 组以避免使用 sudo,为了不每次运行 Docker 命令时都使用 sudo,可以将用户添加到 docker 组:
sudo usermod -aG docker $USER
开始部署
./discourse-setup开始部署Hostname for your Discourse? [discourse.example.com]:
Email address for admin account(s)? [me@example.com,you@example.com]:
SMTP server address? [smtp.example.com]:
SMTP port? [587]:
SMTP user name? [user@example.com]:
SMTP password? [pa$$word]:
Let's Encrypt account email? (ENTER to skip) [me@example.com]:
一般如果邮件系统配置错误,在安装完成页面注册管理员点击会不起作用,以下命令先创建创始管理员
cd /var/discourse/
./launcher enter app
rake admin:create
逐一排查SMTP无法正常发送邮件原因
需要添加587端口
expose:
- "80:80" # http
- "443:443" # https
- "587:587" # SMTP TLS
需要设置认证方式plain改为login
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
EMBER_CLI_PROD_ASSETS: 1
#DISCOURSE_DEFAULT_LOCALE: en
UNICORN_WORKERS: 8
DISCOURSE_HOSTNAME: discourse.example.club
#DOCKER_USE_HOSTNAME: true
DISCOURSE_DEVELOPER_EMAILS: 'admin@example.com'
DISCOURSE_SMTP_ADDRESS: mail.example.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: admin@example.com
DISCOURSE_SMTP_PASSWORD: "123456"
DISCOURSE_SMTP_ENABLE_START_TLS: false # (optional, default true)
DISCOURSE_SMTP_DOMAIN: example.com
DISCOURSE_NOTIFICATION_EMAIL: admin@example.com
LETSENCRYPT_ACCOUNT_EMAIL: admin@example.com
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
DISCOURSE_SMTP_AUTHENTICATION: login
查看最新日志(按Ctrl+C退出)
tail -f /var/log/rails/production.log | grep -i "smtp"
grep -i "smtp.*error" /var/log/rails/production.log
显示:SMTP 连接过程、认证结果、服务器返回的错误代码(如
535 Authentication failed表示认证失败)等。查看官方邮件排查教程
https://meta.discourse.org/t/troubleshooting-email-on-a-new-discourse-install/16326
填写无误最后重构
./launcher rebuild app
大功告成
- 上一篇:NBA Live 19:一记在塑造重心和渲染氛围方面的精彩暴扣
- 下一篇:最后一页

幸存者危城
朕的江山
无尽洪荒
明珠三国
远征手游
蜀山传奇
梦想城镇
逍遥情缘
猎魔勇士
功夫之夜
地心守护
风暴迷城
坍塌世界
萌学园战纪
疯狂动物园
模拟城市:我是市长
军棋
少年名将





