Skip to content

however-yir/nebulacms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

NebulaCMS - 插件化内容管理平台 | Plugin-first Content Platform

🔥 A plugin-first content platform rebuilt from Halo with independent namespace, branding, and delivery pipeline.
🚀 Built with Java 21, Spring Boot, WebFlux, R2DBC, Vue 3, and Gradle multi-module architecture.
⭐ Supports private deployment, plugin extensibility, API-first integration, and env-driven DB/Redis/Ollama configuration.

面向个人与团队内容场景的可扩展 CMS(管理后台 + 插件生态 + 私有化部署)

Java 21 Spring Boot WebFlux Vue 3 Gradle GPL-3.0

Status: showcase-ready

Upstream: halo-dev/halo

非官方声明(Non-Affiliation)
本仓库为社区维护的衍生/二次开发版本,与上游项目及其权利主体不存在官方关联、授权背书或从属关系。
商标声明(Trademark Notice)
相关项目名称、Logo 与商标归其各自权利人所有。本仓库仅用于说明兼容/来源,不主张任何商标权利。

Series: talentflow-hr · aurora-mall

Java 全栈作品线分工

Repo 主要角色 技术侧重 最适合的展示点
NebulaCMS 内容平台 插件系统、WebFlux、Vue 3 插件生态、内容管理、平台化
TalentFlow HR 业务后台 Spring Boot + Vue 组织流程、人事场景、后台系统
Aurora Mall 电商系统 Spring Boot + MyBatis 商品交易、配置治理、质量门禁

目录


1. 项目定位

NebulaCMS 是基于 Halo 2.x 做工程化二次开发后的独立内容平台仓库,目标是形成“可长期维护、可持续迭代、可独立发布”的自有项目形态。

本仓库重点解决三件事:

  • 命名与品牌独立:避免与上游包名、镜像名、npm scope 混用
  • 配置可注入:数据库、Redis、Ollama 等依赖全部支持环境变量驱动
  • 发布链路独立:CI、镜像、前端包作用域、仓库元信息统一为 NebulaCMS

2. 改造目标与工程原则

2.1 改造目标

  • 从“Fork 副本”升级为“独立可演进仓库”
  • 建立统一的项目命名、品牌与发行链路
  • 在不破坏主干结构的前提下完成系统性重构

2.2 工程原则

  • 可审查:改动尽量落在明确文件与模块边界内
  • 可验证:核心配置与构建链路可通过命令直接验证
  • 可维护:参数化敏感配置,减少本地化硬编码

3. 已完成改造(40项)

3.1 命名空间与工程坐标

  1. settings.gradle 项目名改为 nebulacms
  2. Java 主命名空间从 run.halo.app 切换至 io.nebulacms.app
  3. Java 工具平台命名空间从 run.halo.tools.platform 切换至 io.nebulacms.tools.platform
  4. api/build.gradlegroup 改为 io.nebulacms.app
  5. application/build.gradlegroup 改为 io.nebulacms.app
  6. platform/application/build.gradle 坐标改为 Nebula 命名
  7. platform/plugin/build.gradle 坐标改为 Nebula 命名
  8. 自定义 Gradle 插件 ID 从 halo.publish 改为 nebulacms.publish
  9. buildSrc 发布插件文件改名为 nebulacms.publish.gradle
  10. 主应用产物命名从 Halo 命名切换至 NebulaCMS

3.2 前端生态与包管理

  1. 前端 workspace 包作用域从 @halo-dev/* 切换到 @nebula-labs/*
  2. ui/package.json 依赖引用统一切换为 @nebula-labs/*
  3. ui/packages/api-client 包名与仓库链接切换
  4. ui/packages/components 包名与关键词切换
  5. ui/packages/console-shared 包名切换
  6. ui/packages/editor 包名与仓库链接切换
  7. ui/packages/shared 包名与仓库链接切换
  8. ui/packages/ui-plugin-bundler-kit 包名与仓库链接切换
  9. 前端 package author/repository/homepage 统一切换到 NebulaCMS
  10. 前端相关 issue/repo URL 从 halo-dev 指向 nebula-labs

3.3 配置安全化与环境变量改造

  1. 主配置数据库 URL 改为 NEBULACMS_DB_URL 驱动
  2. 主配置数据库用户名改为 NEBULACMS_DB_USERNAME
  3. 主配置数据库密码改为 NEBULACMS_DB_PASSWORD
  4. 主配置新增 Redis Host 变量 NEBULACMS_REDIS_HOST
  5. 主配置新增 Redis Port 变量 NEBULACMS_REDIS_PORT
  6. 主配置新增 Redis Password 变量 NEBULACMS_REDIS_PASSWORD
  7. 主配置新增 Redis Database 变量 NEBULACMS_REDIS_DATABASE
  8. 主配置新增 Ollama 开关 NEBULACMS_OLLAMA_ENABLED
  9. 主配置新增 Ollama 地址 NEBULACMS_OLLAMA_BASE_URL
  10. 主配置新增 Ollama 模型 NEBULACMS_OLLAMA_MODEL
  11. 工作目录默认值从 .halo2 迁移为 .nebulacms
  12. 新增 .env.example 用于本地与服务器配置模板

3.4 CI/CD、镜像与发布链路

  1. GitHub Actions 主工作流命名改为 NebulaCMS
  2. CI 工件命名改为 nebulacms-artifacts
  3. Docker 镜像默认仓库切换到 ghcr.io/nebula-labs/nebulacms
  4. Docker Hub 镜像名切换到 nebulalabs/nebulacms
  5. application/build.gradle 插件预置下载支持 NEBULACMS_APPSTORE_PLUGIN_URL
  6. .github/actions/setup-env 描述与命名改为 NebulaCMS 语义
  7. .github/actions/docker-buildx-push 默认参数改为 NebulaCMS 体系

3.5 品牌、文档与合规

  1. 重写 README、替换 Logo/Wordmark、新增 Fork 协议说明与 .github/settings.yml 仓库元信息模板

4. 技术架构

flowchart LR
  U["用户 / 管理员"] --> UI["NebulaCMS Console (Vue 3)"]
  UI --> APP["NebulaCMS Application\nSpring Boot + WebFlux"]
  APP --> DB[("PostgreSQL / MySQL / MariaDB / H2")]
  APP --> REDIS[("Redis (Optional)")]
  APP --> OLLAMA["Ollama (Optional)"]
  APP --> PLUGIN["Plugin Runtime"]
  APP --> OPENAPI["OpenAPI + Client SDK"]
Loading

5. 模块结构

nebulacms/
├── api/                    # 公共 API 与扩展模型
├── application/            # 主应用(WebFlux + Security + Plugin)
├── platform/               # 平台依赖与 BOM
├── ui/                     # Vue 3 管理后台与前端子包
├── api-docs/               # OpenAPI 产物
├── e2e/                    # 端到端测试
├── buildSrc/               # 自定义 Gradle 插件
└── .github/                # CI/CD 与仓库设置

6. 快速开始

6.1 本地开发

git clone https://github.com/however-yir/nebulacms.git
cd nebulacms
cp .env.example .env
./gradlew clean build
./gradlew :application:bootRun --args='--spring.profiles.active=dev,mysql'

6.2 本地访问

  • 管理后台:http://127.0.0.1:8090/console
  • API 文档:http://127.0.0.1:8090/swagger-ui/index.html

7. 配置说明

关键环境变量如下:

  • NEBULACMS_WORK_DIR
  • NEBULACMS_DB_URL
  • NEBULACMS_DB_USERNAME
  • NEBULACMS_DB_PASSWORD
  • NEBULACMS_REDIS_HOST
  • NEBULACMS_REDIS_PORT
  • NEBULACMS_REDIS_PASSWORD
  • NEBULACMS_REDIS_DATABASE
  • NEBULACMS_OLLAMA_ENABLED
  • NEBULACMS_OLLAMA_BASE_URL
  • NEBULACMS_OLLAMA_MODEL
  • NEBULACMS_APPSTORE_PLUGIN_URL

详细示例见 ./.env.example


8. 部署方式

8.1 Docker 运行

docker run -d \
  --name nebulacms \
  -p 8090:8090 \
  -v ~/.nebulacms:/root/.nebulacms \
  --env-file .env \
  ghcr.io/nebula-labs/nebulacms:latest

8.2 生产建议

  • 数据库与 Redis 使用托管服务并开启备份
  • .env 交给密钥管理系统(如 Vault / GitHub Secrets)
  • CI 使用独立镜像仓库凭据,不复用上游仓库发布凭据

8.3 文档与发布入口

入口 路径 作用
文档中心 docs/ 功能、插件、认证、备份等说明
OpenAPI 产物 api-docs/openapi/ API-first 集成与客户端生成
端到端测试 e2e/README.md 系统级回归入口
前端包与控制台 ui/ 管理后台与插件 UI 生态
工作流 .github/workflows/ 构建、发布与 CI 链路

9. 与上游差异

  • 已完成品牌、命名空间、镜像、包作用域、仓库元信息独立化
  • 保留上游可追踪基础,便于后续按需同步安全修复
  • 配置项全面环境化,适配本地开发、容器化和私有化部署

9.1 Halo 迁移提示

迁移面 关注点
命名空间 run.halo.* 已迁移为 io.nebulacms.*
前端包作用域 @halo-dev/* 切到 @nebula-labs/*
环境变量 统一改为 NEBULACMS_* 前缀
工作目录 默认从 .halo2 切到 .nebulacms
发布镜像 镜像名、工件名和 CI 流程已改为 NebulaCMS 语义

10. 仓库元信息

仓库元信息模板在 ./.github/settings.yml,已包含:

  • 仓库名称:nebulacms
  • 仓库描述:NebulaCMS - plugin-first open source content platform forked from Halo with independent namespace, branding, and deployment pipeline.
  • Topics:nebulacms, cms, spring-boot, webflux, vue, r2dbc, plugin-system, self-hosted

11. 协议与合规


12. 致谢

感谢 Halo 社区提供稳定的上游基础能力。NebulaCMS 在此基础上进行工程化延展,并保持对上游开源协议的尊重与遵循。

About

Plugin-first content platform rebuilt from Halo with independent branding, deployment, and extensible Java/Vue architecture.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors