Show HN: An open-source, self-hostable Heroku and Netlify alternative
coollabs.io
coollabs.io
If those are wrong expectations, you might consider changing your marketing.
How much more obvious can it be?
I think heroku's alternative business plan should be suing all the companies/people calling themselves publicly calling themselves heroku alternative or a better heroku and delivering subpar projects.
See https://news.ycombinator.com/item?id=26581027 for recent discussion.
Also see: https://answers.netlify.com/t/support-guide-minimizing-impac... ("To make sure you can minimize the impact of our single-homed loadbalancer being down")
If one was using CNAME flattening, there was zero impact.
Pretty niche requirement I know, but the TTFB was insane as it was serving traffic from Brazil at that time.
This was around June 2020, if I recall so maybe things have changed. Moved to Cloudflare for our CDN
Having deployment just be a push to a remote repository is really nice.
Definitely very cool and something to keep an eye on as it develops!
[0]: https://github.com/coollabsio/coolify/blob/main/api/packs/no...
It's either that or it's the monster that is Kubernetes.
And then there's also Nomad, which is drastically simpler than k8s. Not Heroku-easier, but closer to docker-compose than Kubernetes.
Self-plugging my article on the Nomad vs Kubernetes subject: https://atodorov.me/2021/02/27/why-you-should-take-a-look-at...
So now you're stuck with 3 consul clusters, a vault cluster, whatever you choose for config management, and a nomad cluster. Feels like you didn't gain much from the simplicity of nomad.
In addition to that, knowing Hashicorp's pricing, I bet that set up would run you north of a million a year for enterprise setup.
Nomad relies on Consul for Service Discovery and K/V storage, and Vault for secrets, indeed ( Vault can use a variety of backends, including an integrated Raft-based one, Consul, object storage, etc.). One tool that does one thing well, which integrates with other tools that their thing well.
I vastly prefer having three simple Raft-based clusters to manage than the "everything and the kitchen sink" approach Kubernetes takes, with results like base64 encoded for "secrets".
And as someone doing both, Nomad+Consul+Vault are drastically easier on day one and day two. They're also usable outside of Nomad ( you can have bare metal machines outside of Nomad using Vault secrets and Consul for SD and K/V), and you can link multiple regions together.
You do indeed need some basic config management to configure the clusters. Ansible seems to have won that race sadly, and there are available playbooks.
> In addition to that, knowing Hashicorp's pricing, I bet that set up would run you north of a million a year for enterprise setup
They've changed up their pricing structure and there are more tiers and add-ons, so i doubt it ( basic Vault cluster was in the 5 figured range per year), if you need support. It's not like enterprise support for Kubernetes would come cheap either, especially if you do it the recommended way with multiple clusters and all that.
And even with managed Kubernetes, there's still a lot of complexity remaining ( GCP had to come out with a more managed service, GKE Autopilot, to address some of that), but you still have the evolution of APIs to keep track of every update you make, and there are still dozens of services that are updated each update, and each one can go wrong ( even if it rarely does).
> . One of the benefits of these lightweight solutions is that, you will basically find a helm chart for any serious application out there where as in nomad you might have to figure it out how to deploy. For instances deploying cassandra, you will find a helm chart, but nomad, you might find blog that does it or figure it out yourself. To my best of knowledge that how it is, may be I am wrong?
Indeed, and that's the main disadvantage for Nomad IMHO, the ecosystem is much smaller so there aren't that many ready-made equivalents to Helm charts and operators. Depending on how many of those you need, k8s can save you a lot of time.
> [microk8s] Low-ops, minimal production Kubernetes, for devs, cloud, clusters, workstations, Edge and IoT.
Microk8s started as an easy alternative to minikube for local dev.
k3s started as a simplified version of k8s for testing/experimenting on RPis, etc.
Today both seem to focus on IoT/"edge". Both do clustering and HA of the control plane though, so are in theory usable in production.
However, why would you use either of them in production? Yes, it's easier than vanilla k8s, but still has a lot of moving parts, and to top it off, it's a specific flavour by Rancher or Canonical of moving parts ( e.g. microk8s uses dqlite for storage instead of etcd). So you might stumble on specific to the platform edge cases, and you still have a big part of the k8s complexity to deal with ( in the case of microk8s it tries to abstract some of the complexity with wrappers, but when they fail, you're screwed).
> API will keep evolving but basic objects like deployments and statefulsets that you need for paas like experience are quite stable
Stable now, but Ingress was in beta for quite some time, and the when the beta API gets deprecated, you have to adapt.
You say nope but then you prove that Nomad relies on Consul as I had mentioned, meaning, you need a Consul instance behind the scenes. If the Nomad setup recommendation is anything like the Vault recommendation, the recommendation will be to run two clusters, one for services discovery, and one for K/V storage for Nomad. I've setup an enterprise Vault instance, and their enterprise architect recommended separate instances. Which is totally fine, but it does mean two Consul clusters + a Nomad cluster.
From my experience with Consul and Vault, it is not as simple as you say it is. A team of 3 Engineers took 3 months to set up an enterprise grade cluster. There was a little bureaucracy at the time, so I can't really blame it on that. If I recall correctly, the integrated Raft-based clustering was being worked on and we were made aware of it because there was some pushback from management on separate 2 Consul clusters for K/V and SD, but I never got to see it to fruition and utilise it, so for us it was Consul. Other backends were discouraged at the enterprise level, they never really made it clear if they'd fully support us if we went with a different backend, leading me to believe that at best, they'd prefer you use Consul over something else. I mean why wouldn't they? They'd rather you pay them extra for a Consul cluster.
If Nomad is anything like my experience with Vault/Consul, then unfortunately you are still stuck with the setup I mention earlier, that is 1 Vault cluster, 1 Nomad cluster, and 3 Consul clusters (1 K/V for Vault, 1 K/V for Nomad, and 1 for service discovery). For sure having separate individual tools that does 1 thing may have their advantages, but I fail to see how this is that "much more simpler" than Kubernetes. At best this is marginally simpler.
Vault has integrated storage since multiple versions, and Nomad can very well use a single Consul cluster for both SD and K/V. ( And honestly i can't recall having two Consul clusters being recommended, and the proposal we had from Hashicorp included a Consul Enterprise cluster for Vault as part of Vault's pricing.)
So, you need three clusters - Vault, Nomad and Consul for SD and KV for Nomad. Two of which, Consul and Nomad, can run on the same machines ( it'd be suboptimal security-wise to have Vault there too).
That's normal, since Nomad is only about deployment, where k8s is about full cluster management.
> Kubernetes aims to provide all the features needed to run Docker-based applications including cluster management, scheduling, service discovery, monitoring, secrets management and more.
> Nomad only aims to focus on cluster management and scheduling and is designed with the Unix philosophy of having a small scope while composing with tools like Consul for service discovery/service mesh and Vault for secret management.
I'm sure there's still a gap to be bridged there between that and a PaaS which you literally just add as a git remote. But I don't think it's huge.
Habing been on both sides of the isle, in my opinion, K8s has great ux for consumers, but for is a nightmare for ops teams who maintain it. For a self-hosted version anyway.
Now, all that said, Canonical certainly advertises microk8s as being production-ready, production-grade, and suitable for use in production environments, for example in [1]. It definitely seems like it's meant to be far more serious than, say, minikube, which explicitly is just for local development.
Can you speak to specific limitations with microk8s, or point to resources which go into more depth on this?
Yes its container orchestration. We're built on top of kubernetes.
Our idea of the enterprise version is just deploy your own kubernetes cluster, then install our helm chart or whatever and it bootstraps and sets up the platform on your cluster.
I absolutely want to be able to write small personal projects and have them deploy on my cheap server in a sensible way by simply pushing to my git repository.
At the moment I'm using caprover to do this, and it's so much better than doing it myself, but I think there's plenty of space to make this experience better.
But as others have pointed out, to call it a self-hostable Heroku & Netlify is indeed missing the point. It’s a bit of an oxymoron right?
The benefit of those services is in their CDN network, and the fact that they provide the platform and you don’t have to maintain your own server. Things I do not get with maintaining my own VPS.
Doesn’t mean I’m still not interested in this project, it looks pretty nice! But I would approach the marketing differently.
IMO you'd pay for Heroku because of the ability to have one vendor deal with your full stack, including Postgres, and having the ability to roll back / scale up with relative ease. You pay for that ease and support. (Everyone on the support team was a dev too)
For some teams it makes less sense than others. You can also probably find combinations of vendors to deal with most of the above.
Source: Was a customer architect there.
Will it be possible to use Golang? Or use the Dockerfile from the repository to build the container and run it? This way you can even compete with Portainer.
btw. I'm curious why their installer is 73MB in size: https://get.coollabs.io/coolify-installer
Assuming I'm running that on my NAS, I understand setting up port forwarding through my router; but what about domains and HTTPs?
That's essentially what I'm doing for my own website, as one example. Granted, that's on a VPS instead of a home NAS, but the idea's the same; neither a domain registrar nor an ACME provider necessarily care.
The massive popularity of things like cPanel shows that there is most definitely a market for people who want some assistance setting things up, but don't want to go down a fully managed route.
Thanks!
Private (ie. accessible to employees or contractors only) deployments of Coolify shouldn't trigger the requirement. I've seen some difference of opinion as to whether giving access to a supplier triggers the requirement, giving access to a client does generally require you to provide source to them.
Code merely deployed by Coolify should not be affected in any case.
So if you have a private network, but give a client/customer access to it, and they ask for the source, you will have the obligation to give it to them.
(edit: typo)
https://pbs.twimg.com/media/ExRnXpbWYAkOO-x?format=jpg&name=...
https://pbs.twimg.com/media/ExRnXpdXIAAmP_8?format=jpg&name=...
https://pbs.twimg.com/media/ExRnXpdXEAQHu5B?format=jpg&name=...
Though I'm sure many 3rd party ones exist for Dokku.