Simple content platform to manage any structured content.
License: MIT. Built with: PHP, JavaScript, CSS, Dockerfile. Website: https://getcockpit.com. Source: https://github.com/Cockpit-HQ/Cockpit.
### Option 2: Docker (Recommended) ```bash # Run Cockpit with persistent storage docker run -d \ --name cockpit \ -p 8080:80 \ -v cockpit_storage:/var/www/html/storage \ cockpithq/cockpit:core-latest # Access at http://localhost:8080/install ``` ### Start Building Once installed, create content models through the admin UI or via API: ```javascript // Fetch your content anywhere fetch('/api/content/items/blog') .then(res => res.json()) .then(posts => { // Use in React, Vue, mobile apps, etc. console.log('My content:', posts); }); ``` ## 🛠️ Key Features | Feature | Description | |---------|-------------| | **Content Modeling** | Collections, Singletons, Trees with 20+ field types | | **Asset Management** | Image processing, video thumbnails, CDN integration | | **User Management** | Roles, permissions, 2FA, API tokens | | **Multi-language** | Localized content with fallback support | | **Developer Tools** | GraphQL playground, REST docs, CLI commands | | **Extensibility** | Custom fields, addons, hooks, events | | **Multi-tenancy** | Spaces for multiple sites and clients | ## 📋 System Requirements - **PHP** >= 8.3 with PDO, GD extensions - **Database** SQLite (default) or MongoDB - **Web Server** Apache with mod_rewrite or Nginx - **Permissions** Writable `/storage` directory Ensure `$_SERVER['DOCUMENT_ROOT']` is properly configured. ## 🌐 API Examples ### REST API ```bash # Get all published blog posts curl "https://yoursite.com/api/content/items/blog?filter={tags:'cms'}" # Get single post by ID curl "https://yoursite.com/api/content/item/blog/60f1b2b3c4d5e6f7a8b9c0d1" # Create new post curl -X POST "https://yoursite.com/api/content/item/blog" \ -H "Cockpit-Token: your-token" \ -H "Content-Type: application/json" \ -d '{"title":"New Post","content":"Content here","tags":["cms"]}' ``` ### GraphQL ```graphql # Query blog posts with pagination query GetBlogPosts($limit: Int, $skip: Int) { blog(limit: $limit, skip: $skip, filter: {tags: "cms"}) { _id title content _created _modified } } # Create new blog post mutation CreatePost($data: JSON!) { saveContentItem(model: "blog", data: $data) { _id title } } ``` ## 🔗 Resources - **[Documentation](https://getcockpit.com/documentation)** - Complete guides and API reference - **[GitHub](https://github.com/cockpit-hq/cockpit)** - Source code and issues - **[Community Forum](https://discourse.getcockpit.com)** - Get help and share knowledge ## 📱 Use Cases - **Headless Websites** - Static sites with JAMstack - **Mobile Apps** - iOS/Android with native or hybrid frameworks - **E-commerce** - Product catalogs and content management - **Corporate Sites** - Multi-language corporate websites - **IoT Dashboards** - Content for smart devices and displays - **Multi-tenant SaaS** - Content infrastructure for platforms ## 🐳 Docker Run Cockpit in containers for consistent, scalable deployments across any environment. ### Quick Start with Docker ```bash # Run with SQLite (development) docker run -d \ --name cockpit \ -p 8080:80 \ -v cockpit_storage:/var/www/html/storage \ cockpithq/cockpit:core-latest # Access at http://localhost:8080/install ``` ### Production Setup with MongoDB ```yaml # docker-compose.yml version: '3.8' services: cockpit: image: cockpithq/cockpit:core-latest ports: - "80:80" environment: - COCKPIT_DATABASE_SERVER=mongodb://mongo:27017 - COCKPIT_DATABASE_NAME=cockpit volumes: - ./storage:/var/www/html/storage - ./config:/var/www/html/config depends_on: - mongo mongo: image: mongo:8 volumes: - mongo_data:/data/db environment: - MONGO_INITDB_DATABASE=cockpit volumes: mongo_data:
Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.
Most self-hosted apps run comfortably on modest hardware — a Raspberry Pi 4, a mini PC, a NAS with Docker support, or a small VPS is usually enough for personal or family use. CPU and RAM requirements scale with how many simultaneous users or how much data you push through Cockpit. Storage requirements depend on the kind of data you keep; check the README for guidance on data retention.
Last verified: 2026-05-22