文章目录
- Cockpit:一个灵活的开源无头内容管理系统
- 它能干什么
- 部署方式
- API 怎么用
- 适合什么场景
- 一些局限
- 总结
Cockpit:一个灵活的开源无头内容管理系统
做内容型项目的时候,最头疼的往往不是前端怎么写,而是后端内容怎么管。传统的 CMS 把内容和展示绑在一起,换个前端框架就得大动干戈。Cockpit 这个项目就是来解决这个问题的——它是一个无头 CMS,只管内容存储和 API 输出,前端用什么技术随便你选。
它能干什么
Cockpit 的核心能力是内容建模和 API 输出。你可以通过管理后台定义内容结构,比如博客文章、产品列表、页面配置这些,然后通过 REST API 或 GraphQL 把数据拉到任何前端去用。
内容模型支持三种类型:Collections(集合,适合博客文章这种多条目的)、Singletons(单例,适合网站配置这种只有一份的)、Trees(树形结构,适合导航菜单这种有层级关系的)。字段类型有 20 多种,常见的文本、图片、富文本、下拉选择都有。
资产管理这块,图片处理、视频缩略图、CDN 集成也都支持。用户权限管理也做了,角色、权限、两步验证、API Token 都有。
多语言支持是内置的,可以给内容加本地化字段,还能设回退语言。做跨国项目或者多语言网站的应该用得上。
部署方式
最简单的是 Docker,一行命令就能跑起来:
docker run -d \ --name cockpit \ -p 8080:80 \ -v cockpit_storage:/var/www/html/storage \ cockpithq/cockpit:core-latest跑起来之后访问http://localhost:8080/install完成初始化就行。
数据库默认用 SQLite,零配置。数据量大了或者需要更高性能,可以切到 MongoDB,在配置文件里改一下数据库连接就行。
传统部署也支持,下载解压,确保 PHP 版本在 8.3 以上,装好 PDO 和 GD 扩展,给 storage 目录写权限就能用。
API 怎么用
REST API 的用法很直接,拿博客文章举例:
# 获取所有带 cms 标签的已发布文章 curl "https://yoursite.com/api/content/items/blog?filter={tags:'cms'}" # 创建新文章 curl -X POST "https://yoursite.com/api/content/item/blog" \ -H "Cockpit-Token: your-token" \ -H "Content-Type: application/json" \ -d '{"title":"新文章","content":"内容","tags":["cms"]}'GraphQL 也支持,查询和变更都能做。对前端开发者来说,用哪种方式取决于项目习惯。
适合什么场景
Cockpit 比较适合这些情况:
用 JAMstack 架构做静态网站,内容通过 API 拉取,前端用 React、Vue 或者其他框架渲染。做移动端 App 的时候,iOS 和 Android 都能通过同一个 API 获取内容。电商产品目录管理、企业多语言官网、IoT 设备的内容分发,这些场景都能覆盖。
它还支持多租户,可以用 Spaces 把不同站点或客户的内容隔开,做 SaaS 平台的内容底层也行。
一些局限
Star 数 727,社区规模不算大,遇到问题可能得自己翻源码解决。文档覆盖了基本功能,但高级用法的示例不多。和 Strapi、Directus 这些更流行的无头 CMS 比,生态插件和第三方集成少一些。
不过换个角度看,代码量不大,结构清晰,自己改起来反而容易。MIT 协议,想怎么定制都行。
总结
Cockpit 是一个轻量、实用的无头 CMS。功能该有的都有,部署简单,API 设计合理。如果你的项目需要一个不绑前端的内容管理方案,又不想上太重的系统,可以试试看。
实用的无头 CMS。功能该有的都有,部署简单,API 设计合理。如果你的项目需要一个不绑前端的内容管理方案,又不想上太重的系统,可以试试看。