← 返回
吾站论坛系统正式开源 - Node.js全栈论坛,开箱即用 置顶 精华
吾站论坛 - 开源轻量级社区系统
经过数周的开发和迭代,吾站论坛系统正式开源发布!这是一个基于 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 个模块)
- 概览:用户数、帖子数、回复数、今日活跃统计
- 用户管理:列表、搜索、封禁/解封、角色变更
- 版块管理:创建/编辑/排序/删除,版块发帖/回复权限控制
- 系统消息:全站公告推送
- 帖子管理:批量操作、筛选、删除
- 设置:站点名称/描述/Logo、邮件开关、分页大小
- 日志中心:登录日志、操作日志、系统日志
- 统计分析:用户增长、帖子趋势图表
版块权限(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,首次启动自动初始化数据库并创建种子数据。
设计理念
- 极简部署:SQLite 单文件数据库,无需安装 MySQL/PostgreSQL,拷贝即运行
- 服务端渲染:EJS 模板引擎,首屏直出 HTML,对搜索引擎友好
- 渐进增强:核心交互依赖 SSR,增强功能使用 Fetch API,无重型前端框架
- 移动优先:3244 行 CSS 覆盖全部响应式断点,底部 TabBar 导航适配移动端
- 安全内置:认证、加密、校验、限流在框架层面集成,开发者无需额外配置
适用场景
- 小型技术社区(几十到几百人)
- 项目内部知识库 + 讨论区
- 个人博客评论区升级为论坛
- 学习 Node.js 全栈开发的参考项目
许可证
MIT License - 自由使用、修改、分发
欢迎 Star、Fork、PR!有问题可以在本版块讨论。