Self-Hosted CMSs in Jamstack

Starting a website or an online project means facing a lot of important decisions. Choosing the right CMS platform is certainly one of them. With the variety of existing content management solutions (CMS) on the market, when deciding which one you should use might be way more difficult than you imagine.

Self-hosted CMS platforms are the number one choice for most businesses. All the credit goes to WordPress of course, the most popular CMS in the world. We like to think that Jamstack solutions are silent contenders to the reigning CMS king. Contenders that are slowly but surely getting a lot of support.

Wait, contenders?

Yeah, well, the thing with the Jamstack is that it is not one solution like WordPress but an architectural approach relying on many different parts/tools working in unison. That means CMS is just a part of the stack used to build a website or an app.

Previously we talked about headless CMSs. Pointed out the differences between Git-based and API-driven solutions. With that in mind, it was only natural to explore and cover self-hosted CMSs in Jamstack. So, in this post, I’ll try to shed some light on what makes these platforms great (or not), and why should businesses consider using them (or not).

But first the basics.

[@portabletext/react] Unknown block type "newsletter", specify a component for it in the `components.types` prop

What are self-hosted CMSs?

Self-hosted content management systems require an independent responsibility for the infrastructure of the site and its software dependencies such as databases, required software libraries, and more. If you decide to go by this route, that means that you'll be responsible for installing a CMS of your choice, on the server of your choice, and completing the initial setup.

Self-hosted CMSs in Jamstack, such as DecapCMS for example, allow webmasters to do all the typical PHP CMS tasks but without the bloat. It means that you'll still be able to add pages, write blog posts, change or add contact details, and more, but you won't have to deal with updating your content management system or worry about the plugins.

Why use self-hosted CMS?

There are several reasons why using self-hosted CMS is better than going with the hosted solution.

  • You are in complete control of your data. Being in control of your own data makes your business GDPR-compliant.
  • You host the website. This means that you are in complete control of the customization of it. You also have more freedom over your site which makes developers' jobs easier.
  • There are no updates, installations, and support. If you choose so.
  • Better security and privacy. Much like with headless solutions, hosting a website in the cloud of your choosing can significantly reduce the chances of attacks. Also, fewer updates are necessary in order to keep the site running efficiently.
  • Ability to extend the backend API services and the Admin Panel GUI with your own custom features.

The popular self-hosted CMSs for Jamstackers

We already covered there are plenty of SAAS headless CMSs out there, and there’s nothing wrong with them. But sometimes, on some projects or for some clients, it may be better or more convenient to have it all installed in your own AWS or whatever hosting option you have. If that is the case, check one of these.


Strapi is an open-source, JavaScript, headless CMS based on Node.js. We talked about it in our headless CMS post (again, clicking the link above will take you to our dev overview).

Here, I’d like to point out that besides giving you full control by having it where you want it, it offers a drag-and-drop possibility which makes editors’ management experience seamless and it offers a lot of opportunities for customization. For instance, you can install a number of plugins in just a few seconds that offer additional functionalities.

When to use Strapi?

Strapi is great if you want to start a new CMS project in no more than two minutes. During the development stage, Strapi will set up an SQLite connection so you won't need to boot up a MongoDB or MySQL just for the development process.

Pros & cons of Strapi

Let’s not repeat ourselves. Check the main article about it (linked the title with it). I’d like to mention Strapi is an open-source project and that makes it interesting for a broader developer community.


Wordpress doesn’t need any special introduction. It is one of the most popular content management systems in the world for the last 15+ years.

What does WordPress have to do with Jamstack?

Well, ever since 2016 it offers access to their API straight out of the box. This solution allowed developers to use it in new ways. In our case, we'll have to mention the most important one i.e. ability to separate the front-end and WordPress content management thanks to which you're no longer dependent on PHP. Check the official Wordpress REST API handbook for more info.

With so many developers already in the WordPress space, it's easy to understand why headless WordPress is gaining momentum.

When to use Wordpress?

This option is best used if you want to create a standalone program in a language that isn't PHP. If you happen to use JavaScript or jQuery in one of your themes or plugins, you can still use the REST API offered by WordPress. Why? Well, this solution provides a more structured way to interact with your content than the admin-ajax. It also provides a better user experience. The only drawback is that the REST API requires a lot of time spent on development.

There’s a good fix for this problem though. It’s called WPGraphQL. Unlike a REST API, GraphQL can help you get all of your data from a single request. For instance, apps that work on GraphQL can also work fast even on slow mobile networks.

Or you simply run your website with WordPress and don’t want to let go.

Pros & cons of Wordpress

Pros of using Wordpress
  • Allows the building of single-page apps quickly
  • Easy back-end management
  • Great development power
  • Most devs and non-dev personnel on the team is already familiar with it
Cons of using Wordpress
  • A lot of time spent on the development


Ghost is an open-source blogging platform. The complexity of WordPress that turned it into the CMS we know today infuriated people within the WP team that wanted a clean, fast, and easy-to-use blogging platform and not a content management system for pretty much anything. So, they made Ghost.

Ghost is written in Node.js and is basically a headless CMS that you can use either a self-hosted version or hosted one on Ghost’s own servers.

When to use Ghost?

Ghost was built as a blogging platform from day one and as such it still is the best use case for it. As such it is way faster than WordPress (when it comes to blogging) and it comes with native SEO and social functionalities appropriate for blogging.

Pros & cons of Ghost

Pros of using Ghost
  • Free for use and open-sourced
  • It is faster than WordPress
  • It has Markdown support
  • It has native SEO and social sharing functionalities
  • It has native registration forms, member management, payments, subscriptions, and email newsletters
  • You have full control over what data to get thanks to Ghost’s JSON API
Cons of using Ghost
  • Focus on blogging makes it a poor solution for other types of websites
  • Need custom functionalities? Learn to code


Grav is a modern open-source flat-file CMS. A flat-file CMS does not have a database but saves the data directly into files and folders. While we have encountered Grav previously in EMDYN case study (we actually moved away from it rather than use it) so, I wanted to check once more if the idea behind flat-file CMSs is interesting.

Since you are not dependent on databases it should make the development and migration much easier while providing you with good performance results.

When to use Grav?

Grav is simple, efficient, and fast but only for some use cases. It works best for small and mid-sized blogs and that seems to be a common feeling in many reviews I’ve come across.

Pros & cons of Grav

Pros of using Grav
  • Simple to use
  • Easy creation of templates and content
  • Custom fields for content
Cons of using Grav
  • Lacks advanced features
  • Template limitations


Cockpit is a self-hosted, open-sourced headless, API-driven CMS. In all honesty, we rarely had it on our radar (probably because it is loved mostly by VueJS devs). Joking aside it seems to be perfect when in need of a flexible content structure but don't want to be limited in how to use the content. So, no predefined content models but the ones you make yourself.

When to use Cockpit?

Small and mid-scale websites are the best use cases for Cockpit.

Pros & cons of Cockpit

Pros of using Cockpit
  • Easy setup
  • SQLite or MongoDB support
  • Cockpit addons.
Cons of using Cockpit
  • Documentation or the lack of it
  • Apparently, updates and bug fixes are few and far between
  • Cockpit addons (too few to mention, still a good idea)


Directus is an open-source tool that manages custom SQL database architectures and provides an intuitive admin app for managing its content. The UI is pretty clean and written in Vue, but most importantly the docs cover all the important things (such as writing your own addons).

When to use Directus?

In case you are planning on building a custom architecture application for clients looking for an omnichannel approach, Directus fits the bill nicely.

Pros & cons of Directus

Pros of using Directus
  • Self-host for free, or use their on-demand Cloud service
  • Friendly interface
  • Great documentation and community

Cons of using Directus

  • Bugs (being open-source and free that’s expected)

Prime CMS

Prime CMS is another self-hosted, headless CMS with a GraphQL interface. It is powered by TypeScript. A simple but powerful solution.

With Prime, you can create your own custom fields and the CMS supports multiple languages.

Why use Prime CMS?

Although there are some better options than Prime, this headless CMS is not a bad choice if you want to host your CMS locally. Unlike Contentful and Strapi, Prime CMS offers group fields and a dynamic layout. Another great benefit is that it’s completely free to use.

Pros & cons of using Prime

Pros of using Prime
  • It’s free
  • Open-sourced and self-hosted
  • Localization
Cons of using Prime
  • Currently in beta version
  • Documentation is lagging behind

Decap CMS (formerly Netlify CMS)

DecapCMS is one of the most popular git-based headless CMSs on the market. It allows for the creation of a website or an app with continuous deployment and 1-click HTTPs. It's usually the number one choice by developers when it comes to creating modern static websites and apps.

We already talked about it extensively in our headless CMS post (if you click the above link you’ll be taken there).

When to use DecapCMS?

One area where DecapCMS really excels is content. Even your writers and editors are going to love it because adding content is super efficient and super easy. It's markdown-friendly, it allows for the drag-and-drop upload of images and videos. and it can be easily installed for use with, basically, any static site generator.

Social sharing can be added with APIs from tools such as ShareThis or Shareaholic. Comments can be integrated with Disqus. And running A/B tests is straightforward thanks to the split testing feature. You'll be able to see different versions of your website or pages from various Git branches.

Pros & cons of Netlify

Let’s not repeat ourselves. Check the main article about it.

Which one should you choose?

We can’t answer it for you (though we can maybe make some points). Before answering consider a couple of things first. What is your use case? Building a blog, ecommerce, or any hybrid website? And do you have a developer at hand? Some of these CMSs here require no coding while others require serious dev hours to get them to work the way you want it.

CLICK HERE to schedule a 1-on-1 talk and learn more about what we can do for you and your business.

Further reading

Syntax episode 254: Headless CMS Break Down & Roundup -

Headless CMS: Self Hosted or PaaS? -