This is an introduction to Coolify, a project that can deploy custom applications based on Git events. It’s similar to a self-hosted Netlify or Heroku.
Join the DZone community and get the full member experience.
I make a lot of silly projects, and one thing I’ve wanted for a long time is a way to automate the deployment process using Git. So in this blog post, we are going to be tackling just that.
First things first, let’s settle on what the target is. What I want is a system with the following:
I’ve been looking into this for a while and a lot of the solutions I’ve come across generally fall into a few categories:
These would work to some degree, but they all fall short of my target in one way or another. They either still need some level of manual attention on my part, or they aren’t responsive to actual git events, or they are just too much ceremony to set up on new projects. I build a lot of different projects that each have their own build steps so I can’t expect the same simple script to work for everyone.
For a while, I thought I was going to have to build my dream project myself out of a series of complex scripts all cobbled together, but I recently found a project called Coolify that looks like just the ticket.
I don’t have proof that it’s not, itself, a series of complex scripts all cobbled together, but it’s open-source and it’s packaged up nicely, so it’s better than anything else I’ve got.
You can find more details at coolify.io where you’ll see that it advertises itself as `self-hosting, made simple’ and ‘an alternative to Heroku and Netlify.`
Sounds great!
I’ll be setting it up on Linode. Here is a screenshot of my pretty basic settings for my server.
(Not necessary, but if you want to follow along with a new Linode account, use this link for $100 credit)
Once our server’s up and running, I can ssh into the server using the IP address (yours would be different):
Then I can go back to the Coolify website, and copy their install script into the terminal:
This part takes a bit, but once it’s finished, prompts us to go to the server’s IP address and port 3000, http://66.175.223.11:3000.
When we open that link, we get this sweet login page.