想做一套能看、能玩的社区/论坛,又不想只改通用后台模板的增删改查?OpenIsle 是面向社区站点的前后端分离项目:用户可以登录、发帖、写嵌套评论、点赞,也有分类标签、消息通知、私信聊天和积分。它更像一个可自托管的小型技术社区,而不是又一套 RBAC 中后台。
适合拿来做「社区论坛/社交站点/内容互动平台」一类课设或二次开发:前台信息流适合截图,业务闭环也完整——登录、发帖、评论、看主页、改设置都能当场演示。后端 Spring Boot,前端 Vue 3(Nuxt);本机用 Docker Compose 把 MySQL、Redis、RabbitMQ、后端、WebSocket 和前端一起拉起来即可。站内资源页提供源码包,积分约 80(以站内为准)。
能做什么
- 社区信息流:登录后看首页动态,按分类/标签筛选
- 发帖与评论:选分类/标签发帖,详情页支持嵌套评论与互动
- 消息与活动:私信聊天、活动/通知页
- 个人中心:用户主页、个人设置、积分页
- 关于/统计:站点介绍与基础统计
相对「只有用户表 + 帖子表」的课设,本文更强调前台社区闭环:信息流、发帖评论、私信与积分都能在本机串成可截图链路。
技术栈一览
| 层级 | 技术 |
|---|---|
| 后端 | Java 17、Spring Boot、JPA、JWT |
| 前端 | Vue 3、Nuxt、Node 20 |
| 数据/中间件 | MySQL 8、Redis 7、RabbitMQ |
| 实时 | 独立 WebSocket 服务 |
| 编排 | Docker Compose(dev profile) |
本机能看到什么
以下截图全部来自本机 http://127.0.0.1:3000,不是官方演示站。种子数据带有测试分类/标签,但没有示例帖——登录后需先发一篇纯文本测试帖,再截信息流与详情。图片上传默认走腾讯云 COS,没配 Key 就不要演示插图。

/login
/signup(默认白名单模式,演示请用种子账号,勿卡在注册)
/
/new-post(选测试分类/标签,纯文本即可)
/posts/{id}

/message(可用 admin 与 user1 互发一条)
/activities
/users/1(admin)
/settings
/points
/about(或统计 /about/stats)Docker Compose 怎么跑
建议可用内存 ≥ 6 GiB(MySQL + Redis + RabbitMQ + 两个 Java 应用 + Node)。本机需 Docker/Docker Compose;走 dev profile 时 Java 与 Node 都在容器里跑,宿主机主要准备 Docker 即可。
- 解压源码包,进入项目根目录(含
docker/docker-compose.yaml、.env.example)。 - 复制并编辑环境文件:
cp .env.example .env
- 务必在
.env增补(或确认):
SEARCH_ENABLED=false
说明:Compose 里 OpenSearch 整段已被注释,但后端默认仍可能去连 opensearch:9200;只改 OPENSEARCH_ENABLED 无效,要改的是 SEARCH_ENABLED。
- 保持本机 URL,不要改成外部演示域名:
NUXT_PUBLIC_API_BASE_URL=http://localhost:8080
NUXT_PUBLIC_WEBSOCKET_URL=http://localhost:8082
NUXT_PUBLIC_WEBSITE_BASE_URL=http://localhost:3000
WEBSITE_URL=http://localhost:3000
- 启动(常规写法):
docker compose \
-f docker/docker-compose.yaml \
--env-file .env \
--profile dev up -d
本机若遇 Docker bridge/容器互访受限,可改用 host 网络覆盖文件再起(一笔带过;多数读者按上面常规 Compose 即可)。
- 浏览器打开 http://127.0.0.1:3000。健康检查:
http://localhost:8080/actuator/health。看状态与日志:
docker compose -f docker/docker-compose.yaml --env-file .env ps
docker compose -f docker/docker-compose.yaml --env-file .env logs -f frontend_dev
docker compose -f docker/docker-compose.yaml --env-file .env logs -f springboot
端口一览
| 服务 | 地址 |
|---|---|
| 前端 | http://127.0.0.1:3000 |
| 后端 API | http://localhost:8080 |
| WebSocket | http://localhost:8082 |
| MySQL | 3306(库/账号/密码均为 openisle) |
| Redis | 6379 |
| RabbitMQ | 5672,管理台 15672 |
端口冲突时改 .env 对应变量即可。
演示账号
默认 REGISTER_MODE=WHITELIST,公开注册走白名单/审核——不要卡在注册页。直接用种子账号(密码均为弱口令 123456,截图请打码):
admin(ADMIN)user1(普通用户)user2(普通用户)
默认 POST_PUBLISH_MODE=DIRECT,测试帖会直接发布,方便截图。登录后先发一篇纯文本帖,再截详情、评论和首页信息流。
首次启动注意
dev profile 会在容器内 apt-get、Maven 编译和 npm install,首次很久,且依赖外网(Maven Central/npm;国内可提前配镜像加速)。后端 healthcheck 的 start_period 偏短,第一次容易显示「不健康」——请看日志等到 Started、前端就绪后再截图,不要误判失败后去截官方站。
初始化 SQL 只在 MySQL 数据卷首次创建时执行;要重新灌种子需 docker compose ... --profile dev down -v(会清空数据卷)。
实测踩坑
- 必须
SEARCH_ENABLED=false
Compose 已关 OpenSearch;只改OPENSEARCH_ENABLED读不到,后端仍可能连搜索节点。 - 默认白名单注册
演示用admin/user1/user2,别在注册页空耗。 - 无示例帖 + 无 COS
种子只有分类/标签;发纯文本帖即可演示信息流与评论。没配腾讯云 COS 时插图/上传可能失败。 - 首次编译假不健康
看springboot/frontend_dev日志等 Started,而不是只盯 healthcheck 红灯。 - 外网可选能力可跳过
Google/GitHub 等 OAuth、Resend 邮箱、OpenAI Markdown 润色、WebPush 都不是本地闭环必需;密码登录即可。 - 弱口令与占位 JWT
库口令、RabbitMQ、JWT 默认都是演示值,演示后立刻改,勿原样上公网。
安全与合规提醒
- 默认弱口令:演示账号、数据库、消息队列、JWT 占位密钥均偏弱;截图打码,切勿裸奔公网
- 生产或公网场景:强密码、反代 + HTTPS、收紧端口暴露面
- 协议为 MIT:自用与写教程通常没问题;再分发请保留 LICENSE 与版权声明
- 本帖截图均来自本机
http://127.0.0.1:3000,不是官方/预发演示站 - COS/OAuth/邮件/AI 润色等第三方能力未配置时不要强行演示
小结
若你需要一份「社区前台 + 发帖评论 + 私信积分 + Docker 一键」的课设素材,OpenIsle 的主界面是信息流与互动,而不是再套一层中后台权限脚手架。按「复制 .env → 关闭搜索 → Compose 启动 → 种子账号登录 → 发纯文本测试帖」验收即可。要上公网请自行做安全加固;本文定位就是本机练手与答辩演示。
源码压缩包可在本文下载,需 80 积分。














暂无评论内容