IDEATOX

ideatox.com 面向中文开发者与数字工作者,记录 AI 工具、在线工具、隐私边界与工程实践。

雨云香港 VPS 搭建 NodeBB:1Panel 配数据库、WebSocket 与社区权限

为开源项目建立 NodeBB 讨论社区,补齐 1Panel 模板之外的数据库、WebSocket、邮件验证和普通用户权限检查。

文章目录

开源工具的使用问题散在群聊里,后来的人很难找到已经回答过的内容。想给项目留一个长期可搜索的讨论区,可以考虑 NodeBB:按工具或使用场景组织主题,保留提问、回复和更新记录。

安装时需要注意,1Panel 的 NodeBB 应用模板只启动论坛容器,并不等于已经准备了数据库。数据库连接、正式域名、实时通信和邮件都要在开放注册前检查。

选服务器时,把论坛和数据库一起算

小型项目社区可以先月付一台 2 核 4GB VPS,将 NodeBB 和数据库放在同一台机器,观察实际内存与磁盘增长,再决定是否调整。头像、附件、图片和插件会持续增加资源需求,不能把“论坛刚启动时能运行”当成长期开站的容量结论。

通过雨云入口注册,优惠码 KuZhuJi。购买页可以选“中国香港 → 极速三网[三区] → AMD EPYC → 流量不限型”,系统使用纯净 Linux,再安装 1Panel。

2026 年 10 月 6 日,默认 40GB SSD 云盘、一个普通独立 IPv4、不叠加账户优惠券时,2 核 4GB 配置包含 8Mbps 上传和 15Mbps 下载:月付 53 元,消费返利 10.6 元;年付七折 445.2 元,返利 89 元。同条件 2 核 2GB 为月付 38 元、返利 7.6 元,年付七折 319.2 元、返利 63.8 元,上传 5Mbps、下载 10Mbps。

返利以积分发放,可用于续费,或按平台规则兑换、提现。购买规格、时长及优惠改变后,金额也会变,最后看“立即购买”下方的实际显示。邮件和外部附件存储需要另外计费时,也应算入社区预算。

先准备数据库,再初始化 NodeBB

NodeBB 支持 MongoDB、PostgreSQL 或 Redis 作为主数据库,选定一种后按该数据库的官方配置流程准备。新建单机社区可以使用 MongoDB;已经熟悉 PostgreSQL 的管理员,也可以沿用相应方案。下面以 MongoDB 为例,不把其他数据库的配置字段混入同一份配置。

在 1Panel 准备 MongoDB,启用认证,创建专门的数据库与应用账号,权限按 NodeBB 的数据库配置文档设置。应用账户和数据库管理员账户分开,数据库端口不要直接向所有公网地址开放。

进入 NodeBB 应用安装页,选择具体镜像版本,记下宿主机映射端口。模板里的容器 HTTP 端口是 4567;数据库服务与应用须有可达的容器网络,安装器里填写服务名和实际端口,不要把另外一个容器写成 localhost。

NodeBB 第一次启动会进入安装器,填写正式 URL、数据库类型与连接、管理员信息。正式 URL 例如 https://forum.example.com,应与后面的反向代理域名一致。初始化入口先限制为自己可访问,完成管理员创建后再开放论坛,防止公开的空安装器被别人抢先设置。

如果安装器提示数据库连接失败,依次检查服务是否启动、网络可达性、认证数据库和用户权限。不要为排错关闭数据库认证,也不要改成让所有来源访问数据库。

正式域名要能代理 WebSocket

在 1Panel 建立反向代理与证书,代理到 NodeBB 的可达 HTTP 地址。把 Host 和请求协议传给应用,并启用 WebSocket 支持。只代理普通 HTTP 时,文章页可能看起来正常,但实时通知与连接状态还没有得到验证。

如果通过 Nginx 或 OpenResty 手工调整,下面四项是 WebSocket 代理的关键部分,应加入现有的代理 location,保留该网站其他设置;它不是一份完整的网站配置。

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;

编辑后先验证代理配置,再重新加载。代理运行在容器里时,地址是否可达要从代理所在的网络判断,宿主机的 127.0.0.1 不能原样套到另一个容器。

NodeBB 的 config.json 中,url 是公开访问地址,port 才是应用监听端口。换成 HTTPS 域名后检查实际配置并重启应用,不要把公网 URL 改成内部数据库或容器地址。trust_proxy 也不要为了消除报错盲目开启,需要先保证前面的代理正确覆盖不可信转发头。

用两个普通测试账号打开同一主题,一方回复,另一方检查实时更新与通知。浏览器网络面板中可以查看 WebSocket 是否成功升级;失败后是否退回轮询,也值得检查。只有首页返回 200,还不能说明这部分已经正常。

分类围绕项目使用,权限用普通账号试

开站初期不必建几十个空分类。工具社区可以先设“安装与部署”“配置与排错”“使用案例”“项目更新”,每个分类写清楚应提供哪些信息,例如软件版本、部署方式、错误日志中可以公开的部分。

管理员、版主和普通成员分别设置权限。公告区可以只允许维护者发主题,问题区允许已验证成员提问;私有讨论是否可被访客查看、附件是否暴露,都要用退出登录的窗口检查。NodeBB 4 的联邦相关功能也应按需要配置,涉及私密内容时,另查内容的外部可见范围,不能只看本地分类名称。

配置邮件发送,测试注册验证、忘记密码和通知。邮件中的链接应指向正式 HTTPS 域名,发件域名按邮件商要求验证。用普通账号走完注册、发帖、举报和密码重置,再决定何时开放注册;有问题先修复对应步骤,不要让第一批读者替你查邮件配置。

数据库之外,还有上传文件和插件

1Panel 模板分别持久化了构建目录、node_modules、上传目录和 /opt/config。论坛帖子主要在数据库里,上传附件与服务器配置在文件里,完整备份要覆盖两边,记录当前镜像版本及插件清单。

暂停论坛写入后备份数据库和挂载目录,将副本存到 VPS 之外。恢复演练使用隔离域名,先关闭邮件及会产生外部活动的联邦功能,确认旧帖子、用户、头像和附件能回来,再测试登录与权限。

插件一次安装一个,先检查对当前 NodeBB 版本的支持。在测试副本上完成数据库升级和插件验证,再处理正式站。升级失败后,数据库已经发生迁移时,需要恢复升级前的数据,单纯换回旧容器镜像可能不能恢复论坛。

继续阅读 · 自托管实践 返回顶部