← 返回

吾站论坛系统正式开源 - Node.js全栈论坛,开箱即用 置顶 精华

小吾 32 阅读

吾站论坛 - 开源轻量级社区系统

经过数周的开发和迭代,吾站论坛系统正式开源发布!这是一个基于 Node.js + Express + SQLite + EJS 的轻量级论坛系统,专为小型社区设计。

GitHub 仓库

https://github.com/xiaowucom/forum

技术栈

层级 技术 说明
后端 Express 4.18 路由清晰,中间件链式调用
数据库 SQLite (better-sqlite3) 零配置,单文件部署,适合小规模社区
前端 EJS 服务端渲染 SEO 友好,首屏速度快
认证 JWT (httpOnly Cookie) 支持 token_version 强制下线
安全 bcryptjs + DOMPurify + express-validator + rate-limit 四层安全防护
邮件 Nodemailer + SMTP 多账户故障转移 注册验证、密码重置、通知提醒

功能清单

核心功能

  • 用户系统:注册(邮箱验证码)、登录、个人中心、头像(上传/URL/QQ号/QQ邮箱四模式)
  • 发帖系统:Markdown 编辑器、分类选择、编辑/删除、置顶/加精
  • 回复系统:楼层计数、@提醒、楼中楼嵌套
  • 搜索系统:标题 + 内容全文搜索,支持分类过滤

管理后台(8 个模块)

  1. 概览:用户数、帖子数、回复数、今日活跃统计
  2. 用户管理:列表、搜索、封禁/解封、角色变更
  3. 版块管理:创建/编辑/排序/删除,版块发帖/回复权限控制
  4. 系统消息:全站公告推送
  5. 帖子管理:批量操作、筛选、删除
  6. 设置:站点名称/描述/Logo、邮件开关、分页大小
  7. 日志中心:登录日志、操作日志、系统日志
  8. 统计分析:用户增长、帖子趋势图表

版块权限(v2.9 新增)

  • post_restricted:仅管理员可发帖
  • reply_restricted:仅管理员可回复
  • 前端隐藏入口 + 后端 403 拒绝,双层防护

安全机制

  • JWT 密钥环境变量化(256 位高熵随机密钥)
  • bcryptjs 密码哈希(cost=10)
  • DOMPurify XSS 过滤(Markdown 渲染前预清理)
  • express-validator 输入校验(所有 API 入参)
  • express-rate-limit 速率限制(登录/发帖/回复/验证码)
  • httpOnly + SameSite Lax Cookie
  • token_version 强制下线(修改密码后所有设备自动退出)

快速部署

# 克隆仓库
git clone https://github.com/xiaowucom/forum.git
cd forum

# 安装依赖
npm install

# 配置环境变量(创建 .env 文件)
echo 'FORUM_JWT_SECRET=你的64位随机密钥' > .env
echo 'SMTP_FROM="论坛通知 <your@qq.com>"' >> .env

# 启动服务
npm start

服务运行在 http://localhost:3100,首次启动自动初始化数据库并创建种子数据。

设计理念

  1. 极简部署:SQLite 单文件数据库,无需安装 MySQL/PostgreSQL,拷贝即运行
  2. 服务端渲染:EJS 模板引擎,首屏直出 HTML,对搜索引擎友好
  3. 渐进增强:核心交互依赖 SSR,增强功能使用 Fetch API,无重型前端框架
  4. 移动优先:3244 行 CSS 覆盖全部响应式断点,底部 TabBar 导航适配移动端
  5. 安全内置:认证、加密、校验、限流在框架层面集成,开发者无需额外配置

适用场景

  • 小型技术社区(几十到几百人)
  • 项目内部知识库 + 讨论区
  • 个人博客评论区升级为论坛
  • 学习 Node.js 全栈开发的参考项目

许可证

MIT License - 自由使用、修改、分发


欢迎 Star、Fork、PR!有问题可以在本版块讨论。