Coolify - self-hosting made easy

My experience using and deploying apps with Coolify.

The Journey

Operating a web server that anyone can access from all over the world always fascinated me, and still does to this day. When I first started self-hosting back in 2022, I was looking for something that is

  • Open Source and Community-Led
  • Easy to get started
  • Able to run multiple projects
  • Able to do automatic deployments on git push
  • Manageable from a Web-UI
  • Secure by default
  • Preferably Docker based
  • Actively maintained.

My first find was CapRover, which checked almost all the boxes, except for the last release being one year old at the time (glad to see it getting more updates lately!). I tried it out, and after a not particularly easy, but doable setup process, I started playing with it a little. The One-Click Apps turned out to be quite amazing, and I set up a few of them.

Turns out that Andras Bacsai, the creator of Coolify, was also inspired by them for his implementation of Services in Coolify.

But I came across a major pain point in CapRover when it came to continuous and automatic deployments of my own applications.

The TL;DR is that continuous deployments in CapRover are largely your job to implement by yourself. CapRover provides documentation for doing continuous deployment and zero-downtime, but they rely heavily on GitHub actions and lots of configuration to get Docker images built, pushed to a registry, and used in CapRover.

This felt quite hacky to me and overly complex to do for every small new project and was just a bit too much for my grug developer brain.

So after some time of abandoning my CapRover instance and just deploying projects to Vercel, I started searching for an alternative.

The Coolify Revelation

In early 2024, I came across Coolify on Twitter. I looked into it, was amazed to see it checked every requirement that I wanted it to, so I started setting up my instance on the same Hetzner VPS that I previously had my CapRover instance on.

First of all, the installation process was way easier with just a simple one-line bash command that does most of the work for you. After configuring my firewall and DNS records, I was pretty much good to go.

Some rough edges

When I tried to deploy my first site, I got some stability issues with my server crashing due to insufficient memory used by Docker, but I circumvented that after assigning some swap memory and setting a limit to how much memory Docker is allowed to use.

I also had some issues with Traefik proxy settings in an application, but I eventually got it working with the help of ChatGPT.

A blessing and a curse for me is the standard Nixpacks build pack, which I use on most services/apps, but I am considering switching them to Docker / Docker compose. I appreciate the general ease of use it provides, but it can sometimes make it harder for me to configure stuff.

When I set up a Laravel application with more than just an HTTP server and a database, it was some more custom configuration I had to do, so I ended up contributing to Coolify's Laravel documentation in order to make it easier for other devs having the same issue as me.

The root cause of this issue wasn't Nixpacks itself, but a limiting default setting in the included NGINX reverse proxy of the PHP container generated by Nixpacks. But a more straightforward configuration method would have made it easier to debug.

The UI also has some quirks and isn't on a Vercel-like level of polish, but it does its job. I see this getting better and better in the future, as the project grows in adoption and maybe in team size (they're two full-time devs at the time of writing this).

The best parts

Some of the things I value the most in Coolify are

  • true (!) zero downtime deployments
  • an amazing GitHub source integration
  • two-factor authentication (optional)
  • super simple database backups
  • preview deployments (yes, just like Vercel!)
  • a growing list of ready-to-use services

Conclusion

As you might have guessed, it turns out I'm a huge fan of Coolify, and would highly recommend it for anyone who is interested to go and try it out. It has some gotchas and isn't a finished product (still currently in v4 Beta), but it's worth it, when you don't want to be dependent on "Big Cloud" for your side projects or even small to medium production applications. If you're just starting out, you might run into some blockers, so having a general knowledge of Linux and servers would be a good starting point.

I love seeing this project, the community, and its adoption grow over the past year, and I can't wait for it to succeed even more.

Last updated