Alejandro Cantero Jódar
Alejandro Cantero Jódar

Best Open-Source Headless CMS (SQLite compatible) for 2025

· Open Source Alejandro Cantero Jódar

Best Open-Source Headless CMS (SQLite compatible) for 2025

I’ve been searching for the best open-source headless CMS for my personal blog, and one of my top priorities was finding something cheap, scalable, and easy to manage. Since I didn’t want to deal with complex database setups, SQLite became an obvious choice—it’s lightweight, requires minimal configuration, and can be deployed anywhere. After diving deep into various options, researching community opinions, and testing a few myself, I’ve compiled a list of the best open-source headless CMS that support SQLite and can be easily deployed using Docker.

Strapi

Strapi is a widely popular open-source headless CMS written in JavaScript/TypeScript. It provides both REST and GraphQL APIs, making it flexible for different use cases. The admin panel, built with React, is sleek and highly customizable. It supports SQLite, along with other databases like PostgreSQL, MySQL, and MariaDB.

Key Features:

  • API-first approach (REST & GraphQL support)
  • User authentication and role-based access control (RBAC)
  • Plugin system for extending functionality
  • Easy customization of API endpoints and admin UI
  • File and media management
  • Good documentation and active community support

Pricing: Strapi is free under the MIT license. They offer Strapi Cloud (a managed hosting service) with paid plans, but self-hosting is entirely free. Previously, advanced RBAC features were behind a paywall, but they are now available for free in version 4.8.

User Opinions: Strapi has a strong following, but opinions vary. Some developers love its flexibility and plugin system, while others find it requires too much customization for advanced use cases. Issues like migration between versions and occasional bugs have been mentioned, but the overall sentiment is that Strapi is improving with each release.

GitHub Repository

Directus

Directus takes a unique approach by acting as a wrapper around any SQL database, meaning it works with existing databases without enforcing a strict schema. This makes it a fantastic choice for those who want a fully customizable database structure.

Key Features:

  • Works with SQLite, PostgreSQL, MySQL, and other databases
  • Auto-generates REST and GraphQL APIs
  • User-friendly admin panel (Directus Studio)
  • Role-based access control (RBAC) with granular permissions
  • Webhooks and real-time event system
  • Extensible with custom modules

Pricing: Directus is open-source under the BSL 1.1 license. It’s free for most users unless a company exceeds $5 million in revenue. They also offer Directus Cloud, starting at $15/month for managed hosting.

User Opinions: Many developers appreciate Directus for its “database-first” philosophy, allowing them to use existing SQL structures without modifications. The UI is well-received, and the learning curve is considered manageable. However, some users find Directus lacking in multi-language content handling.

GitHub Repository

KeystoneJS

KeystoneJS is a headless CMS and GraphQL API framework designed for full customization. It follows a code-first approach, where schemas and configurations are written in JavaScript/TypeScript.

Key Features:

  • Built-in GraphQL API
  • Fully customizable schema definitions
  • User authentication and session handling
  • Role-based access control
  • Supports SQLite, PostgreSQL, and MySQL
  • Plugin system for extending functionality

Pricing: Keystone is completely free under the MIT license. There are no paid plans or commercial services; it’s fully community-driven.

User Opinions: Keystone is well-loved by developers who prefer a code-first approach. It offers fine-grained control over content models but has a steeper learning curve compared to Strapi or Directus. Users also note that it lacks some out-of-the-box features, such as built-in multi-language support.

GitHub Repository

Payload CMS

Payload is a modern headless CMS focused on developer experience, with full TypeScript support and a minimalistic admin panel.

Key Features:

  • Full TypeScript support
  • REST and GraphQL APIs
  • Custom field types and UI extensions
  • User authentication with JWT
  • Versioning and draft/publish workflows
  • Supports SQLite, PostgreSQL, and MongoDB

Pricing: Payload is open-source under the MIT license, meaning self-hosting is free. However, they offer Payload Cloud, a managed hosting option starting at $35/month.

User Opinions: Payload has gained traction for its developer-centric approach. Users appreciate its clean API, extendability, and built-in authentication. However, it requires some initial setup and configuration, making it better suited for experienced developers.

GitHub Repository

Cockpit CMS

Cockpit is a lightweight PHP-based headless CMS designed for simplicity. It supports SQLite out-of-the-box, making it an excellent choice for small projects that require minimal setup.

Key Features:

  • Simple and intuitive UI
  • API-first approach with RESTful JSON endpoints
  • Multi-language content support
  • Role-based user management
  • Extensible via plugins

Pricing: Cockpit is free under the MIT license. However, they offer Cockpit Pro, a one-time purchase (€299 per project) for premium add-ons like cloud storage, webhooks, and enhanced multi-language features.

User Opinions: Cockpit is highly regarded for its simplicity and speed, making it ideal for smaller projects or those who prefer a minimalistic CMS. However, its community is smaller, and the lack of built-in GraphQL support might be a downside for some.

GitHub Repository

Final Thoughts & Plot Twist

After all this research, I actually decided to go with PocketBase. While it’s not exactly a CMS, it’s more of a Backend-as-a-Service (BaaS) created by Gani. Despite still being in its pre-1.0 phase, PocketBase is actively maintained and provides a rapid development experience with SQLite at its core. What I love most is that if I ever need something more advanced, migrating away from it is relatively straightforward.

GitHub Repository

SQLite is an excellent choice for self-hosted alternatives, and each of these CMSs has its strengths. However, after testing them, I found PocketBase to be the best fit for my personal needs!

Related posts

The AI Gold Rush: How Smart Agents Are Shaping Code Editors

The AI Gold Rush: How Smart Agents Are Shaping Code Editors

We’re not just coding anymore—we’re negotiating with intelligent agents that promise to help but sometimes slow us down before they speed things up. This isn't just a tech shift; it’s a mindset shift, and the real winners will be those who learn to partner with AI, not be replaced by it.

Read more
Blind Booleans vs. Context: Rethinking Boolean Returns

Blind Booleans vs. Context: Rethinking Boolean Returns

‘Blind booleans’ can make code ambiguous and harder to maintain. Discover why returning objects or enums instead of raw boolean values can enhance clarity and robustness in your code.

Read more
Microsoft Majorana 1: Why it's important for programmers?

Microsoft Majorana 1: Why it's important for programmers?

Majorana 1, the first quantum processor with topological qubits that will transform quantum software development and simplify the programming of advanced algorithms.

Read more
ALIA: Spain's LLM and Technological Sovereignty

ALIA: Spain's LLM and Technological Sovereignty

ALIA, developed by the Spanish government and coordinated by the BSC, promotes the use of Spanish in AI. With a 150 million euro investment, ALIA democratizes access to AI and positions Spain as a technology leader.

Read more
CSS is now a programming language

CSS is now a programming language

CSS is evolving by enabling conditional logic and reusable styles natively. These features reduce reliance on preprocessors like Sass and Less.

Read more
The Future of RxJS in Angular

The Future of RxJS in Angular

At the end of 2024, Angular 19 has been released with interesting changes that offer new solutions to problems that were traditionally solved with RxJS. These changes make it quite clear where Angular wants to go regarding interoperability with RxJS in the future.

Read more

Alejandro Cantero Jódar

Made with ♥ by a passioned developer © 2025