WIP - Coolify: Self-hosted PaaS

Hetzner-backed coolify is still in the early stages of development, but as a self-hosted PaaS it is a great alternative. Read and learn from our first experiences with this leading technology.

Coolify (https://coolify.io) describes itself as "an all-in-one PaaS that helps you self-host your own applications, databases or services (like Wordpress, Plausible Analytics, Ghost) without having to manage your servers...".

It is supported by Hetzner and in fact integrates very well with Hetzner servers, making it a viable alternative for low-budget though high-performance Shopware 6 setups.

I have given it a main chapter here because I expect we will be using it a lot in the coming months, and I consider it a viable option for Shopware 6 self-hosting.

Coolify is 100% docker based and its central functionality is to setup and orchestrate these docker containers. Not only helps Coolify to reduce the complexity of the setup, but also provides maximum performance and complete flexibility to distribute the required components (web server, database, Redis, ElasticSearch, etc.) across multiple servers.

See https://coolify.io/docs for how to set up and configure Coolify. We use a smaller Hetzner cloud server to host the Coolify admin application and additional servers to host the different Shopware instances as needed.

Obviously, self-hosting is a complex thing. For any questions or support, please do get in touch with me.

Why?

  • Price performance ratio - certainly one of if not the most cost-effective way for a professional high-performance hosting of Shopware 6.

  • Ultimate scalability and flexibility - you can start small, with just a database and a web server instance on the same physical server, and later easily add services like Redis or RabbitMQ as needed. Or distribute these services across further servers. You can even use the built-in traefik as a load-balancer to run multiple web server instances.

  • Infrastructure as code - as the runtime environment is defined using Docker and Docker Compose, it can be stored as source code with the project repository. This makes changes to the setup, e.g. switching PHP version, very simple.

  • No need for additional deployment workflows (.gitlab-ci.yml, bitbucket-pipelines.yml), no need for (Gitlab) runners and runner setups.

Last updated