Live data from Hacker News

Ask HN: How do you deploy your side-projects?

news.ycombinator.com

61–70 of 82 posts

Re: Ask HN: How do you deploy your side-projects?

#61
post #58

I went through Heroku, then DigitalOcean, then GCP, AWS, Hetzner Cloud, and finally landed on a dedicated Hetzner server at €45/month My use case is app websites ( https://lunar.fyi , https://lowtechguys.com ), public databases ( https://db.lunar.fyi ), personal APIs (for uploading files, optimizing images/videos, MQTT etc.) and websites for my relatives ( https://robert.panaitiu.com ) I've had this configuration for…

What OS(flavour) are you running? How do you do OS upgrades/patches?

Running Ubuntu 20.04.5 LTS right now. I have the `unattended-upgrades` service running for automated security patches, and I just run `apt-get upgrade` from time to time.

I'll be upgrading to 22.04 LTS tomorrow, last time I did that it went smoothly.

Re: Ask HN: How do you deploy your side-projects?

#62

Earlier quoted context omitted.

If you're interested in sharing more: What determines if you choose render or fly for a given project? What makes fly not as easy as render? (I am contemplating moving off heroku, and these seem to be the major contenders for analogous ease of operations).

For existing Heroku projects, I chose Render. For newer projects, I mostly use Fly.io. It also depends on a few more factors like Postgres need of the project, in which case I choose Fly's managed services. Fly.io also makes it easier to deploy docker based projects. Render is more like plug-a-GitHub-repo-and-play. Bear in mind that I'm only comparing these too in terms of their free tiers.

Thanks! why not fly for existing heroku projects?

I thought that fly didn't actually have a managed postgres, I guess I need to look more into it!

Re: Ask HN: How do you deploy your side-projects?

#63
post #31

I can highly recommend fly.io. I have been using it for my Elixir projects [0][1][2]. The interface is easy to use, and you can come very far with the free layer. Another selling point for me was, that I can easily migrate away (in case I want to move to Hetzner later). [0] https://slashdreamer.com/ [1] https://articletoimage.ai/ [2] https://ogtester.com/

I’ve had a lot of downtime cuz of Fly.

1/ My certificate didn’t auto-renew and there was no warning. Others had this issue [0].

2/ Fly's free Redis host is trash. Not usable for sidekiq workloads. Others had this issue [1].

[0] - https://community.fly.io/t/ssl-certificate-did-not-renew-aut...

[1] - https://community.fly.io/t/redis-timeouts/7232

Re: Ask HN: How do you deploy your side-projects?

#64
Dokku on a vps gives an identical experience (Heroku) for me. I have several projects running on a Hetzner 2 cpu / 2 Gb vps.

Once a day I do a Dokku backup (zipping its main folders) to an attached volume. I did a test recover a few times (once to Digital Ocean) and that only takes minutes.

Re: Ask HN: How do you deploy your side-projects?

#66
Front-end deploys from GitHub/GitLab/etc to Netlify with Cloudflare CDN.

For back-end, I started with some Vultr credits and these basic VMs have better performance/cost than others I've used (including Digital Ocean), as well as having a decent feature set. Sometimes, I'll put Cloudflare in front of the backend API as well with carefully decided cache headers/behaviour.

Re: Ask HN: How do you deploy your side-projects?

#67

Digital Ocean's managed Kubernetes offering has been great for me. There's lots of potential complexity to K8s, but if you're not managing the cluster and you have simple workloads the ratio of "stuff you have to learn" to "benefits you get" is pretty high. You can deploy anything that runs in a container, so it's really good for experimenting and not being tied down to one language or platform. I can add a new servi…

What's your approach for ensuring that you've sufficiently secured your Kubernetes cluster? I'd go down the same road as you, but I'm worried that I leave my cluster vulnerable as I don't know much about hardening Kubernetes. For example, I know I shouldn't run my apps under privileged user in Docker, but overall I'm not familiar with a managed Kubernetes attack vector.

The Kubernetes nodes and control plane are not something I manage directly. DigitalOcean perform regular upgrades to keep the cluster at a minimum supportable and secure version. They're reasonably sophisticated, and if they can't upgrade the cluster without downtime they'll notify you with what's wrong - which is great, because I don't know much in depth about K8s administration.

The configuration you use is pretty explicit about which ports are internal and which are published externally as a service, so it's unlikely you'll get it wrong by accident. Nevertheless, you can still verify that you haven't done anything daft like opened a DB port to the internet by e.g. trying to connect to it.

Finally, there's a whole class of difficult administration, hardening and access problems that can come with Kubernetes multi-tenanted operations that you just side-step as a sole administrator/user. You don't need to worry about who has access to which services or namespaces, or what privileges they have via RBAC - it's just you. I'd want to do some really serious research before letting other users launch containers on my cluster, or execute their own code in it; but that's not one of my use-cases, so it's not a problem.

Re: Ask HN: How do you deploy your side-projects?

#68
For me, this topic falls along the same lines as distro ping pong.

I’ve tried many, but have ended up with Cloud Run. It’s been great and costs next to nothing.

Since you run within a Google Cloud Project, you get all the Google tools to use if and when needed too.

GitHub actions usually handle my deployments etc.

Re: Ask HN: How do you deploy your side-projects?

#69
post #24

Digital Ocean's managed Kubernetes offering has been great for me. There's lots of potential complexity to K8s, but if you're not managing the cluster and you have simple workloads the ratio of "stuff you have to learn" to "benefits you get" is pretty high. You can deploy anything that runs in a container, so it's really good for experimenting and not being tied down to one language or platform. I can add a new servi…

If you are going down the k8s path and want to learn both a cool config language and make it easier to be able to deploy abitrary things in a more consistent way I suggest checking out Jsonnet and Tanka. This combination allows me to make use of Helm charts, off-the-shelf YAML and custom Jsonnet in a cohesive way. It's probably overkill for personal projects but I picked up the stack in a previous professional role a…

I'm in the middle of migrating off Tanka's predecessor ksonnet to pure Helm at $work because the migration effort was deemed too challenging :cry: Did you use ksonnet before?
Post reply on HN