# Rhex
**Repository Path**: rhex/Rhex
## Basic Information
- **Project Name**: Rhex
- **Description**: 一个面向正式部署与长期维护的现代论坛系统,基于 Next.js App Router、Prisma 与 PostgreSQL 构建。
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 3
- **Created**: 2026-03-31
- **Last Updated**: 2026-06-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Rhex
**基于 Next.js 16 + React 19 + Prisma + PostgreSQL 的现代社区系统**
适合搭建兴趣社区、知识社区、会员论坛、品牌用户社区和内部讨论平台。
[](https://nextjs.org/)
[](https://react.dev/)
[](https://www.postgresql.org/)
[](https://www.prisma.io/)
[](https://tailwindcss.com/)
[](./LICENSE)
---
## 项目简介
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.2 + 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 20+ |
## 运行架构
标准部署至少包含 4 个部分:
- `Web / API`:Next.js 服务
- `PostgreSQL`:主数据库
- `Redis`:异步任务、消费锁、运行时队列
- `Worker`:统一后台进程,负责异步任务和 RSS 抓取
如果你使用本地上传,还需要为 `uploads/` 准备持久化存储。
## 环境变量
```bash
cp .env.example .env
```
必填:
```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 分库,可以二选一配置:
```env
# 推荐:直接写进连接串
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`。
### 首次安装
```bash
git clone https://github.com/lovedevpanda/Rhex.git
cd Rhex
cp .env.example .env
```
改完 `.env` 后启动:
```bash
docker compose up -d
```
完成后访问 `http://localhost:3000`。
### 升级
```bash
docker compose pull
docker compose up -d --remove-orphans
```
备份:
```bash
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 20+、PostgreSQL 16+、Redis 6+、pnpm。
### 首次启动
```bash
git clone https://github.com/lovedevpanda/Rhex.git
cd Rhex
pnpm install
cp .env.example .env
```
修改 `.env` 后启动:
```bash
pnpm run setup
pnpm run build
pnpm run start
```
另开进程启动 worker:
```bash
pnpm run worker
```
### 升级
```bash
git pull
pnpm install --frozen-lockfile
NODE_ENV=production pnpm run setup
pnpm run build
```
构建完成后,按你的进程管理方式重启 `pnpm run start` 和 `pnpm run worker`。
### 开发调试
```bash
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`
## 项目结构
```text
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 站**
[](https://linux.do)
本项目在 [LINUX DO](https://linux.do) 社区发布与交流,感谢佬友们的支持与反馈。
## 贡献
欢迎提交 Issue 和 Pull Request。
推荐流程:
1. Fork 仓库
2. 新建分支
3. 提交修改
4. 发起 PR
## License
本项目基于 [MIT License](./LICENSE) 开源。