Introducing Coolify, a project that can deploy custom applications based on Git events. It is similar to a self-hosted Netlify
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 git, So, in this article, we are going to tackle just that.
First things first decide what the goal is. What I want is a system with the following:
- Automatic deployment when a new commit lands in my Git repo.
- Hands-off System. I don’t want to touch it once it sets.
- It’s easy to set up new projects without much hassle.
I’ve been looking into this for a while now, and most of the solutions I’ve encountered generally fall into a few categories:
These will work to some extent, but they all fall short of my goal in one way or another. They either require some manual attention on my part, are not responsive to actual Git events, or are too much function to set up on new projects. I build many different projects with my own build steps, so I can’t expect a single simple script to work for everyone.
For a while, I thought I’d have to build my dream project myself from a series of complex scripts, but I recently found a project called cool off It looks just like the ticket.
I don’t have proof that it’s not a series of complicated scripts all linked together, but it’s open source, well packaged, so it’s better than anything I have Is.
You can find more information on coolify.ioWhere you’ll see it advertises itself as ‘Self-Hosting, Made Simple’ and ‘The Alternative to Heroku and Netlify’.
i’ll turn it on linode, Here is a screenshot of my very basic settings for my server.
(Not required, but if you want to follow along with a new Linode account, Use this link for $100 credit, This is an affiliate link, and I will receive a small commission.)
Once our server is up, I can
ssh In the server using the IP address (yours will be different):
Then I can go back to the Coolify website and copy their install script into Terminal:
wget -q -O install.sh; sudo bash ./install.sh
When we open that link, we get this lovely login page:
I can’t log in because there is no account set up, so I’ll go ahead and register as a new user with my email and password. Once I do, I’m in!
So, first of all I want to change the domain name. In my DNS records, I can add a new A record pointing to coolify.austingil.com
184.108.40.206, Then, I can click the cog icon at the bottom left of the Coolify screen to go to the Settings page. once i change the url to and press save, coolify will get an ssl certificate for me.
And once that’s done, I should go to coolify.austingil.com and see the same login screen, but on an easy to remember domain name with an HTTPS connection.
I really don’t want to understate how awesome this is. This is amazing. Really!
OK, log back in.
Next thing to do is connect to my GitHub repo for automated deployment. To do this, I need to add a new “Git Source” under the “Create New Resource” menu.
In this case, I’ll tell Coolify that it’s coming from GitHub, and all the defaults look fine to me.
I guess I can leave it all as it is.
Once I hit save, it redirects me to GitHub and walks me through creating a new GitHub app. This app will prompt whenever my GitHub repo receives a new commit. That signal will eventually trigger a new deployment.
With the GitHub app created, I’m redirected once again to my Coolify instance for just a moment, but then I’m asked to install the app I just created and choose which repo it has access to.
Ok, everything is connected and configured, if I go back to my Coolify dashboard, I have my git source created, and I should be able to create a new resource for an application.
Now I can choose GitHub.com as the source to load my repository. I can find what I’m looking for by searching “war” and then selecting the main branch.
Next, I see a bunch of options for Run Time. Today it’s just a static website, but it’s great to have the option readily available.
With the static option selected, it will ask me for configuration for this new project. There will always be some random names, but I’ll call mine “Battle Bannerz” because why not?
I’ll give it a custom domain,
https://bb.austingil.com, But for this to work, I need to create another A record in my DNS pointing to bb
220.127.116.11, Once again, once the DNS is configured, Coolify will take care of the SSL certificate.
My repo contains only source files, so I also need to configure coolify to run
npm install then to download all dev dependencies
npm run build To create productive assets. my project get all production assets from build command
/dist folder, so I also need to tell Coolify to treat it as the root of the project.
So with that setup, I hit save, and then it asked me if I wanted to deploy. Yes, I do, and after a short while we get our moment of truth.
I see a purple “open” button. I clicked it and…
Omg, this is so good! I can’t believe that worked. This is awesome!
Ok, the last thing to test is whether the new job will trigger the redeployment. A quick way to do this is with the GitHub UI. i just made a small change in it
and back to Coolify, looks like it tracked him down
webhook_commit And started rebuilding projects.
Forty seconds later, I saw the success message and found that the updated version of the website was deployed.
Ok, that’s enough introduction for today. We see that it works as advertised, but there are more features that I didn’t get:
- Deploy preview to development branch
- Deploy to remote Docker or Kubernetes instances
- use it for database
- custom docker and docker compose stack
There’s something to be said about it being an open-source, self-hosted solution. This means that you have complete control over what is happening in your system, you are not dependent on anyone else, and all your data remains under your control.
So, if you want to go the self-hosted route but also want the benefits of automated Git deployment, definitely check out Coolify. I don’t know if this will be most readers, but it is such a blessing.
And again, if you want some credits to start on Linode, use this affiliate link,
Thank you so much for reading. if you like this article please share it, This is one of the best ways to support me. you can also Sign up for my newsletter either follow me on Twitter To know when new articles are published.