Skip to content

Cockpit-HQ/Cockpit

Repository files navigation

Cockpit CMS - Headless Content Management

cockpit banner

Modern, flexible CMS that adapts to your workflow

Cockpit is a headless CMS that gives you the flexibility to build content-driven applications your way. Whether you're creating websites, mobile apps, or IoT applications, Cockpit provides the content infrastructure you need.

✨ Why Developers Choose Cockpit

  • πŸš€ Headless by Design - Use any frontend technology (React, Vue, Flutter, etc.)
  • πŸ“Š Flexible Content Models - Collections, Singletons, and Trees with custom fields
  • πŸ”— GraphQL & REST APIs - Modern APIs with real-time capabilities
  • 🌍 Multi-language Support - Built-in internationalization for global applications
  • 🎨 No Vendor Lock-in - Own your data, deploy anywhere
  • ⚑ Performance First - MongoDB or SQLite backend, your choice

πŸš€ Quick Start

Get Cockpit running in under 5 minutes:

Option 1: Traditional Setup

# Download and extract wget https://github.com/cockpit-hq/cockpit/releases/latest/download/cockpit.zip unzip cockpit.zip && cd cockpit # Make storage writable  chmod -R 755 storage/ # Open in browser and complete setup open http://localhost/cockpit/install

Option 2: Docker (Recommended)

# 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:

// 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

# 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

# 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

πŸ“± 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

# 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

# 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:

Configuration

Create a config/config.php file and mount it to connect to MongoDB:

<?php // config/config.php return [ 'database' => [ 'server' => $_ENV['COCKPIT_DATABASE_SERVER'] ?? 'mongodb://mongo:27017', 'database' => $_ENV['COCKPIT_DATABASE_NAME'] ?? 'cockpit' ], 'sec-key' => $_ENV['COCKPIT_SEC_KEY'] ?? 'your-random-security-key' ];

Mount config via Docker Compose:

volumes: - ./config:/var/www/html/config

Or create custom Docker image:

FROM cockpithq/cockpit:core-latest COPY ./config/config.php /var/www/html/config/config.php

Available Tags

  • core-latest - Latest stable release
  • core-{version} - Specific version tags
  • pro-latest - Latest pro stable release
  • pro-{version} - Specific pro version tags

Visit Docker Hub for all available tags.

πŸ’ Partners

BrowserStack
Live, Web-Based Browser Testing

πŸ’ Sponsors

Backers on Open Collective Sponsors on Open Collective

Become a backer or sponsor through:

Thank you to all our backers! πŸ™

Copyright and license

Copyright since 2015 πŸ…°πŸ…ΆπŸ…΄πŸ…½πŸ†ƒπŸ…΄πŸ…ΉπŸ…Ύ under the MIT license.

See LICENSE for more information.