Skip to content
herperPublic
forked from lovedevpanda/Rhex

About

Rhex Forum System is a modern, extensible, production-ready forum platform for building and operating online communities.

Resources

Stars

3 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

335 Commits

Folders and files

Repository files navigation

Rhex

基于 Next.js 16 + React 19 + Prisma + PostgreSQL 的现代社区系统

适合搭建兴趣社区、知识社区、会员论坛、品牌用户社区和内部讨论平台。

Next.js React PostgreSQL Prisma Tailwind CSS License: MIT


项目简介

Rhex 是一套面向正式部署和长期维护的论坛/社区底座。项目当前基于 Next.js App Router、React 19、Prisma、PostgreSQL 和 Redis 构建,已经包含:

  • 前台社区站点
  • 完整后台管理
  • 用户成长与运营能力
  • 多种内置应用
  • RSS 抓取与异步任务处理
  • AI 助手自动回复能力

当前能力

论坛与内容

  • 分区、节点、标签、关注、热门流、最新流、搜索
  • 普通帖、悬赏帖、投票帖、抽奖帖
  • 匿名发帖、匿名回复、匿名马甲配置
  • 楼层回复、楼中楼、点赞、收藏、关注、举报、屏蔽
  • @用户 提及通知
  • 红包帖、聚宝盆、打赏、礼物、热度权重
  • 帖子可见等级/VIP 限制、登录解锁、回复解锁、积分购买解锁
  • 附件上传、附件购买、附件回复解锁、外链附件
  • RSS 输出

Markdown 与富内容

  • Markdown 渲染
  • 代码高亮
  • KaTeX 数学公式
  • Mermaid 图表
  • Task List、脚注、上下标、定义列表、缩写等扩展
  • 图片灯箱与媒体内容展示
  • Markdown 自定义表情

用户体系

  • 用户名密码登录
  • GitHub OAuth、Google OAuth
  • Passkey / WebAuthn
  • 找回密码、邮箱/手机验证码
  • 等级、勋章、认证、VIP
  • 积分、签到、补签、邀请奖励
  • 邀请码、兑换码
  • 个人资料、头像裁剪、账户绑定
  • 站外通知 Webhook

后台管理

  • 总览仪表盘
  • 用户管理
  • 帖子管理
  • 评论管理
  • 分区/节点管理
  • 节点申请审核
  • 等级系统
  • 勋章系统
  • 认证系统
  • 公告与帮助文档
  • 举报中心
  • 日志中心
  • 敏感词与内容安全
  • 站点设置
  • 后台全局搜索

内置应用

应用 说明
AI 助手 配置 AI 开关、模型接口、提示词、代理账号,并在帖子/评论中被 @ 后自动异步回复
RSS 抓取中心 支持 RSS/Atom 源管理、统一 worker 调度、Redis 队列快照、失败重试、日志追踪
五子棋 人机对战、免费次数、门票积分、AI 难度、胜利奖励
阴阳契 双选项积分挑战、税率配置、战绩统计
自助广告位 首页广告位购买、订单审核、广告展示

界面预览

首页与社区导航

首页预览

帖子详情

帖子详情

后台管理

后台总览

站点设置

后台设置

技术栈

类别 技术
前端框架 Next.js 16.4 + React 19
UI / 样式 Tailwind CSS 4.2、Base UI、Radix UI
数据库 PostgreSQL
ORM Prisma
缓存 / 队列 / 锁 Redis + ioredis
鉴权 Session Cookie、GitHub OAuth、Google OAuth、Passkey
内容渲染 markdown-it、highlight.js、KaTeX、Mermaid
文件处理 本地存储、S3/OSS 兼容对象存储、Jimp
运行环境 Node.js 22.23.4+ / 24.22.1+(推荐 24 LTS)

运行架构

标准部署至少包含 4 个部分:

  • Web / API:Next.js 服务
  • PostgreSQL:主数据库
  • Redis:异步任务、消费锁、运行时队列
  • Worker:统一后台进程,负责异步任务和 RSS 抓取

如果你使用本地上传,还需要为 uploads/ 准备持久化存储。

环境变量

cp .env.example .env

必填:

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/bbs?schema=public"
SESSION_SECRET="replace-with-a-long-random-secret"
CAPTCHA_SECRET_KEY="replace-with-a-long-random-secret"
REDIS_URL="redis://127.0.0.1:6379"

如果 Redis 有密码或需要使用非 0 分库,可以二选一配置:

# 推荐:直接写进连接串
REDIS_URL="redis://:your-password@127.0.0.1:6379/2"

# 或者保持 REDIS_URL 不含认证信息,额外设置:
REDIS_PASSWORD="your-password"
REDIS_DB="2"

多程序共用同一个 Redis 时,建议设置不同的 REDIS_KEY_PREFIX;如果使用 Docker Compose 内置 Redis,REDIS_PASSWORD 也会自动启用 Redis requirepass。建议同时设置 SITE_URL / APP_URL。其他配置按需修改 .env.example 里的注释即可。

Docker Compose 部署

前置条件:Docker Engine / Docker Desktop、Docker Compose Plugin。直接拉镜像运行,不需要本地 docker build。

镜像的基础镜像使用浮动 tag(node:24-bookworm-slim),会自动跟随 Node.js 官方安全更新,因此升级时务必重新拉取镜像。镜像构建时带有 Node 版本安全下限校验(见 Dockerfile 的 MIN_NODE_VERSION),若拉取到的 Node 版本低于下限,构建会直接失败而不会产出镜像。

首次安装

git clone https://github.com/lovedevpanda/Rhex.git
cd Rhex
cp .env.example .env

改完 .env 后启动:

docker compose up -d

完成后访问 http://localhost:3000。

升级

docker compose pull
docker compose up -d --remove-orphans

备份:

docker compose --profile backup run --rm postgres-backup
tar -czf backups/rhex-files-$(date +%Y%m%d-%H%M%S).tar.gz uploads addons .env docker-compose.yml

源码运行

前置条件:Node.js 22.23.4+ / 24.22.1+(推荐 24 LTS)、PostgreSQL 16+、Redis 6+、pnpm。

仓库内提供 .nvmrc(内容为 24),使用 nvm / fnm 时可直接 nvm install 获取当前 24.x 最新补丁版本。package.json 的 engines.node 与 .npmrc 的 engine-strict=true 会在 Node 版本低于安全下限时直接拒绝安装依赖。

首次启动

git clone https://github.com/lovedevpanda/Rhex.git
cd Rhex
pnpm install
cp .env.example .env

修改 .env 后启动:

pnpm run setup
pnpm run build
pnpm run start

另开进程启动 worker:

pnpm run worker

升级

git pull
pnpm install --frozen-lockfile
NODE_ENV=production pnpm run setup
pnpm run build

构建完成后,按你的进程管理方式重启 pnpm run start 和 pnpm run worker。

开发调试

pnpm run setup
pnpm run dev

默认种子管理员账号通常是:

  • 用户名:admin
  • 密码:ChangeMe_123456

首次登录后请立即修改密码。

常用脚本

命令 说明
pnpm run dev 启动开发环境
pnpm run build 构建生产包
pnpm run start 启动生产 Web 服务
pnpm run start:prod 构建并启动生产 Web 服务
pnpm run setup 同步数据库结构并按需写入基础数据
pnpm run setup:prod 以 NODE_ENV=production 执行 pnpm run setup
pnpm run worker 启动统一 worker(默认 NODE_ENV=production),处理后台任务、延迟任务、RSS 抓取、拍卖结算、AI 回复等所有异步消费
pnpm run worker:debug 以更详细的堆栈信息启动 worker,方便排查
pnpm run prisma:generate 生成 Prisma Client
pnpm run prisma:push 同步数据库结构
pnpm run prisma:seed 执行种子脚本
pnpm run lint 运行 ESLint

后台模块概览

管理后台

  • /admin
  • /admin?tab=users
  • /admin?tab=posts
  • /admin?tab=comments
  • /admin?tab=structure
  • /admin?tab=levels
  • /admin?tab=badges
  • /admin?tab=verifications
  • /admin?tab=announcements
  • /admin?tab=reports
  • /admin?tab=logs
  • /admin?tab=security

站点设置

  • 展示与品牌
  • 注册与邀请
  • 验证码
  • GitHub / Google / Passkey
  • SMTP
  • 节点申请
  • 评论与互动
  • 匿名发帖
  • 打赏与礼物
  • 红包与聚宝盆
  • 热度算法
  • 积分与 VIP
  • 上传与附件
  • Markdown 表情
  • 页脚导航
  • 头部应用导航

应用后台

  • /admin/apps/ai-reply
  • /admin/apps/rss-harvest
  • /admin/apps/gobang
  • /admin/apps/yinyang-contract
  • /admin/apps/self-serve-ads

项目结构

Rhex/
├── src/
│   ├── app/              # 页面、路由、API Route
│   ├── components/       # UI 组件和页面组件
│   ├── db/               # Prisma 查询与数据访问层
│   ├── hooks/            # 前端复用 Hook
│   ├── lib/              # 业务服务、运行时、领域逻辑
│   └── types/            # TS 类型声明
├── prisma/
│   ├── migrations/       # 数据库迁移
│   ├── schema.prisma     # Prisma 数据模型
│   └── seed.ts           # 初始化种子脚本
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
├── .env.example
├── scripts/              # setup、worker 等脚本
├── public/               # 静态资源
├── uploads/              # 本地上传目录
├── docs/                 # 项目文档和截图
├── package.json
└── README.md

适用场景

  • 技术社区
  • 知识论坛
  • 内容沉淀型社区
  • 品牌会员社区
  • 内部讨论平台
  • 带积分、VIP、活动和小游戏的运营型社区

社区支持

学 AI,上 L 站

LINUX DO

本项目在 LINUX DO 社区发布与交流,感谢佬友们的支持与反馈。

贡献者

感谢所有通过 Pull Request 参与改进 Rhex 的贡献者。

@momofa
@momofa
@Jasper4860
@Jasper4860
@josephxzy
@josephxzy

贡献

欢迎提交 Issue 和 Pull Request。

推荐流程:

  1. Fork 仓库
  2. 新建分支
  3. 提交修改
  4. 发起 PR

发布与镜像

正式版本统一通过 GitHub main 分支和 GitHub Actions 构建、发布 GHCR 镜像。版本更新、提交、镜像验证、生产部署与回滚步骤请遵循 GitHub 发布与 Docker 镜像流程。

License

本项目基于 MIT License 开源。

About

Rhex Forum System is a modern, extensible, production-ready forum platform for building and operating online communities.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages