36
181 Comments

How do you host your projects ?

To get your projects off the ground, you have to make them available to the public. How do you do that today ?

Do you run everything on AWS ? Maybe Heroku ?

What if you had everything you need planned out to go from your first release to scaling up ?

What if you could benefit from the best features from the industry so that you could upgrade your application safely and quickly ?

What if it cost you less along the way ?

What if it gave you more flexibility than any other service out there because you can control and expand exactly what you use ?

What if you could be alerted directly in case of an issue, by doing nothing more than just deploying your service ?

Would you be interested by this ?

I am an infrastructure engineer, and I want to help Indiehackers go from zero to deploy at the lower cost possible. I want to create the bases and building blocks that you can use so that you never have to worry about infrastructure anymore.

I also want to help you understand what is going on under the hood if you choose to, so that you can expand and help others make indie projects even better and even more reliable.

If that's something that you would be interested in, please let me know ! I'll be glad to help you any way I can !

Edit: Thanks to all the people who commented and took the time to tell me more about their infrastructure. Love this community, and I hope to be able to help you all !

  1. 14

    I'm using DigitalOcean

    1. 2

      Yeah, me too. DO with docker containers for anything that might need to scale at some stage.

    2. 1

      Thanks for the answer ! Do you have a plan for your infrastructure, or are you doing it when you need it ?

      1. 3

        I just buy droplets (VPS) when I need :) But of course I knew more or less what I need.

        DO is not that cheap, but it's quite easy to work with and it has great community and support. Like, they have tons of tech articles, I constantly come across some of them

  2. 10

    Been using Render.com for my latest elixir project (https://niceice.io) - super simple deployment, great UI and features and fully supports Elixir/Phoenix apps.

    I need a postgres instance etc and didn't want to start on AWS - I launched from local development in about 30 minutes.

    1. 5

      Yeah, Render really is like Heroku used to be. It's more expensive than a VPS but very user friendly. And of course the fact that they make it possible to take advantage of the super-powers Erlang and Elixir allow is fantastic.

    2. 5

      Same here! for offdesign I just push it to github and then deploy with render

    3. 4

      Render seems to be quite amazing ! I'll take a closer look !

      Thanks for the answer !

    4. 1

      Using render.com and Elixir as well for a side project. It's pretty good, though I am having a bit of troubles with networking with docker images. Are you using a dockerized image or just deploying a plain phoenix app ? Mine is made by an API and a reactjs frontend app.

  3. 4

    My own background has a ton of devops and backend engineering experience in it, so the biggest risk is that I get sidetracked fiddling around. :P Since my own stuff isn't in need of complex infra or scaling (ahem, I have zero users), if I'm writing Terraform, it's for a client.

    Hugo+Netlify is a great combo that keeps me from thinking too hard.
    My current favorite backend for IH-style projects is Elixir+Phoenix, specifically so I can use Phoenix LiveView and mostly avoid writing JS. The Elixir deployment story has improved a lot over the years, but for work on CRUD webapps, I don't want to spend time dealing with packaging releases. Heroku is an okay offering; Gigalixir is pretty great and is my go-to for new projects.

    Dockerising Rails apps is reasonably easy, but it's still faster to just push them to Heroku, so that's a day 0 starting point.

    I'm interested in checking out how a Hasura-based app would be built out & deployed with minimal effort.

    1. 2

      the biggest risk is that I get sidetracked fiddling around

      You're a wise person to recognize this! I've gotten stuck in fractal rabbit holes a number of times.

      Out of curiosity what issues were you encountering with deployment before? I never did have many frustrations with it. Having everything bundled up into a single release and not needing a job queue service, Redis, etc, etc made it very straight forward. At least for me, it seemed much simpler than all the moving parts involved in deploying a Rails app.

      Was it something specific to Docker? I wrote a deployment guide last year, using Render (which was considerably easier than Heroku). For my own sites, I pretty much always deploy with Edeliver, as part of my Gitlab CI/CD process. I write config.prod.exs in a similar way as the other configs, keep it out of version control and Edeliver reads from it when building a release.

      It's pretty simple and any commit or merge to production that passes tests gets deployed.

      1. 2

        Forgive the somewhat non-specific answer, but I think most of the frustration was that, in years prior, there wasn't really a mature, established best practice for deployment, and so you'd end up having to rediscover the "right" way to do it over time. Rails+ecosystem does indeed have more moving parts, but since it was comparatively a lot more mature (and, I suppose, still is, though not to the same excessive degree), you could jump between different clients and employers and find that things were largely and predictably the same. That re-learning process isn't a big deal when you're trading time for money, but it's a real downer when you're doing fixed bid or self-owned work.

        Your guide looks excellent, by the way--Render looks intriguing. That might be a good replacement for Heroku in my Elixir toolkit, so much appreciated!

        1. 0

          You know what, I think you've hit the nail on the head. This is probably the key:

          you could jump between different clients and employers and find that things were largely and predictably the same

          I was always the one setting things up (for myself or for others), so I never felt that pain.

      2. 1

        Awesome to see such a specific answer ! Thanks a lot !

    2. 1

      the biggest risk is that I get sidetracked fiddling around

      Same here :P

    3. 1

      I've found digital ocean to be a great hosting solution. I spin up a Docker droplet for $5/mo, create a docker-compose, then automate (through ssh) the deployment process of releasing the phoenix app, uploading the image to Docker hub, then pulling the new image in the droplet. I also run a postgres container in the droplet (as I also have nearly 0 users).

    4. 1

      Thanks a lot for your answer !

      Fiddling around is indeed the great danger of this kind of work :P, you can easily get into so much details that you don't remember where you started.

      If you had the terraform and co to deploy your infrastructure but did not have to write or maintain it, would you use it ? Or if it was highly simplified ?

      Can you tell me more about the Elixir deployment process, or redirect me to a blog post that explains those improvements ?

      Pushing to Heroku sure is very simple ! That is indeed a place where you can start from until you get some regular, paying users and more !

      1. 1

        Re: Terraform, that's a solidly "it depends" sort of question! I've often found that picking up tools for infra-as-code is less about scaling infrastructure, and more about managing complexity, i.e. either adding stuff to the service layer (elasticsearch, complex networking logic, lambdas, etc.) and/or going the microservices route.

        Microservices feel like they're better served by k8s, which I'm not currently proficient with; I'd definitely be well-served by assistance there.

        Just describing immutable infrastructure as code feels well-served by either k8s or TF. Depending on a product's complexity and financial situation, the spend-no-money option is to write it internally, and the paid product to beat is Gruntwork. Offering something either in the middle could be appealing, but risky because you're squeezed from both sides. I'd be curious if there are potential differentiating factors.

        Re: Elixir deployments, I haven't spotted a "before and after" article lately, but I can demonstrate the difference :) It's not a stupendously popular ecosystem, but there's probably enough interest for a microISV to turn a profit (https://elixir-companies.com/en/companies for reference).

        2016: https://jimmy-beaudoin.com/posts/elixir/phoenix-deployment/
        Note that this includes a step to literally scp a tarball onto a running server instance, decompress it in place, and then kick off the server process directly from an interactive terminal. Woof.

        2019: https://github.com/joeyrosztoczy/golden-path
        No longer as much in the "hobbyist" category, will get an app deployed to production repeatably and in a Heroku-like (well, Gigalixir) configuration.

        current: https://hexdocs.pm/phoenix/deployment.html
        Has sub-guides for Gigalixer, Heroku, and generic Elixir releases, which are usually a good fit for Docker.

        1. 1

          So much to unpack there ! I'll have to get to studying all of these !

          I agree with your assessment of terraform, it is more about managing complexity. I'd say this complexity often happens as you're growing things up. It may not exactly be scaling though, but I'd say that is related.

          Before I was hired at my current job, they created the infrastructure using gruntwork. It works fine for "simple" stuff, but it wants to do too much, and that makes it a pain to manage on the long run. Rewriting everything from scratch took a long time (although it probably would also have using gruntwork), but now managing our infrastructure is quite simple, given all the interconnections that there are. Ever managed permissions and security groups through terraform ? Then you know it really becomes a pain when you start adding more and more services.

          K8s is not an easy beast to get into, even just at the user level. I do want to explore nomad, as it seems to me to be an excellent alternative and to be much easier to use and manage.

  4. 4

    Bitbucket (Free tier) + Digital ocean (starts @ $5/mo)

    1. 1

      Thanks for the answer !

      That's a great way to get started and keep growing ! On DigitalOcean, what do you use exactly ?

      1. 1

        Use the Docker droplet! Docker makes deployment a breeze. All you have to worry about is environment variables and everything else will just be there.

        1. 1

          Awesome ! Thanks for the info !

  5. 3

    DigitalOcean for hosting, Kubernetes for orchestration.

    1. 1

      Thanks for the answer ! I was not expecting to see a second person tell me that they are running on Kubernetes !

      Why did you choose to go this route ? And how are you managing it ?

      Also, do you have multiple projects, or a single, big one ? I guessing that one of those options is the case, or Kubernetes would seem so overkill :)

      1. 2

        I chose Kubernetes because my backend has quite a few services so manually configuring and scaling them would be a huge pain. Kubernetes makes that pretty easy to handle. I also considered Nomad for orchestration but decided on Kubernetes is "winning" and I generally prefer to learn the more popular technology if I have an option.

        My detailed Kubernetes setup is:

        • 1 cluster.
        • 4 services (various APIs and workers).
        • Nginx ingress for routing and load balancing.
        • DigitalOcean's container registry for hosting my containers.
        • Vanilla Kubernetes config YAML that I keep in my repository (no Helm or any package manager).
        • Code updates are pushed by building and tagging a new version of the container, and using Kubernetes service rollout for each service.
        1. 2

          Oh and most importantly: the only reason I chose to manage my own infrastructure rather than use Heroku/Render/App Engine/etc is because I have a ton of DigitalOcean credits. They don't have a managed option or I would have used that.

        2. 1

          I agree with your choices, though I think yours is already a "bigger" project in terms of costs, am I right ?

        3. 1

          Great lot of details, and a great approach !

          So you set up your Kubernetes cluster yourself right ?

  6. 3

    I host my production ready projects on DigitalOcean.

    Shameless plug :) my MVP, prototypes, etc.. are hosted using Packetriot:
    https://packetriot.com

    1. 2

      Thanks for the answer, and yay for the shameless plug !

  7. 3

    I use Linode for pretty much everything from web apps to cron jobs. Used to use digitalocean too but now everything is moved to Linode.

    1. 1

      Thanks for the answer !

      Why the move ? Did you have issues with linode ?

      1. 2

        I just wanted everything in one platform so choose Linode although both DO and Linode are pretty much the same.

        No any issue till now with Linode.

  8. 3

    I do as much as possible on https://vercel.com to avoid wasting time on system administration and devOps

    1. 2

      Seconding this. I used to use Netlify but have switched all of my stuff over to Vercel and prefer to only use it now. It's just so good.

      I used Firebase for a backend, mainly for auth, database, and cloud functions. I'm going to start moving my cloud functions over to vercel, though.

      1. 1

        It is that much better than Netlify ?

        I mean, Netlify is already pretty good, that's why I feel like it must really be awesome !

        1. 2

          They are pretty similar, but with Vercel, everything is just automatic.

          If you cut a new git branch and push it, it's automatically built and deployed with the branch name as a subdomain. There's very little configuration needed unless you're doing some wild stuff.

          1. 1

            Awesome, I'll need to check this out !

            Thanks a lot !

    2. 1

      I did not know about this tool, thanks for making me discover it !

      From what they seem to do, can I assume that you mainly do frontend dev ?

  9. 3

    We use OpalStack by @defulmere for all our Python/Django projects. One-Click Installers & Superb Support.

    1. 2

      Quite a nice offering ! Thanks for making me discover it !

    1. 1

      Seems quite nice ! And seems to scale up quite nicely !

      Do you use this service ? How reliable do you find it ?

      1. 2

        I've not used it long enoughto give you an honest answer to how reliable it is. But it is very easy to deploy python apps and manage them. Pretty cheap too!

        1. 1

          Thanks a lot ! Will have to check it out !

  10. 3

    I run my projects in my own VPS servers from Digital Ocean or Vultr

    1. 1

      Thanks for the very precise answer !

      How do you deploy your machines ? Do you use the web interface, or do you have a script for this ? Maybe a terraform configuration ?

      And you do you deploy your applications on those machines ?

      Are there any things that have bitten you before with that ? Are there parts of your infrastructure that make you feel uncomfortable ?

      1. 3

        I use GitLab CI to deploy.

        The stack is nothing complicated so I'm completely fine with just docker images + docker compose on the single machine.

        I've never gotten to the point where it got more complicated, so I am pretty comfortable with it.

        1. 2

          Gitlab CI is awesome.

        2. 1

          Girls CI ? I could not find anything about that... Do you have a link for it ?

          docker on the machine is great ! And you can already scale so much with images + compose !

          My idea was that not everybody knows how to do this, and I'd like to make it simpler for makers to get to this point.

          1. 3

            Stupid typo (damn autocorrect) 😂

            I meant GitLab CI

            1. 1

              Gitlab pipelines are super cool, they're the tool of choice for my actual client.

            2. 1

              Ahahah, that makes so much more sense !

              I feel like you already have quite a nice setup there. From what I see here, and what I thought already, the process is really the most important part.

              Thanks for sharing yours

    1. 1

      Did not know about this, thanks for the discovery !

      How do you find the service ? Is it reliable ? How is the customer support, if you've ever had to deal with them ?

      1. 2

        They have seemed always somewhat responsive. I would reach out to their sales team prob to get a better idea.

  11. 2

    To get your projects off the ground, you have to make them available to the public. How do you do that today ?

    Generally a VPS. Digital Ocean is my go-to, but Linode and others are also good. In cases where cost-efficiency is of paramount importance, I use LowEndBox (to find a dedicated server) or Afterburner.

    Do you run everything on AWS ? Maybe Heroku ?

    Definitely not! Both are very overpriced and have a poor UX. Heroku was once the easiest way to deploy I'd ever seen, but as they changed from a small startup focused on a single stack into a Salesforce acquisition that tries to do everything and extract as much money as possible, its time is long past.

    What if you had everything you need planned out to go from your first release to scaling up ?

    Then my next project just might be a free to play game server!

    What if you could benefit from the best features from the industry so that you could upgrade your application safely and quickly ?

    I can't now? I'm not sure I understand this question.

    What if it cost you less along the way ?

    That's definitely a plus. It's not always a top concern, but for some projects I've worked on it would have made all the difference.

    What if it gave you more flexibility than any other service out there because you can control and expand exactly what you use ?

    That would be fantastic. I really like having flexible tools.

    What if you could be alerted directly in case of an issue, by doing nothing more than just deploying your service ?

    I pretty much already get that from my CI/CD workflow.

    Would you be interested by this ?

    I'd be very interested in knowing what exactly you're building.

    1. 1

      Wow, that is a very detailed answer ! Thank you so much for that !

      Thanks for allowing me to discover LowEndBox and Afterburner ! Always love to hear about things I don't know.

      To clarify the question you did not understand (and that's fair given the question as I read it once more), I am asking if you would be interested by having things such as blue-green deployment or automatic releases without having to work for them. They'd come out of the box. I'm guessing you already have something like that with your CI/CD workflow, but it probably took you a bit of time to get it running.

      Also, about alerting, can you expand how you get that from your CI/CD workflow ? Can I get a bird-eye view of it ?

      I'd let you know what I'm building if I knew what it is yet :) For now, I am collecting ideas, trying to understand what people do want, what they use, and how I could help with all of that.

      1. 0

        Also, about alerting, can you expand how you get that from your CI/CD workflow ? Can I get a bird-eye view of it ?

        I use Gitlab CI/CD. Basically any time I push, tests run. If I push or merge to master and the tests pass, Gitlab runs a deploy script (which has some Elixir-specific details in my case since I do Erlang-style hot upgrades that don't disrupt server state). If any of these tests fail, Gitlab emails me. Finally, there's a trivial uptime monitoring service I run on another droplet that pings my server and lets me know when something is broken.

        I'm probably not your target customer, since I've already knocked down the obstacles around a deployment workflow. I have hit some painful roadblocks around the costs of scaling bandwidth hungry free-to-use services and any new offering that made that easier would be very, very interesting to me. It sounds like you're working at a bit higher level in the stack, though.

        BTW, I loved this essay and it might help with ideas: http://www.paulgraham.com/startupideas.html

        1. 1

          Thanks again for the detailed answer !

          I'm not looking for a target right now, but for people to help :) But I get what you mean by that. You obviously have a pretty good grasp on those topics, and unless you really scale up, I don't think that I could bring any value that would make you say "I need that".

          I'll look into the startup ideas post you sent. I love those kind of reads

  12. 2

    I am using Heroku and Vercel for UpStamps

    1. 1

      Thanks for the answer ! I'll have to checkout UpStamps ! Seems quite nice !

      Any reason you chose those two providers ?

      1. 1

        Vercel for static assets like the landing page and dashboard. Heroku for the API

  13. 2

    Big fan of DigitalOcean and Laravel Forge!

    1. 1

      Thanks a lot ! I did not know about Laravel Forge.

  14. 2

    Digitalocean for the actual app. Marketing site is from Netlify or Vercel

  15. 2

    frontend in vercel. Backend is by using AWS lambda or by using AWS Fargate or ECS hosted on EC2. I am biased towards AWS stack as I have worked and been working with AWS for 5 years now.

    1. 1

      Thanks for the answer !

      Having a bias towards AWS is perfectly understandable. It is not easy to make the switch between providers when you're used to one.

      How is your experience with Lambda ? Do you find it easy to manage your code on it ? I have had a bad time managing the code of the different lambdas. A great solution for me would be to have a way to create the lambda by pulling the code and dependencies directly from a git repository on creation, then maybe update with webhooks.

      1. 2

        I use server less framework for managing lambda. If you have not, you should definitely try it.

  16. 2

    I bit the bullet a while back to create a decent terraform setup for hosting Hasura / Postgres / Serverless / React apps on AWS.

    It was a big up front time commitment but now that its done, I pretty much have unlimited growth options and no risk of "outgrowing" my setup.

    In a few mouse clicks / CLI commands, I can skeleton a devops setup that startups spend months and thousands of dollars to migrate too after they realize Heroku wont meet their needs.

    1. 2

      hasura + postgres seems to be the buzz word I am hearing a lot. Did you face any challenges in this setup?

      1. 2

        A bit.. but mostly due to AWS making it pointlessly difficult to just "run a container". I solved it with terraform.

        Hasura Cloud takes a ton of pain out of this but FYI its a brand new product. Also, the hasura discord is extremely active and helpful.

        1. 2

          Thanks for the input. let me try it out.

      2. 1

        I deployed a bit of an infrastructure with Hasura, having an Hasura entrypoint which goes to query on multiple remotes, with authorization managed through JWT.

        Hasura had its quirks, but in the end, it seems to work really well. The only thing we are really missing is a prometheus exporter.

        But a simple Hasura + Postgres is very simple to setup. Although for me, the Hasura instance is used as Read-Only on the underlying database, we do not use any mutations through the GraphQL interface.

        1. 2

          Great thanks. How is the Postgres DB hosted? is it also through docker instances with read write replicas?

          1. 1

            Actually, all of our Postgres is in AWS Aurora. It makes management very simple, so that we can focus on other topics.

            It does not fix slow queries automatically though :)

            1. 1

              the cheapest option if i go with Aurora is 54$ per month. Are you paying this much price? seems to be higher end for me.

              1. 2

                This is what we use where I currently work right now. Compared to our total AWS bill, that's not a lot.

                For a project of mine, I just installed postgres on the same machine, and it worked well.

                Now, I would set it in a docker, with a named volume with indeed read write replicas. If you need a High-Reliability Postgres, at least 2 machines, probably 3, you can have a look at Stolon. I heard very good things about it.

                1. 1

                  Thanks mrngilles. Will check it out .

    2. 1

      Thanks for the answer ! I do love to see that !

      A terraform setup will take a while to create, but as you said, it gets you in such a better position right after that. And TBH, the simple terraform is not that hard to write (by simple, I mean no large functions in conditionals in loops...)

      I love your last comment ! Have you had the experience of such a migration ? What was too limiting on Heroku ?

      1. 1

        https://gitlab.com/maxcan/hasura-react-auth0-lambda-starter

        At Atrium we had to move off Heroku to AWS and essentially a larger version of what I'm using.

        Issues with Heroku - cost was astronomical if you want to do things like having your DB being network isolated and other kind of professional-grade dev ops setups.

  17. 2

    I'm hosting needgap on Scaleway ARM server, but Scaleway has shutdown its ARM lineup and I have to migrate it soon. I'm yet to decide where to go, but its likely AWS Graviton.

    I don't really want to give my money to Amazon Empire, but then again ARM is what I prefer for my carbon goals(Although big cloud providers are mostly carbon zero).

    1. 2

      Also, love the needgap idea !

    2. 1

      Thanks for the answer !

      It seems that the Graviton are a hell of a beast ! That would be a great choice !

      1. 2

        Just keep in mind, if your stack is optimised for x86 then choosing ARM wouldn't be rational.

        1. 1

          Obviously !

          But since macs will soon be coming with all ARM, I am guessing that the ARM market share will shot up, even in server space. Associate that with those great Graviton performances, it seems to me that we're going this way.

          Whether it's a good thing or not is debatable, and I am not knowledgeable enough to either. I'd rather see a RISC-V convergence, but I really don't see that happening.

  18. 2

    I'm using Heroku and AWS :-) Easy-peasy-lemon-squeezy :-)

    1. 1

      Thanks a lot ! Why both ? How are you choosing on which you will be deploying ?

      1. 2

        Aaah sorry I wasn’t precise, I use Heroku OR AWS — Heroku is great for early stage and smaller apps with fewer requirements, while AWS is for serious apps that need compliance or more scaling options 😁

        1. 1

          I was thiking this would be something like that :)

          That's a great way to work, but isn't the shift between the two platforms too much of an issue ?

          1. 2

            Not really, the shift between Heroku and AWS is rather easy considering they both operate in similar ways.

            1. 1

              Which parts of both are you using ?

              I have a hard time seeing clearly how they operate in similar ways

              1. 2

                I don't want to spend too much on DevOps, so I use Heroku as is (with their pretty good extensions). And when I move to AWS I usually go for Elastic BeanStalk + RDS Postgres :-) There's some craziness involving workers, but it's manageable with shuriken gem and their SQS

  19. 2

    I use Webflow, mostly because I'm a designer and I like their design tools. However, lacking some backend functionality still.

    1. 1

      Thanks for the answer !

      Are you lacking the backend because you don't need it ? Or maybe a lack of knowledge ? Or you may not just have gotten there yet ?

      1. 2

        It starts with my expertise. I've spend the best part of 2 decades focusing on design, so that's where my efforts are. Learning sounds like a nice idea to me, but each time I try, I don't enjoy it at all. In my experience, I've found it drags out. Perhaps I'll revisit that idea sometime.

        Having said all of that, there are more and more no-code tools that are quickly replacing the need to learn to code. Sure, these tools will always be slightly limited too, but they are unlocking a lot of opportunities for people like me.

        Take for example my website, https://fulltimewebdesign.com, it's built on Webflow and Memberstack. Those are two no-code tools that allow me to build and design my website, while also creating members-only content and areas. To do that with no-code even 3 years ago would have been impossible.

        1. 1

          No-code tools are indeed extremely powerful, and for a lot of people, they will be enough to launch and scale up quite a lot. Maybe they'll need to switch later, but I'm not even sure about that.

          The challenges are indeed different, and there is obviously no one-size fits all solution.

          BTW, your website is really beautiful ! I guess that's what 20 years of design experience get you :)

  20. 2

    I built Dogger for this exact reason. Right now, Dogger and Pull Dog (my two products) are hosted using Dogger.

    It's basically a super fast way to get your local Docker application to run in the cloud in a cheap and easy manner.

    Just run "dogger-compose up" instead of "Docker-compose up" and you're good to go.

    More info: https://link.medium.com/nHbdSOTxz8

    I built it because I love using Docker, but don't want to use Kubernetes due to the price. I also don't want to host my image somewhere. I just want it to work in the cloud with a simple CLI.

    Soon it'll support Docker-compose weaving which will allow multiple of your projects to run on a single node, even if they all have individual Docker compose files. This of course increases the chance of all your projects going down at once if you use it, but it'll be insanely cheap.

    If you're interested in working together, let me know! 😊

    1. 2

      Thanks for the answer !

      Your solution seems to be quite elegant indeed, removing a lot of the deployment work.

      How do you manage the domain names, I did not see anything in the docs about that ?

      My goal would be more to allow the user to still manage their infrastructure, but have the architecture prepared for them, along with all resources to make it as easy as possible.

      Thanks for the offer, but I want to explore things on my own for now :)

      1. 2

        Right now, every instance will have its own IP address, so I just (for now) manually set it all up with A records.

        Over time, this will be automated too.

  21. 2

    Google Cloud Run for everything I can.

  22. 2

    Terraform, Ansible, AWS. Took me weeks to set up initially but now I use the same code to deploy any new project usually.

    1. 1

      Thanks for the answer !

      That's the stack I have been using for a while too ! For sure it takes more time to get running, but once you're there, it's like magic !

    1. 1

      Thanks for the answer !

      I've had a bot great experience with Amplify on AWS (mainly a bad API), but since it seems to be recommended quite a lot, I'll give it a deeper look

      1. 2

        It doesn’t support multiple tenants but it’s fine for simpler use cases.

  23. 2

    I chose AWS for 2 reasons:

    1. It will help me in my professional career as a software developer.
    2. I heard that AWS is not so expensive.
      Maybe I should've chosen something simpler like DigitalOcean or Heroku, but the choice has already been made and I hope I will not regret it :)
    1. 2

      Thanks for the answer !

      I guess that knowing AWS will help in your career indeed, a lot of people are using it ! It can become very expensive if you are running a lot on it, but if you are careful, it should be good.

      Be careful most about network data and storage space ! Those can ramp up quite quickly. If you can, I'd advise to setup budget alerts so that you know if your bill is spiking up.

      1. 2

        Thanks for the warning :)
        This is my first experience in creating side-project from scratch and I'm completely dumb in all aspects of DevOps things.
        Would you recommend better solutions then AWS? Currently, I host only a static landing page (just to validate the idea of my project that is in development yet), and if turns out AWS is not that good I will host my project in somewhere else place.

        1. 1

          If you just want to host a static page, then Netlify will probably be your best bet (Vercel was also cited as being even better than Netlify, but I have no experience with it).

          Do you use any framework to generate your page ?

          Then if you want hosting for backend, I'd go with AWS, but it usually is more work. You can look at Firebase which seems to be a popular way to do backend though.

          1. 2

            My bad, I will try to explain what I meant.
            I will finish my project Next.js + Node.j + MongoDB in a month or so, but for now I deployed a static page to my domain just to show the message "Coming soon..."
            The final question is (I'm sorry for attacking you with so many questions) is it ok to host Next.j + Node.js + MongoDB on AWS or you would choose something better?

            1. 1

              Hey, I'm glad to get so many questions, so fire away !

              You can deploy anything you want on AWS, so it is indeed ok to host with your stack on it. Do be aware that AWS is not easy to get started with, there is quite a ramp up.

              Do you have some potential customers already ? I think you can probably start with very simple EC2 machines, if you don't have too many people.

              If you're ok to pay for it, I know that there is DocumentDB which is a mongoDB managed service by AWS. You don't have to manage your database, they do "everything" for you. I don't know the limitations of the service though, or how good it is.

              If you don't have a lot of knowledge in infrastructure, DigitalOcean seems to be an easier solution that is quite popular with IndieHackers.

              We can get into more details on all this if you want. Don't hesitate to contact me privately for some questions that would be specific to you and your deployment !

  24. 2

    I use VPSs in 5 places (Ramnode, BuyVM, Hetzner, DO, VMHaus), then I use Netlify for static sites (VueJs) and Vercel to host a NodeJs backend for my upcoming side project.

    1. 1

      Thanks for the clear answer, that makes a lot of sense.

      Which provider are you using for your VPSs ?

  25. 2

    I am interested in speaking with you. My biggest weakness in my project is choosing the right Infrastructure for jemsplash.com

    1. 2

      My product can also offer super cheap Docler hosting! Let me know if you're interested!

    2. 1

      Sure, we can have a chat ! Can you contact me privately, so that we can see what you need exactly ? I'll ping you on twitter if you prefer

      1. 1

        Yes I just followed you but it won’t let me message you.

  26. 2

    Mlab-AWS-Elastic Compute Cloud

    1. 1

      If I understand correctly, this is a service that manages your MongoDB on your own AWS account / VPC ?

      Does it work well for you ? Have you had any issues with it ?

      Also, any reason you chose MongoDB in the first place ?

      Thanks for the answer, I did not know about this service

  27. 2

    My stack is netlify (front end), firebase/gcloud (backend) with the intent that I might switch the backend stack if anything needs to scale. But I do not have any popular projects that have high backend requirements. So far this is working for me. Firebase is fast to setup which is why I use it. Gcloud could handle scaling afaik. At current state there is no cost to any of this.

    My two most popular projects run 100% on client. They scale beautifully :D One is an android app and the other is chrome extension; both geared towards enhancing the on-device experience.

    1. 2

      Thanks for the answer !

      That's a great stack you have there ! You'd need to grow a lot before scaling on Gcloud becomes a big issue.

      Your projects may not be "popular" for now, but I'd still like to know how you deploy your backend more specifically. Are you using a virtual machine (or more) ?

      What I'd like to help with, for something like that, is for when a machine crashes for example. I want to help build resiliency, but most importantly peace of mind for the maker. Whether it is alerting you or just restarting the machine, this is something that helps (at least me) sleep at night

      1. 2

        I deploy my backend from command line with gcloud app deploy =D. This command will upload any changes and kick off a cloud build and deploy. If there is any issue with the deploy I can revert to older version from the console.

        As far as machine crashing, google allows you to choose where you want to store your data which should help with availability. Again this is beyond anything I'm doing right now and I have not run into issues with this.

        1. 1

          I mean, that's the way to go then !

          I think that a lot of makers don't really know about this, and I would really love making this more accessible.

          1. 2

            Honestly I don't know much either. I worked with a company previously that was using azure/octopus deploy so I am familiar with that stack. But I was limited to working with the setup they had so my understanding of it, or how to set it up, is limited. I do not use azure with indie projects because my understanding is it costs more for small projects.

            My cofounder likes heroku so I have user that a few times. Personally I don't like heroku much because they lump all projects together and if you run some server constantly you will run out of quota and have to wait until next month to reset. I've been told Heroku is a wrapper for AWS services.

            Gcloud is working for me because the quota is generous and I have several crawlers and small projects running on there, some constantly. If I run out of quota it is for one project only and will reset every 24h.

            I am very interested in learning more about AWS but their console and terminology is intimidating. It has taken me a long time to understand gcloud so I expect similar learning curve with AWS.

            1. 2

              Yes, AWS is quite difficult too, especially once you get into the nitty gritty networking stuff. And they have so much services...

              The cost associated to Cloud platforms really depends on what you do with it, and how much you optimize though. It may be worth it for an indie project, if the cost optimizations were there already, and you just had to plug and play you app.

              When you speak about quota, you mean the free tier quotas right ?

              About Heroku, is there absolutely no way to lump projects together ? This seems like it would really become a mess even with 2 or 3 projects.

              Thanks again for the thoughts !

              1. 2

                Yes, sorry, free tier quota. I'm just learning how to monetize projects in general so I'm not looking to setup servers that will drain my pockets in the meantime.

                My comment regarding heroku came from us once running a server on there (for dev only) but I guess we were doing a lot of work on it, because around day 27 we started seeing server errors. Figured out it was because we had exhausted resources and had to wait until next month. That was a bad experience for me. I have since deployed some small backends on there for my very own apps that I do not intend to share and that I know it can handle. My cofounder said though that if you upgrade to even the lowest paid tier, it can easily handle a lot of load.

                You might find this funny haha

                1. 2

                  That's for sure, try to keep your costs down at all times, especially if you don't have paying clients, or very few. You'll obviously need to pay more if you need to scale, but you'll always have to optimize one way or an other.

                  Thanks for your comment on Heroku, it's very interesting to know about the way the free tier work. I'm pretty sure your cofounder is right in that even the lowest tier will make it much better to work with.

                  This twitter post is so true ! Thanks for sharing this !

  28. 2

    I think boring and simple is better than complicated or new and shiny.

    For https://randomdailyart.com it's simply a static site loading everything from a yaml file and build script which builds out everything that Go Hugo can't do. All hosted on Netlify.

    I run my own server that runs the emailing software which just uses Send Grid. The entire stack only cost me $20 a month. Most of that cost is to Send Grid to send emails every day.

    1. 2

      By the way, good choice with Hugo :)

    2. 2

      I agree that boring and simple is the best of the options.

      It may be ok for you to have your site go down for a while, but maybe you'd like to be warned in case that happens, right ? Or maybe you'd just want it to get back up on its own ? That is the sort of things I want to help makers with. I want to bring those kind of features to them easily so that they can sleep peacefully

  29. 2

    Personally I switch between hosting on Firebase (low traffic / prototype) and Digitalocean (high traffic / production). Both are super simple setup and relatively cheap.

    1. 1

      Very nice setup indeed !

      How do you deploy your machines on DigitalOcean ? Are you using the web interface, or is it scripted? And how do you delpoy on those machines then ?

      Thanks for the answer !

  30. 2

    k8s cluster in aws

    1. 1

      Thanks for the answer !

      I must admit that I was not expecting this answer. What is the kind of projects you deploy on this ?

      This is a great solution, although quite complicated, and probably very far from what a indiehacker would be looking for, especially given the price.

      Are you using EKS, or do you manage your k8s yourself ?

      1. 2

        I'm using Rancher v2.x to manage k8s cluster, makes everything very easy.
        You put your AWS access keys to Rancher, set up EC2 templates and they spin up on their own.

        After that you just deploy docker containers from Rancher UI. You have access to their API so you can automate stuff as much as you like. For me I build containers and push them to ECR. And from there Rancher pulls them to update versions. For some projects I host a dev, staging and a live version. Around 20 containers atm for various projects. The biggest one is a multi-store for a customer, 2 shops sharing users/orders part. Writing the 3rd part atm for them so clients can design their own t-shirts, hoodies, mugs ...

        On the front (of https requests) I'm not using route 53 but I host my own Nginx proxy that is using letsencrypt certificates. I wrote an UI with NodeJS for managing everything so it's easier to maintain and configure. Basically you just point a domain to upstream server and it configures Nginx + requests letsencrypt certificate for it :)

        I admit it is probably an overkill for a single project. But on the other hand. Once the # of projects grow you already have system in place to deploy and test stuff so you can only focus on coding and selling. There is very little maintenance involved.

        1. 1

          You're getting to a point where running all of this on K8S starts to make sense, especially if you put everything in containers :)

          And you are absolutely correct on two points: It would be overkill for a single project, and once the system is in place, you can just use it without having to worry about it.

          Awesome to see that you can find every kind of infra for indie projects !

          1. 2

            Yes, I throw "everything" into containers. Well at least all of the code.
            I put all static content like images on S3 and link them from there. So containers are "stateless", making them small footprint and fast to recreate and deploy ;)

            1. 1

              Great way to manage it all ! Docker containers are best this way ! And serving your static content will be so much faster directly from S3. Although I heard that if you're not careful, your costs could shoot up quite a lot, since you pay for accessed content. Am I wrong about this ?

              Do you have to do the linking manually ? I am guessing it could become tedious to manage.

              1. 2

                Not really. Even if your images are on EC2 instance or in docker container you still pay same price for serving data out from AWS cloud.

                S3 content is cookie-less, which is good for speed when it comes to loading the website on clients. They also have 1y cache set so clients cache them for 1year.

                Not linking manually. Web store has over 10k of images :)
                I have the name of the image file stored in DB. But the path is generated from S3 bucket instead of just domain where they are served from. I have all the images actually locally in subfolders, but they are excluded from git and docker. I sync them to S3 via aws-cli.

  31. 2

    Firebase for the win!

  32. 2

    Google Cloud Functions, Hosting, and Firestore make it easy to get up and running quickly. Firestore even has a front end JS library so you have a db without a backend nescessarily

    1. 1

      Thanks for the answer !
      For how long have you been using this solution ? Are there things that are issues for you with this ?

  33. 2

    I think "Serverless" docker runtimes are the most one-size-fits-all for indie hackers. Examples are Google Cloud Run or Fly.io.

    No cost when there are no users, will probably scale well, use whichever language you want as long as you can dockerize it, you can run it locally (and offer on-prem in the future) and you can "graduate" to a more standard load balancer + asg setup.

    I think the barrier to entry here is quite high though still! I have professional experience which makes it easy to forget how many different hats you need to wear to do it well.

    1. 1

      That is a great answer ! Thanks for it !

      I was thinking exactly about something like this to make it as portable as possible. Of course, the barrier of entry to docker is something that is not easy to overcome. And I am guessing most indie hackers are not that interested in it (?)

      But for those who are, it would be a great way to work at any scale !

  34. 2

    Uclusion built our app over AWS. What is AWS missing that you are going to help with? There are a number of gaps but I'm not sure what you are trying to fill.

    1. 1

      AWS is hard, even harder to do well.

      The goal is to provide most of the infrastructure for an indie hacker who does not want to think too much about it, with upgrade plans to better infrastructure when they need to scale up, and help with other things like deployment pipelines.

      I guess that if I was reinventing something, it would be closer to Heroku, where you don't actually manage your infrastructure that much but can easily scale up. However, Heroku can become expensive quite quickly, and you don't have a lot of control or accesses to your deployments except from what they provide you.

      The idea is more about explaining / providing the architecture for the infrastructure on top of existing providers than creating a new hosting service.

      Does this make sense ?

      1. 2

        Sure for instance https://www.serverless.com is trying and has made it easier for us.

  35. 1

    OrgPad started on Heroku and we were running there for about a year. The advantage was a very fast setup, it took maybe 1 hour to get the first version running as Clojure backend with Postgres database. At the beginning, we were paying nothing and then very little. But as requirements for our app were growing, the price was quickly increasing, but also the offering was too limited. Luckily, brother of my co-founder is doing devops, so he helped us to move everything to DigitalOcean where we are currently running for $45 per month.

    1. 1

      Thanks for your answer ! Helps me see what offerings can fit or not

  36. 1

    There are some good comments here, however, I'm afraid why no one is using Infrastructure as code (IAC) / CDK to manage their deployments?

    I'm working as a Frontend Architect in a software agency and that means means that we have clients all year round and my team at least deploys 2 new projects a month on an average.

    We use AWS.

    Why? Apart from the "technical & cost benefits", AWS has a good "organisations", "billing" and "permission" based approach.

    We use AWS CDK for our deployments and only need the AWS access key and the secret key (we have a predefined roles for the keys) generated by the AWS account owner.

    If you're not aware about AWS CDK
    Readup: https://aws.amazon.com/cdk/
    Examples - https://github.com/aws-samples/aws-cdk-examples

    Here is my stack - a "serverless" and a "pay as you go" approach.

    Frontend (JAM Stack): S3 + Cloudfront + Route53
    Backend: AWS Lambda and DynamoDB, for most projects we use a GraphQL powered CMS or PIM.

    Frontend is built at build time (and not runtime) since we have serverless deployments.

    Benefits of this approach?

    1. Predefined permission keys, so no one can misuse them.
    2. Never have to login to AWS console, forget SSHing into your remote server. Infrastructure as Code approach.
    3. Deployment power in the hands of your developers (since you have a ready pre-provisioned CDK and they just need to put in the keys and run the commands). Less chances for shit to go wrong.
    4. Serverless! you don't handle the load, so your client won't call you off office hours to ask you why the site crashed?
    5. No 502 bad gateways! :D
      and many more to ...

    Interested to know your views and / or how this can be improvised further :)

    1. 1

      Aaaaaah, that's deployment porn right there !

      We have not yet used the CDK for the simple reason that we have started with terraform, and we are managing more than just AWS with it.

      I mean you have very little chances of doing something wrong here. While there are some other disadvantages to lambdas that I can think of (latency, code management with growth), it sure makes things easy in a lot of cases. Not need to manage machines, you pay what you use only, you rely on the infrastructure of AWS, you get logging with "no work", and more.

      As for why so few people are using IaC, I think there are a few reasons. Not everybody uses a big cloud provider, and a lot of people either don't know about it, don't want to bother with it (which ends up biting back) or they just don't see the point. I get all that, and maybe having something nice and simple to help them get started would be what gets them to migrate to IaC.

      Extra question: How easy is the deployment of Lambdas with the CDK ? Does it integrate with git ? What's your workflow here ?

      Anyway, thank you so much for this detailed answer, I may refer to it again to see if I can improve somewhere.

  37. 1

    I am having a personal Kubernetes cluster on scaleway.com (with a single node, ~12EUR per month) and I use it to deploy my personal website, my self-made budgeting dashboard and the landing page for my "startup".
    Containerizing applications and just throwing them at a cluster is pretty easy and neat, especially if you don't have to manage the cluster yourself.

    1. 1

      Thanks for the answer !

      You're using this offer, correct ?

      Did you ever have any issue with them ? I mean, 9.99 a month for a Kubernetes cluster is really nothing. Do you get access to a single namespace ? What are the limitations here ?

      Also, they are french, so I am happy to see that there are those kind of offerings in France :)

      1. 1

        Really no catch. You have the whole cluster at your disposal and you don't pay for the control plane (and have no access to it either). You pay only for the nodes you use, so the pricing is actually starting at 9.99€ (+ tax) for a single node (3CPU and 4GB of RAM) setup, but if you want high availability, you would probably go for more nodes.

        I guess the biggest drawback would be that they have datacenters only in Europe (Paris and Amsterdam), so there would be a bit of latency for US customers that would access your applications.

        But yeah, overall I'm very pleased with their offering. They even provide an already configured Traefik ingress controller (not the 2.x version though), but you can start deploying publicly accessible services really fast.

        I had some issues regarding networking, at some point containers weren't able to resolve any DNS query (the DNS response packets where coming with a wrong source address, so they were dropped). But that is resolved now, and I didn't have any more issues after that.

        1. 1

          Wow, I am very impressed.

          The managed controlled plane (without any access either) is about 200$ a month on AWS... How does that work ?!?

  38. 1

    FE : AWS Route53+S3+Cloudfront
    BE :AWS Lambda (Python or NodeJs )
    Authentication/User : AWS Cognito

    1. 1

      Thanks for the answer !

      Do you feel limited using Lambdas only ? How do you manage your code on them ? I've found it hard to have your code on Git and update lambdas from it.

  39. 1

    AWS :)

    FE : AWS Route53+S3+Cloudfront
    BE :AWS Lambda (Python or NodeJs )
    Authentication/User : AWS Cognito

  40. 1

    Firebase hosting.
    I use a simple custom npm script to build then deploy

    1. 1

      Thanks for the answer !

      Do you have any issues with this process ?

      1. 1

        None that I can think of. My deployment requirements are very simple. The script basically consists of 'gatsby clean && gatsby build', 'firebase deploy', and a couple of timers to measure how long each step takes.

        1. 1

          Nice !

          I agree that you should keep it simple, if you don't need more !

          Thanks for your anwser

  41. 1

    Mostly everything is handled through vercel.com - I use nextjs as well, and fauna db + algolia for storage and search respectively.

    1. 1

      Afaik, Vercel uses AWS Lambda under the hood that adds to the cold start times for the cloud functions resulting in a relatively slower user experience. Hence, I would only use Vercel for frontend deployments and not the cloud functions

      1. 1

        True for AWS Lambda. However, you can cache results from lambda at the CDN level (and even use stale while revalidate) which makes most commonly used end-point very fast.

    2. 1

      how did you intergrate faunaDB + algolia?

  42. 1

    Frontend: AWS CloudFront
    Backend: AWS Amplify

  43. 1

    I'm hosting https://bullish.email on Netlify. My requirements are simple enough just a couple cloud functions and a static website. Works well for me.

    1. 1

      That's totally fair !

      Netlify is really great, and you remove so much of the hassle by going through them !

      Do you see something you would like to implement that would make you move away from just simple functions ?

      1. 2

        I like the simplicity of serverless and Netlify makes it even easier. I think nowadays I would pretty much use serverless to build pretty much anything. zero DevOps is a huge advantage.

        1. 1

          When you talk about Serverless, do you mean the framework or the concept ?

          I am quite fond of having everything as code, from the application code to the infrastructure. How do you manage all of your code ? Is it simply in Netlify ?

          1. 1

            Netlify hosts the website and a couple of cloud functions to handle stripe integrations and subscriptions. The rest is in Ruby running in a Raspberry Pi to send emails.

            1. 1

              So you have a part running on a Pi at home ?

              If that's the case, I'm so glad to see that, it just show how diverse deployments can be ! Although to be honest, I would not recommend it :p

              1. 1

                Yeah Lol. It was sitting around collecting dust so I was why not. Definitely a single point of failure in my architecture but I'm happy by how well it's been running.

                1. 1

                  Well, that's as good a reason as any ! As long as you know the risks, that's good enough !

  44. 1

    This comment was deleted 3 years ago.

Trending on Indie Hackers
How I grew a side project to 100k Unique Visitors in 7 days with 0 audience 49 comments Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 28 comments My Top 20 Free Tools That I Use Everyday as an Indie Hacker 14 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments