This looks cool as a learning experience and all, but...
Self-hosting all your own stuff has to be the worst thing you can do as a new startup. You need to be focused on impactful work, not dealing with critical security updates to your Mattermost install. And definitely not worrying about figuring out how to properly HA databases and your self-hosted S3.
Labor cost to maintain is far more than the service cost for a small startup, most of the time you can get by on the free tiers for quite some time. Founders need to focus time/energy on what adds value, not updating services.
This idea that you need a ton of money to maintain self hosted servers is not true. You may have to update to a new OS or software major version at some point in time, but in the meantime things can pretty much auto-security-update for the distribution provided version until you gain traction with your startup.
> Labor cost to maintain is far more than the service cost for a small startup
This is the common wisdom which is correct in many cases, but not all.
If you have a decent systems/infrastructure person in your startup, the incremental cost of running a lot of these kinds of services is effectively zero. If you are bootstrapped, this can be financially significant.
Most startups do not need a decent infra person on day one, and no one would recommend hiring one for this purpose. But if someone on the team has the skills, it can make a ton of sense to leverage them.
I think it's good to help people obtain these skills which add value to (or at least save money for) their project, and correspondingly enable more people to start up in the first place.
Very real example coming up. I was one of 3 engineers with a "day one" start-up just over 2 years ago. I was dedicated to infrastructure, and have experience with hardware > OS > config management > orchestration > CICD > monitoring. I've deployed hashicorp stack and Kubernetes. I've managed in-house services like gitlab, database clusters, metrics/logs solutions, Jenkins etc. I've also managed firewalls and I'm rusty on switches etc but I've done that too.
At the start-up we ran nothing ourselves, except the gitlab runners. (Well, except for the first month where a bunch of laptops are used to prototype the app). I spent my first year writing terraform and helping design the product for low-cost scalability. So much of what we did for that whole year was in the free tier that our runway money could cover team building. 1 year in, I could deploy our entire stack from scratch into a new region in under an hour. VPC, subnets, security rules, IAM, queues, workers, Kubernetes cluster with autoscaling nodes, databases, DNS, CDN, monitoring, metrics, email (AWS SES)...
That type of fast deployability to a new region shouldn't be a late consideration after you've spent a year tinkering with in-house stuff. In fact, getting to another round of funding requires that you have that stuff ironed out. Can you support FedRAMP requirements? Yes, because that was a day one consideration. How about GDPR? Ditto. Do you have separate dev, test and prod environments which are identical apart from scale/cost? Yep!
Right now I'm working with a company that built everything in-house, from the perspective of "one single data center". It's a disaster. If you're not thinking at scale from the start, your probably not doing basic stuff like proper naming conventions, non-clashing CIDR. They're using all the right tools, but badly. Their terraform is a mess because it was obviously introduced it gradually on top of existing "snowflake" infrastructure. Their next data center was pretty much copy-paste followed by a thousand changes. And their code coverage is low - lots of stuff still manually created. (This is a known company with a decent product and lots of customers!). All of the people hired to try to make it scalable after the fact are saying things like "...it would be easier to just throw it all out and start over".
The problem with doing things badly because you think you can improve it later is that suddenly you've got customers on this thing, and you can't start over.
So what should you focus on? What OSI layer is a good starting point? It depends on your skills right?
I agree you should use as much established products as possible but you build your stack and create that unique differentiation on the market by also learning technology as you go.
It all depends on where you land with your idea to the market. If you are selling knit figures online - you are right that you should not set this up but if you rely on technology advancements you should “own your technology” knowledge as much as possible because you will need it to solve problems along the way.
Too often I see business leaders come in and say I don’t know technology - let’s buy it all from MS or Amazon. This is not the way to go for your whole business. It’s like saying can you run my business for me. Your business is only as good as your best knowledge workers.
Another aspect is regulations, your data might not be allowed to leave the premise of your nation and these self hosted solutions at least with proper patching procedures offer this guarantee.
Managed services in all its glory to hand over the problem to someone else also hands over key learnings and if you have a complex enough environment you will need to deal with it at some point and for small businesses/startups the cost of outsourcing might be too high to begin with.
You should be focused on building a market for your product. What gives you a competitive advantage? I argue that self-hosting Mattermost doesn't help accomplish that vs. paying Slack.
You are right that there is a time and place to start taking more ownership of those basic pieces. Doing it before you even have something to sell is not the right time.
You have to survive as a small company before you can be a mid-size company.
Revenue via leverage (managed services) once you have traction (people will pay you for what you're offering). Outsource everything except your core competencies, and optimize as throughput allows for either growth or cost reductions (judgement calls by competent practitioners close to the machinery). Broad strokes, as a startup you're attempting to grow revenue as fast as you can through value delivery to customers; you should be ruthlessly cutting anything you're spending your time on that doesn't contribute to that goal.
For sure, keep an eye towards your regulatory requirements, lock in risk (both vendor and technology), etc. That's not a call to self host everything, just what you absolutely can't grow or survive without (and in many cases, a product or service may come along down the road that allows you to refactor out of homegrown solutions). Organizational contributors who understand technology making these decisions de-risks suboptimal decisions being made.
(observations from experience at a hyper growth startup)
Pretty much every element in your stack should be the result of a build or buy decision initially.
If something doesn't directly contribute to your competitive edge then run with a managed service / something off the shelf until you know enough about the domain to be able to make an informed decision about the trade offs.
Too often I've seen early teams that have spent months building out (and maintaining!) an area of the stack that could have been had off the shelf - freeing up engineering time and allowing focus on the areas that allow for true differentiation in the product.
Obviously off the shelf isn't free in financial or engineering time (though you can sure get a lot of free credits / on free tiers nowadays), but if your main product is doing something fancy on top of the output of a fairly generic process, do yourself a favour and find a company that has a product specialising in that process, don't build it from scratch until you have your product market fit.
Hey, autor here) I agree with you: when you only start, you should pay 100% attention to custdev and use as much ready to go cloud services as you can. Thats why I included "Free for Dev" link.
However, I think that when you started development, especially with a team up to 10 people, or if you work with private information - you should hosting some of services and databases yourself. In my experience, at least private hosting of gitlab with CI&CD, databases and sometime monitoring system is a normal case.
Also, startup is not always start from zero, sometime it's just a new project in a tech company. So this pack can help to start just a usual new project)
And finally, this pack can be useful for developers who want to test new services locally. And I hope that it will be helpful for someone :)
Have you considered turning this into a SaaS of your own? As in: here is the code if you want to self-Host, but if you want I can manage it for you for X/month?
I wish to but it's almost impossible: all services in this pack has a paas version that I never win, and a lot of people do the same things as devops engineers today, as I do as contractor and sometimes freelancer, for example))
But none of them have a system where all of these services are put together.
What I would really like to see is an offering where anyone can just pick a suite of open source tools, all managed with the same SSO, and pay a flat rate for it. Something like https://restack.io, but not where I´d have to manage.
Yeah, I understand you) I'm not sure that I'll do it but thank you for idea. For now there are few alternatives like helm charts for k8s or juju from ubuntu, or providers like heroku, but nothing that I know which have level of heroku in open source - and I understand why xD I saw coolify.io on HN yesterday - mayby they will do...
I'm aware of cloudron, but cloudron is a self-hosted solution.
I am talking about a fully-managed provider of services. Something for those that want to have a set of services for their startup but do not want to worry about keeping them up and running.
The galaxy-brain plan is to start a SaaS for each thing, starting from the one with the fewest service dependencies to the one with the most, migrating earlier ones onto any services provided by later ones as possible/sensible, so by the end you are consuming a bunch of SaaS—but you own all of them.
If you need HA databases and something like s3. If you can just run docker compose and have it all running on a $1/mo vps, I am happy to pocket my extra profit thank you very much.
If anyone hacking away or at the very earliest stages of a startup is reading this - run away. I'm sure this was a great learning process for the creator. However, as a new startup you should be aiming to take as many shortcuts as possible. Use every hosted or managed service that makes sense for you. Use anything that saves you time. Your job as the "technologist" is to deliver value (in the form of software) in the shortest time possible. Every hour you spend on distractions such as self-hosting is a self-own.
> Every hour you spend on distractions such as self-hosting is a self-own.
I think the idea of this guide is to reduce the amount of time spent setting up a self-host to a minimum, though I agree it's usually not cost-effective.
Not disagreeing but this assumes Silicon Valley budgets for startups. The story may be different if you're not funded yet and in discovery mode or if you're bootstrapping.
Does it? Just taking one example "managed" stack: AWS Amplify + Lambda + S3 + DynamoDB. You can get pretty far using the free tier for the first two and using the second two sparingly. If you're spending any more than $20 per month on that stack, then you probably have a significant number of users and traction already.
I had a similar idea (but did not realize it as I was focusing on something else at the time), and thought it would be great if a company could create a template for everything a startup needs, so thanks for making a start.
In practice, there are differences in preferences and jurisdiction that require such a solution to be quite flexible (e.g. auto-registering a domain, doing accounting, filing taxes in different countries, running payroll), but some things everyone needs (landing page, website with intranet access to secure shared collab: GitLab, CryptPad, Email etc). It is a bad idea to self-host something that isn't mature; but if there was a relatively bullet proof solution, many startups could save cost and increase their run rate this way.
I live in the United States, and it's kind of shocking to see such privileged responses to what is ultimately a useful starting stack.
Imagine a young engineer in Bogota, or Ukraine if you want to get topical. They may barely have the hardware to accomplish anything compute wise... and your answer is "Use AWS!" Access to the cloud is privilege to the highest degree. You used to need academic credentials to use someone else's computer.
I get the idea of not wasting time, but as somebody who has used self-hosting as nothing but a waste of time that teaches me something, I can't believe so few see the value in a self-hosted starter pack.
Great architecture, OP. I challenge you to simplify the process even more... A lot of manual steps here that should be abstracted with intuitive global configuration, IMO.
OP also lives in the United States, so I’m not entirely sure where this idea that it was targeted at startups in the developing world comes from - its certainly not listed on the page.
Also Ukraine is very advanced in terms of dev and IT, and developers and entrepreneurs still need to maximise their productivity, so I’m not sure your idea that the technology stacks of Ukrainian startups should look different because their time is less valuable is valid.
I never implied that it was targeting the developing world, and I'm not sure why the author needs to "list it on the page" in order for it to be helpful to the developing world.
Not everyone has constant access to a computer they own, a reliable internet connection, or the luxury of a "cloud" to use for research and development.
Good for Ukraine, I guarantee this is useful to at least a handful of folks in that country. Those who do not have access to the luxuries those of us in the developed world take for granted.
I should say, that I'm from Belarus - yes, the country near Russia and Ukraine whos territory russia used to attack Ukraine. Small remark: we - belarusians - fight against Putin and Lukashenko at leaset since 2020 and asked world to help us, but we lost and today we have that we have. Personally I emigrated with my girl...
So, in Ukrain, Belarus and Russia we have a good technical level and access to all clouds like aws. Hovewer, Russia and Belarus doesn't have currently and I rather support it. So my pack could help teams from Russia, even when I don't support the action of Russia and hates them. But this is a good example why sometimes you want to selfhost some services xD
TLDR: I personally think that free paas is better than selfhosted in multiple ways, but sometime its great to have some alternaty and I hope that my pack give it for someone :)
I think the early responses are a bit disheartening. There is a lot of value in "ancillary services in a box" for any project that has no choice but to self-host. This may not include a typical commercial startup, but it includes a lot of projects. It's especially big in defense. But, of course, the DoD already has its own version of this: https://repo1.dso.mil/platform-one/big-bang, including a managed version run by part of the Air Force if you don't need to roll your own but still have security requirements not met by commercial cloud providers.
Defacto docker swarm lose race with k8s and one time almost die, and it has much less features than k8s (or even hashicorp nomad)...
But in other hand, personally I don't like k8s because of it complexity, and I really don't like when it used for running only few microservices on 3 hosts xD So my opinion: if you don't have resources to learn k8s and you don't run 100 apps with autoscaling - you can adopt docker swarm. Otherwise, you have to buy k8s from you cloud provider and learn it =\ In case of selfhosted k8s I recommend deckhouse.io or rancher.com
Even more important thing, than chose your docker orchestrator, - this is chose of distributed file system that you need for running stateful apps: I strongly recommend you buy efs or ceph from cloud provider, otherwise you should test next products yourself in your setup: https://vitobotta.com/2019/08/06/kubernetes-storage-openebs-...
Overall, I think this idea is a great one, though the stack still needs some development/improvement. To second hatware's challenge, if you can come up with a (mostly) turn-key solution, one that would be as cheap & time-thrifty as hosting on cloud service starter tiers, you could own this segment and lure the new startup demo away from the cloud providers.
Many people seem to forget that there are no free lunches... anyone who has ever wrestled with the learning curve of a necessarily proprietary no-code solution knows that you don't usually save time or money by outsourcing your platform, and that by outsourcing, you can easily become indentured to a restrictive black-box environment you don't control.
If you're not dealing with critical security updates to your Mattermost install, you will be dealing with something equally time-consuming and fundamental, like managing CloudFormation templates or trying to get divs to nest correctly in a WebFlow one-pager.
If your startup doesn't have the in-house knowledge/intelligence to be able to run a stack like the OP's, you might ask yourself how you plan to create a successful software company without any in-house software competency.
> Warning: This setup doesn't provide high level of security or any high availability. You have to hire some skilled devops engineer (like me)) for close this gap after getting first round or sales.
And this is exactly why managed SaaS is popular. Pulling a repo of a popular open source project and deploying it to your server seems trivial, and you wonder why there are idiots out there paying through their nose for subscriptions. Then you realize your service has to be up 100% of the time, has to scale to more than a handful of users, you have to perform regular backups (and ensure they actually work), all user access has to be audited, you have to offer IT support to all your employees. Very soon your full time job at the company isn't building products for customers but managing an internal chat server. And then the couple hundred bucks a month other companies pay to Slack and Google start to make sense.
Second this, having the peace of mind that my task manager, among other things, are backed up and someone else's problem is priceless. I think having a list of saas's that are startup friendly would be nice. For example, free for up to 3 members. That way when the start up wins the saas wins as well. Anyone know if a list like that exists?
And if you have a person with those skills, they're still better off focusing all of their effort on building a repeatable, scalable stack that requires the least possible management.
This setup doesn't provide high level of security or any high availability.
After actually making your product these are probably the two most important factors for most SaaS startups. If you screw up availability you can't get customers - your site will fall over every time you push any marketing. If you screw up security you can't keep customers - you'll fail any kind of due diligence or you'll burn your reputation. Using third party services that do the hard parts for you is very, very sensible.
There's nothing wrong with a boilerplate starter kit if you understand the hard parts and just want to go faster. There's nothing wrong with using starter kit for a prototype. But if you actually want to build your app, and you think you need this, you should lean towards using something that manages this sort of thing for you instead.
Great job! I think this list is nice in that it’s both a list of tools (I found some interesting ones I had no idea about) but also a dev stack that I can deploy.
I don’t identify with a lot of commenters as my company does a lot of experimental work so I’d rather not pay the cloud tax, both in money and in lock-in.
I launched a product in the European space that has since fizzled but people loved the lack of cookie banners and the fact that their data was in a silo. I think your stack helps in this regard.
Off topic but I wonder how many "self hosting" efforts have been halted in the last 40 years when the unsuspecting developer tried to use API to create a socket and was met with all kinds of weird AF_ PF_ terminology and possibly some pointless type casts.
Why some think that today tech is good tech and "self-hosting" it is a way to be free? Web tech have some reasonably good foundations but that's all, the rest is a colorful, animated bloatload mess. Modern web is needed not by us Citizens but by IT giants to rule the tech and indirectly the society, since information and communication are core elements of a society to exists.
Do we need Webmails? NO. We do need mails though, locally indexed with GMail-like powerful search (and we have them, see notmuch/mu maildir indexers based on solr), we need a modern MUA, that's for sure but why tie it to a modern WebVM a monster so big that only few giants can keep one up and no one can really know it even if FLOSS just for mere codebase size? We need mails on many devices, but that does not demand a central point.
We need notes, documents etc but definitively not a copy of Google Drive suite.
What we need are classic desktops a bit updated for modern users. Those really classic ones like Xerox Office System or more modern LispM and Plan 9 are far more advanced in tech terms than actual OSes and web-stuff. We miss the hw layer and they need a bit of changes for modern world but we can study them and we can run in that direction, a so powerful direction that no IT giants can compete.
Did you remember Popcorn Time? Why we need Youtube or Peertube when we can have a distributed app that's far superior by nature? Do you remember usenet? Yes, it base is old and crappy but it's a decentralized free place we desperately need and even if their base are crappy even today it's popular again for mostly illegal stuff (see Sonarr, Radarr, Lidarr etc) to a point that for some is superior to bittorrent. I can keep going for long. It's sure that creating for instance Retroshare or Jami seems not much useful because until enough users adopt it there is essentially nothing to share, no one to talk to etc, but that's the way in all cases.
We can't build a self-hosted better-them-{Zoom,Meet,Teams}, we can build a far superior local app connected to a decentralized network though, and while giants can easily fight back or buy with big money something web-based they can't really do nothing with such application.
It's not easy: modern GUI libraries are almost abandonware, some are active but definitively derailed, desktops is in a deeply sorry state etc BUT we still have some good environments with a good language portable enough, there it common lisp, go, python, ... with their ecosystem. They all have issues BUT issues that can be compensated by a new FLOSS community to a point of re-creating the old classic: the desktop have an OS, a single application, fully integrated, with a relevant programming language where anything is at users hands. For those who never used classic system or modern Emacs it's really hard to understand why that's extremely superior but just try to invest seriously in Emacs and you'll discover why that "alien and strange" way it's the way to go and the modern way is actually a crappy absurd idea.
Long story short: we can't compete with giants creating personal web ecosystems, we can compete on desktops, and that's why all giants do their best, and fail to completely succeed, pushing desktops to the oblivion. No one can win a stronger, resourceful enemy at it's own game, to win a different strategy, not a copycat, is mandatory.
I have to respectfully disagree with many in the comments here. Most people seem to feel that any new project or startup needs to focus on revenue maximization, where, like most things in IT, I think the right answer is "it depends".
If it's a learning project, or a part-time or hobby project, or if the people starting don't have a lot of money, then using a lot of self-hosted stuff will be an attractive alternative. There are lots of cases where with an ample amount of money or cash flow I'd agree with paying for SaaS or whatnot, but I don't think it's a good universal answer.
55 comments
[ 3.2 ms ] story [ 129 ms ] threadSelf-hosting all your own stuff has to be the worst thing you can do as a new startup. You need to be focused on impactful work, not dealing with critical security updates to your Mattermost install. And definitely not worrying about figuring out how to properly HA databases and your self-hosted S3.
Just use managed services.
You can save your startup thousands of dollars per month on services, with very little effort -- if you know how.
A larger group of people would struggle with the effort to do so competently.
Energy spent bringing more people into the first group is generally a positive thing.
This is the common wisdom which is correct in many cases, but not all.
If you have a decent systems/infrastructure person in your startup, the incremental cost of running a lot of these kinds of services is effectively zero. If you are bootstrapped, this can be financially significant.
Most startups do not need a decent infra person on day one, and no one would recommend hiring one for this purpose. But if someone on the team has the skills, it can make a ton of sense to leverage them.
I think it's good to help people obtain these skills which add value to (or at least save money for) their project, and correspondingly enable more people to start up in the first place.
At the start-up we ran nothing ourselves, except the gitlab runners. (Well, except for the first month where a bunch of laptops are used to prototype the app). I spent my first year writing terraform and helping design the product for low-cost scalability. So much of what we did for that whole year was in the free tier that our runway money could cover team building. 1 year in, I could deploy our entire stack from scratch into a new region in under an hour. VPC, subnets, security rules, IAM, queues, workers, Kubernetes cluster with autoscaling nodes, databases, DNS, CDN, monitoring, metrics, email (AWS SES)...
That type of fast deployability to a new region shouldn't be a late consideration after you've spent a year tinkering with in-house stuff. In fact, getting to another round of funding requires that you have that stuff ironed out. Can you support FedRAMP requirements? Yes, because that was a day one consideration. How about GDPR? Ditto. Do you have separate dev, test and prod environments which are identical apart from scale/cost? Yep!
Right now I'm working with a company that built everything in-house, from the perspective of "one single data center". It's a disaster. If you're not thinking at scale from the start, your probably not doing basic stuff like proper naming conventions, non-clashing CIDR. They're using all the right tools, but badly. Their terraform is a mess because it was obviously introduced it gradually on top of existing "snowflake" infrastructure. Their next data center was pretty much copy-paste followed by a thousand changes. And their code coverage is low - lots of stuff still manually created. (This is a known company with a decent product and lots of customers!). All of the people hired to try to make it scalable after the fact are saying things like "...it would be easier to just throw it all out and start over".
The problem with doing things badly because you think you can improve it later is that suddenly you've got customers on this thing, and you can't start over.
I agree you should use as much established products as possible but you build your stack and create that unique differentiation on the market by also learning technology as you go.
It all depends on where you land with your idea to the market. If you are selling knit figures online - you are right that you should not set this up but if you rely on technology advancements you should “own your technology” knowledge as much as possible because you will need it to solve problems along the way.
Too often I see business leaders come in and say I don’t know technology - let’s buy it all from MS or Amazon. This is not the way to go for your whole business. It’s like saying can you run my business for me. Your business is only as good as your best knowledge workers.
Another aspect is regulations, your data might not be allowed to leave the premise of your nation and these self hosted solutions at least with proper patching procedures offer this guarantee.
Managed services in all its glory to hand over the problem to someone else also hands over key learnings and if you have a complex enough environment you will need to deal with it at some point and for small businesses/startups the cost of outsourcing might be too high to begin with.
You are right that there is a time and place to start taking more ownership of those basic pieces. Doing it before you even have something to sell is not the right time.
You have to survive as a small company before you can be a mid-size company.
Revenue via leverage (managed services) once you have traction (people will pay you for what you're offering). Outsource everything except your core competencies, and optimize as throughput allows for either growth or cost reductions (judgement calls by competent practitioners close to the machinery). Broad strokes, as a startup you're attempting to grow revenue as fast as you can through value delivery to customers; you should be ruthlessly cutting anything you're spending your time on that doesn't contribute to that goal.
For sure, keep an eye towards your regulatory requirements, lock in risk (both vendor and technology), etc. That's not a call to self host everything, just what you absolutely can't grow or survive without (and in many cases, a product or service may come along down the road that allows you to refactor out of homegrown solutions). Organizational contributors who understand technology making these decisions de-risks suboptimal decisions being made.
(observations from experience at a hyper growth startup)
If something doesn't directly contribute to your competitive edge then run with a managed service / something off the shelf until you know enough about the domain to be able to make an informed decision about the trade offs.
Too often I've seen early teams that have spent months building out (and maintaining!) an area of the stack that could have been had off the shelf - freeing up engineering time and allowing focus on the areas that allow for true differentiation in the product.
Obviously off the shelf isn't free in financial or engineering time (though you can sure get a lot of free credits / on free tiers nowadays), but if your main product is doing something fancy on top of the output of a fairly generic process, do yourself a favour and find a company that has a product specialising in that process, don't build it from scratch until you have your product market fit.
What I would really like to see is an offering where anyone can just pick a suite of open source tools, all managed with the same SSO, and pay a flat rate for it. Something like https://restack.io, but not where I´d have to manage.
I am talking about a fully-managed provider of services. Something for those that want to have a set of services for their startup but do not want to worry about keeping them up and running.
We're running or app on linode VPSs.
I think the idea of this guide is to reduce the amount of time spent setting up a self-host to a minimum, though I agree it's usually not cost-effective.
In practice, there are differences in preferences and jurisdiction that require such a solution to be quite flexible (e.g. auto-registering a domain, doing accounting, filing taxes in different countries, running payroll), but some things everyone needs (landing page, website with intranet access to secure shared collab: GitLab, CryptPad, Email etc). It is a bad idea to self-host something that isn't mature; but if there was a relatively bullet proof solution, many startups could save cost and increase their run rate this way.
Imagine a young engineer in Bogota, or Ukraine if you want to get topical. They may barely have the hardware to accomplish anything compute wise... and your answer is "Use AWS!" Access to the cloud is privilege to the highest degree. You used to need academic credentials to use someone else's computer.
I get the idea of not wasting time, but as somebody who has used self-hosting as nothing but a waste of time that teaches me something, I can't believe so few see the value in a self-hosted starter pack.
Great architecture, OP. I challenge you to simplify the process even more... A lot of manual steps here that should be abstracted with intuitive global configuration, IMO.
Also Ukraine is very advanced in terms of dev and IT, and developers and entrepreneurs still need to maximise their productivity, so I’m not sure your idea that the technology stacks of Ukrainian startups should look different because their time is less valuable is valid.
Not everyone has constant access to a computer they own, a reliable internet connection, or the luxury of a "cloud" to use for research and development.
Good for Ukraine, I guarantee this is useful to at least a handful of folks in that country. Those who do not have access to the luxuries those of us in the developed world take for granted.
TLDR: I personally think that free paas is better than selfhosted in multiple ways, but sometime its great to have some alternaty and I hope that my pack give it for someone :)
Even more important thing, than chose your docker orchestrator, - this is chose of distributed file system that you need for running stateful apps: I strongly recommend you buy efs or ceph from cloud provider, otherwise you should test next products yourself in your setup: https://vitobotta.com/2019/08/06/kubernetes-storage-openebs-...
Many people seem to forget that there are no free lunches... anyone who has ever wrestled with the learning curve of a necessarily proprietary no-code solution knows that you don't usually save time or money by outsourcing your platform, and that by outsourcing, you can easily become indentured to a restrictive black-box environment you don't control.
If you're not dealing with critical security updates to your Mattermost install, you will be dealing with something equally time-consuming and fundamental, like managing CloudFormation templates or trying to get divs to nest correctly in a WebFlow one-pager.
If your startup doesn't have the in-house knowledge/intelligence to be able to run a stack like the OP's, you might ask yourself how you plan to create a successful software company without any in-house software competency.
> Warning: This setup doesn't provide high level of security or any high availability. You have to hire some skilled devops engineer (like me)) for close this gap after getting first round or sales.
And this is exactly why managed SaaS is popular. Pulling a repo of a popular open source project and deploying it to your server seems trivial, and you wonder why there are idiots out there paying through their nose for subscriptions. Then you realize your service has to be up 100% of the time, has to scale to more than a handful of users, you have to perform regular backups (and ensure they actually work), all user access has to be audited, you have to offer IT support to all your employees. Very soon your full time job at the company isn't building products for customers but managing an internal chat server. And then the couple hundred bucks a month other companies pay to Slack and Google start to make sense.
After actually making your product these are probably the two most important factors for most SaaS startups. If you screw up availability you can't get customers - your site will fall over every time you push any marketing. If you screw up security you can't keep customers - you'll fail any kind of due diligence or you'll burn your reputation. Using third party services that do the hard parts for you is very, very sensible.
There's nothing wrong with a boilerplate starter kit if you understand the hard parts and just want to go faster. There's nothing wrong with using starter kit for a prototype. But if you actually want to build your app, and you think you need this, you should lean towards using something that manages this sort of thing for you instead.
I don’t identify with a lot of commenters as my company does a lot of experimental work so I’d rather not pay the cloud tax, both in money and in lock-in.
I launched a product in the European space that has since fizzled but people loved the lack of cookie banners and the fact that their data was in a silo. I think your stack helps in this regard.
Awesome!
Why some think that today tech is good tech and "self-hosting" it is a way to be free? Web tech have some reasonably good foundations but that's all, the rest is a colorful, animated bloatload mess. Modern web is needed not by us Citizens but by IT giants to rule the tech and indirectly the society, since information and communication are core elements of a society to exists.
Do we need Webmails? NO. We do need mails though, locally indexed with GMail-like powerful search (and we have them, see notmuch/mu maildir indexers based on solr), we need a modern MUA, that's for sure but why tie it to a modern WebVM a monster so big that only few giants can keep one up and no one can really know it even if FLOSS just for mere codebase size? We need mails on many devices, but that does not demand a central point.
We need notes, documents etc but definitively not a copy of Google Drive suite.
What we need are classic desktops a bit updated for modern users. Those really classic ones like Xerox Office System or more modern LispM and Plan 9 are far more advanced in tech terms than actual OSes and web-stuff. We miss the hw layer and they need a bit of changes for modern world but we can study them and we can run in that direction, a so powerful direction that no IT giants can compete.
Did you remember Popcorn Time? Why we need Youtube or Peertube when we can have a distributed app that's far superior by nature? Do you remember usenet? Yes, it base is old and crappy but it's a decentralized free place we desperately need and even if their base are crappy even today it's popular again for mostly illegal stuff (see Sonarr, Radarr, Lidarr etc) to a point that for some is superior to bittorrent. I can keep going for long. It's sure that creating for instance Retroshare or Jami seems not much useful because until enough users adopt it there is essentially nothing to share, no one to talk to etc, but that's the way in all cases.
We can't build a self-hosted better-them-{Zoom,Meet,Teams}, we can build a far superior local app connected to a decentralized network though, and while giants can easily fight back or buy with big money something web-based they can't really do nothing with such application.
It's not easy: modern GUI libraries are almost abandonware, some are active but definitively derailed, desktops is in a deeply sorry state etc BUT we still have some good environments with a good language portable enough, there it common lisp, go, python, ... with their ecosystem. They all have issues BUT issues that can be compensated by a new FLOSS community to a point of re-creating the old classic: the desktop have an OS, a single application, fully integrated, with a relevant programming language where anything is at users hands. For those who never used classic system or modern Emacs it's really hard to understand why that's extremely superior but just try to invest seriously in Emacs and you'll discover why that "alien and strange" way it's the way to go and the modern way is actually a crappy absurd idea.
Long story short: we can't compete with giants creating personal web ecosystems, we can compete on desktops, and that's why all giants do their best, and fail to completely succeed, pushing desktops to the oblivion. No one can win a stronger, resourceful enemy at it's own game, to win a different strategy, not a copycat, is mandatory.
If it's a learning project, or a part-time or hobby project, or if the people starting don't have a lot of money, then using a lot of self-hosted stuff will be an attractive alternative. There are lots of cases where with an ample amount of money or cash flow I'd agree with paying for SaaS or whatnot, but I don't think it's a good universal answer.