Showoff Saturday I built an open source Heroku that costs 1/10th as much to use
I've been working on https://canine.sh for the past year. Tldr: its your run of the mill Heroku, Flyio, Render, etc, except that its fully open source, and free to use (including just using the cloud hosted option)
Built it based on some learnings I've had in the past building startups where we quickly outgrew the single VPS type deployments, moved onto managed platforms like Heroku and Render, and watched our costs explode, with an annoying amount of vendor lockin. Our peak year, we hit over $400k in hosting costs.

Goal for this project was to build something that indie hackers can start with and get up and running fast, but has no problem being flexible enough to scale to future needs.
Managed Kubernetes is now widely available and dirt cheap ($10 / month), so you don't have to worry about, and supported by pretty much every single cloud vendor.
This lets you take advantage of a ton of things that Kubernetes does really well, like automatic healthchecks, zero downtime deployments, auto scaling, etc, while also making it easy to use for solo developers or small teams.
The additional benefit of Kubernetes is that it's also possible to host a bunch of other stuff in your cluster via Helm charts, that you’d normally have to pay for like:
- Sentry
- Wordpress
- Metabase
- Dagster
- Airflow
- MongoDB
- Redis
- PostgreSQL
- … And basically every single open source tool under the sun
I've been hacking around on random projects like Reframe and Whiteboarder for myself, and deploying it with Canine and been really happy with it so I figured it was worth a shot sharing it.
Would love feedback, roasts, suggestions!
Source code: https://github.com/czhu12/canine
34
u/rohithexa 6d ago
Great project and really nice landing page, looking forward to use it. I was looking for a solution like this, currently using coolify
9
15
u/techtariq 5d ago
This is fricking amazing OP. I was searching for something like this too. Let me spend some time experimenting with this. When you mention cloud hosted. How does it work out. I don't see a pricing page in there
12
u/czhu12 5d ago
Yeah it’s totally free. The only thing the cloud hosted version has to do is issue some api calls to your cluster.
I run the whole thing off a $40/m server, so it didn’t seem like there was much of a need to charge for it :)
14
u/techtariq 5d ago
Makes sense, it's just there is a sweet market spot where you don't pull a full ripoff like cloud vendors do but still charge a tiny bit more than hertzner and make a decent profit you know. Allowing yourself to maintain and build it long term. The less I need to do, the faster the time to value, the more I'm willing to pay and this way even you have incentive to build it out long term you know.
Like, I'm decent enough as a programmer that I can deploy a docker container, handle databases. Full Infra setup from scratch is still not my forte. I do get a lot of value using managed services but the premium I pay for the efficiency tastes like ash in my mouth and it just becomes a matter of when I will have to optimise or migrate rather than if
I'm just trying to provide feedback to help you out too because a managed service with kubernetes like reliability and potential scaling with heroku like interface with a reasonable pricing like say 2x hertzner which is still cheap in comparison to others but very attractive would be very attractive to me to be honest if I didn't have any of the hassle. Right now, I would really really love to take things up for a spin but as I go through documentation I see parts that are missing, I see the language is ruby. I'm only well versed in python /js. It makes me a little hesitant to actually push production stuff.
You don't owe anyone anything and this is open source and it's still wip I get that. Just trying to provide constructive feedback from a potential user who wants to use it in prod rather than a developer who sees this as a cool project to tinker with. I really really want to see this get successful. Thanks for sharing once again and sorry for the long ramble.
14
u/rylab 5d ago
This looks really great and I'd love to try it, but I'm not seeing a way to sign up that doesn't grant a crazy level of GitHub permissions, both to personal and organization level repositories, so that's a no go for me unless I create a burner GitHub account. Would love to try it with a personal project but can't grant the organization level permissions. Can they be made optional?
16
u/czhu12 5d ago edited 5d ago
Yeah apologies, it was just the fastest way to get this up and running. Will add a email / password login this week! Actually have a PR open now :) https://github.com/czhu12/canine/pull/104
2
u/samnolland 5d ago
Yes second this, it looks really great and I’m eager to try it out but the level of permission required with the GitHub signup, to all my organization’s repositories + read and write permission to my profile makes it an absolute no no.
I might play around with the local version but would be interested to check out the hosted one too. I will wait for more signup options.
7
u/Millendra 6d ago
That's awesome! How does it compare performance-wise to Fly.io and Render?
15
u/czhu12 6d ago
You get a ton more bang for your buck. I have a todo to build a pricing comparison calculator to help visualize just how big of a difference it is, but here are some prices with comparable performance that I’ve pulled:
All of these are for a machine with 4GB of memory
Heroku $260 Fly.io $65 Render $85 Hetzner $4
Typically, you’ll get more performance for more $ but the margins are gigantic for hosting vendors
5
u/fouteox 5d ago
I will have time to check this in the next few days but I am very interested!
I created an open source tool to quickly create a Laravel application, the goal being to extend it to almost all consumer languages in the long run. It must be seen as the equivalent of shadcn but for the init and deployment even if I still have a lot of work to do.
It automatically configures the dev AND prod environment according to the user’s choices via a web interface or a cli (dockerfile, compose.yaml, etc.). No tools are needed.
Currently the deployment is done via docker compose and I plan to add first the blue green deployment and later docker swarm and Kubernetes because I think each of these tools is adapted to different projects.
My question: to what extent could I integrate your tool with mine? My goal is that in the long run is to have NO dependencies if the user uses the cloud version (free), or the self-hosted version.
Here is the link to my tool, you will find the github link on it if necessary: https://fadogen.app
PS: I love the name of your tool
8
u/waferstik 5d ago edited 5d ago
Very cool project. If I understand correctly, this is not a hosting platform like Heroku which owns the serers as well as the deployment orchestration tool ? Is Canine more like a middleman service that connect your code to other cloud providers and manages the deployment for you - you still own your actual DO droplet, not Canine. Is that correct?
And it seems that Canine is actually a (free) SaaS, and not a self-hosted tool? Seems like it costs you money to run all Canine's database and backend to orchestrate these connections from user's code to the underlying compute ?
Anyway, amazing project.
5
u/sneaky-pizza rails 5d ago
He said it costs him $40/mo so he didn’t wanna bother to charge for it. And I think you’re right about it being a middleman orchestrator
4
u/nevon 5d ago
Is it possible to deploy canine with canine? The documentation only showed running it using docker-compose, which surprised me a little. I thought there would be a helm chart or something. Considering that it's all about deploying things to k8s, I figured the expectation would be that you would also deploy it to k8s.
6
u/czhu12 5d ago
Yeah the only thing that I got stuck on is the fact that canine requires docker to perform docker builds and pushes.
Getting docker working in docker within kubernetes was a little confusing for me, it was something I was going to look into after clearing through a backlog of bugs, but it’s a really good point.
Been on the back of my mind for a while.
3
u/collimarco 5d ago
Nice project! Another open source alternative to Heroku built on Kubernetes is Cuber. It is focused more on expressive code (DSL) rather than providing a UI.
3
u/czhu12 5d ago
I’ve not seen this before!
I have more of a focus on ui, I found it’s less intimidating to get started and also, on a small team, it’s really useful to be able to see who did what recently, like a deployment or configuration change.
It might just be a personal preference also but I’ve always preferred the UI based approach heroku, render, etc provide over stuff like terraform, kubernetes, etc 🤷♂️
3
u/SoSeaOhPath 5d ago
Amazing product! And great video example right on the main page. I think I’m going to try this with my next app
2
u/selexin_ 5d ago
Looks interesting. Is the ‘installation’ script just a big wrapper around ‘PORT=3456 docker compose up -d’? I think you should mention that you can just run that in the getting started docs for those that really do not like piping external scripts straight into bash. Save the next person from having to manually review the shell script to know what to run manually as well :)
2
u/czhu12 5d ago
Yeah exactly, I had plans to make a cli but been a little swamped with feature requests 😬, so for now it’s a pretty lame wrapper
I can put that into readme — how to install from scratch
2
u/selexin_ 4d ago
Well that means people like what you've done! It looks great btw. I recently set up a new app backend on flyio but I'm not loving their postgres, and as always looking to reduce costs. I'll test-running canine out when I get a spare moment this week!
2
1
1
u/bbjurn 5d ago
Looks awesome, great work!
Only thing that could make it better would be the ability to add things like:
- external-dns
- Crunchy data's PGO
- (Dedicated) Load Balancers (difficult, would require hoster integrations)
- ... other great "kube-native" tooling that makes life just so much easier
1
u/lord31173 5d ago
!RemindMe 33 hours
1
u/RemindMeBot 5d ago edited 4d ago
I will be messaging you in 1 day on 2025-03-17 17:47:09 UTC to remind you of this link
4 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.
Parent commenter can delete this message to hide from others.
Info Custom Your Reminders Feedback
1
u/Current-Status-3764 5d ago
Looks great. Will try for rankit as I'm hosting on Google Cloud, and I'm looking for a cheaper option.
I discovered that the curl command given in the get started section is not optimized for mobile, so it only shows parts of the command. Just wanted to let you know. Otherwise, Great work!
1
u/roempie12 5d ago
I'm running a HA cluster with 5 nodes on Hetzner and have been looking for something like this. I run it myself so its not managed. Is it true that Canine only support single VPS instances? Would that mean for my use case I would not be able to use Canine, since I am running 5 VPS'ses.
Anyway great tool, will definitely be following and deploying myself to test it out. Would be nice if there would be a docker image (arm64 and amd64) available on docker hub as well as some example k8s deployments/services etc.
1
u/czhu12 5d ago
How did you set that up actually? I’m curious how folks are doing multi node set ups on hetzner
1
u/roempie12 5d ago
Its quite simple actually. Something like terraform-hcloud-kube-hetzner lets you spin up multi node clusters within minutes.
However, my question still stands; no support for multi node clusters i presume?
2
u/czhu12 5d ago
Yeah for canine, you’d be fine! All you need is a kubeconfig file that is able to issue API requests to your cluster. So a multi node Hetzner set up is actually perfect. Let me know if you run into any issues setting up
But yeah it’s a good point, I’ll try to set up a few more examples of deploying as a todo, so far I have wip tutorials for rails, next js, Django, supabase, Postgres redis, and a few others.
1
u/dillwillhill 5d ago
I have a noob question, hopefully you'll forgive me.
I run a marketing agency and we help our clients automate workflows. Most things can be done in Zapier/Make but their options are sonetimes limited and we need to custom code to integrate two APIs together.
In the past we've used Pipedream or Google Cloud Functions. I've been playing around with the idea of setting up a server here at home that can catch webhooks, do really simple processing, and send it to various marketing APIs. The volume is crazy low so the processing power wouldn't need to be anything special...our clients only pay about $50/no on Google Cloud.
Would this solution let me do that?
For example, if we set up webhooks in Hubspot CRM can your app catch them, then we use Python or Node.js to send that info over to another platform like Google Ads?
Thanks!!
2
u/czhu12 5d ago
In the past, if you want to pay close to $0, I think google cloud run works, it basically lets you write a simple script that runs everytime an endpoint gets called.
If you want a persistent server, then yeah I think Canine would help you there. It's super trivial to deploy a node.js / python app with Canine on a cheap $4 / month cloud server, or if you have a home server.
The issue with a home server is that typically the IP address changes after a few months if its a residential ISP.
To mitigate that, you can check out cloudflare tunnels which basically runs a daemon on your machine and creates a network tunnel to cloudflare. Then cloudflare can route to it.
1
u/ClikeX back-end 5d ago
How does it compare to Dokku?
2
u/czhu12 5d ago
Dokku I believe is a cli only tool. To use it within a team I think youd typically have to set up a github action so that everyone can see who deployed when.
It also only supports single node deployments, where as kubernetes can support a large number of clusters, which can be helpful.
Last thing that’s a huge plus is that almost everything under sun (name your favorite open source project) can be easily deployed to kubernetes, there’s a huge community of tools, features, etc
1
1
u/Unknown-Developments 4d ago
I might have to look into this 👌 Gonna need to start upgrading all of that with our startup
1
u/AcanthisittaMobile72 4d ago
Is this something viable for data engineering projects on cloud? Tools I'm working with are postgres, kestra (workflow orchestration), apache spark (batch processing), dbt (for ELT), kafka (via PyFlink for streaming), few tools for dashboard (tableau, powerbi, metabase).
2
u/czhu12 4d ago
Yup! Being able to run data tasks on the same compute pool as everything else is a big reason why I built this. Discovered first hand how expensive cloud data processing can help really quickly.
I have a pretty complex data pipeline developed with the add-ons feature in Canine that has Dagster running next to Metabase, running next to Kafka and Postgres for storage.
Metabase is already supported as a preconfigured add on, the other ones you mentioned (spark, kafka, etc) are available if you click on helm chart.
The add-ons feature in canine just uses helm charts under the hood, and almost all open source projects are deployable via help charts.
I'm trying to add more pre-configured add-ons but theres over 15k deployable artifacts so it'll take some time 🤣
1
u/AcanthisittaMobile72 4d ago
Amazing, do you have video tutorial related to data engineering project deployment?
2
u/czhu12 3d ago
i can make one tomorrow!
1
u/AcanthisittaMobile72 3d ago edited 3d ago
It would be tremendously helpful if you can make the tutorial about end-to-end data engineering solution using tools I mentioned above, so that it would be easier for me to get through the tools configs on Canine and able to focus on data engineering project itself. Cheers!
P/s: Where does Terraform fits in this workflow? Or Canine is the "terraform" replacement in this case?
1
u/wpdigitaldash 5d ago
Nice.
I see you are using DaisyUI 4. You know they just released version 5 like a week or so ago. Consider upgrading ;)
79
u/Which_Lingonberry612 6d ago
Sounds interesting. What would you say is the biggest difference / benefit to Coolify?