Running some projects with it for the last 5-6 years and had couple of Dokku versions upgrades - zero issues so far.
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 service by copying and pasting a yaml file or two and it's up and running within a half hour or so.
If I need some storage of undefined quantity, in the case of say image uploads, I might bring in S3 (or equivalent) service. But other than that, just a VPC.
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 2 years now: https://www.hetzner.com/dedicated-rootserver/ax41-nvme
AMD Ryzen 5 3600 Hexa-Core "Matisse" (Zen2)
64 GB DDR4 RAM
2 x 512 GB NVMe SSD (Software-RAID 1)
1 Gbit/s bandwidth
On the software side I'm heavily relying on self-hosted Portainer [0] (for managing Docker stacks) and Caddy [1] (for routing web services, static file servers, static websites, barebones single Python file APIs etc.)I usually start a side project by simply running it in a tmux on the machine. If it becomes larger, I promote it to a docker-compose file inside Portainer.
When I find myself needing to update/re-deploy often enough, I create a repo for the compose.yaml file and create a Portainer stack with that repo. That way, a `git push` can re-deploy automatically with rollback on failure.
Sometimes I might need to run tasks like building a binary or a more advanced Docker image on `git push`, so I also self host Drone CI [2] for that.
Portainer also supports Kubernetes, but I just don't feel comfortable with its complexity. I feel more at home with running `docker ps/exec/logs` to troubleshoot possible problems, or test out some ideas quickly.
I have an overspecced solar install on my roof that make the electricity used by the cluster essentially free to me, so the only recurring cost is business-class Internet service.
Serverless is great for side-projects because the scale based pricing effectively makes things free unless they really take off. And if it ever does go to decent scale, there's a good chance you don't need to re-architect or even tune anything to scale up with traffic. If you wanted to prioritize 100% predictable fixed costs over everything else, then maybe a VPS would be a better option.
Render is the closest thing to Heroku's ease of deployment currently. Major disadvantage is the larger build times.
[1] https://dokku.com/ - Heroku but self-hosted, deceptively complex, can be a pain
[2] https://vercel.com/ - Kind of a modern replacement, very easy, but can only really run TS/JS
[3] https://cloud.google.com/run - A nice way to run any server in a Docker container, simple but probably not suitable for a front-end
For deployments of actual project I've built myself I've built a stack myself, which deploys on kubernetes via. flux2. I use a stack on top of dagger via. drone for ci, and a again a custom releaser for moving stuff from ci into flux.
I am using wireguard to communicate with the clusters, and mostly caddy on the frontend for tls provisioning.
It is not really a fit for other people, but you can find open source solutions for all my custom bits.
I recently used a blockchain page called "Rather Labs" to help me launch my own blockchain-based project, and I was very impressed with their service.
The page offers a range of tools and resources, including tutorials and guides on topics such as smart contract development, token creation, and crowdfunding, as well as access to a community of experts who can provide advice and support.
Additionally, Rather Labs (https://www.ratherlabs.com) offers a range of services, including technical support, project management, and legal assistance, to help ensure the success of your project. I found the team at Blockchain Deployer to be very knowledgeable and helpful, and they were instrumental in helping me deploy my project successfully. Overall, I highly recommend Rather Labs to anyone looking to create their own blockchain-based project.
Previously I was self-hosted on a colo box I have using a PaaS I used to work on called Flynn - but it's about time to retire that machine, it's a 7 year-old Xeon and the power it draws has to be insane compared to the 3 ARM instances it's now running on.
The world has moved on from Flynn sadly and now it's my turn too.
I don't really like any of the static site generator's out there, so I just build an ejs site and parse it using a project I built called statictron [1]. I'm using it for a site [2] I'm building at the moment, and it's a pretty smooth and cleap deployment. I did end up pushing the files to bunny.net (a EU based CDN), as its surprisingly much faster than GitHub pages. But I'm just being picky, as Pages is practically more than fast enough.
For anything that requires server side hosting, render.com is great, or digitalocean if I want something I can control more. I don't really want to buy into the whole ecosystem of things like Heroku, GCP, AWS as I like to make sure I can leave when/if they do bad things.
I'm also increasingly moving stuff back to dedicated hosting. I do try and automate as much of the deployment stuff as possible, and use docker to wrap the services.
It's actually amazing how much cheaper a dedicated server is, vs cloud companies, once you're using more than a few services. I'd normally say one of the benefits is your DevOps teams should be cheaper, but in the end I've found the teams that would be managing the dedicated servers, end up being just as big to support the cloud infrastructure platforms.
Cost per "project": domain + shared cost of the dedicated instance. Right now the dedicated instance is running 8 projects in total, I pay ~70 EUR a month, so about 8.75 EUR + .com domain for each which works out to be ~20 EUR per year, 1.6 per month. Also using Migadu for email, shared between all little projects, ~30 EUR / month (so currently 3.75 EUR per project per month).
Each project added makes cost per project lower, as they all share the same infrastructure.
Environment is setup so every service has it's own systemd user service. Deploys happen by doing the following steps:
- Build and test project locally
- Copy artifact/binary to server with ssh, rename file to be versioned incrementally
- Restart systemd service
- New service deployed
- If database migrations have to be run, I execute them here
- (if something goes wrong, I copy old artifact to "production" directory and restart service again, poors-man rollback)
- Send a marker to Grafana that a deploy have happened so it's visible in the dashboard
As it stands right now, it seems to be about 13 EUR per month per project, but as mentioned before, gets cheaper for each added service. None of them are particularly performance sensitive or use a lot of resources. As a max, I've run something like 15 services on this very machine without any problems. Everything goes via Caddy that acts like a proxy front for everything.
One of the projects got more popular one time and started impacting the performance of the others, I simply replicated exactly the same environment to a new dedicated server where it lived by itself from there on.
If I had to start over, I'd just do AWS App Runner. AWS is complex, but it's reliable - you won't have to pay huge minimums or subscriptions to host a side project. And, it will (hopefully) be dependable as a host long-term.
My audio plugin is backed by CloudRun https://signalsandsorcery.org
We have built some automation around cluster management over at https://github.com/neuroforgede/swarmsible.
I used to do everything in ansible, but Docker Stacks are just so much nicer to use.
In any case automation is king. I don't have to remember stuff if I can just look at some IaC Code :).
Docker containers get built with github actions and pushed to docker hub
I’ve occasionally looked into cloud stuff, but it all seems orders-of-magnitude more expensive for day-to-day use, and there’s no cost ceiling if I do something dumb and use a ton of bandwidth
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.
These are downloaded via RAPID and create -with the previous shards a image of the game in the engines local install. After that its buisness as usual.
It's probably a bit prod-focussed in that it establishes ELBs/ALBs and things that cost money as standard but five stars for seamlessness
I've used Render before and was happy, but I now prefer keeping all my stuff in the EU =)
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.
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.
I deploy to single Linode instance with multiple projects.
Super easy interface to deploy a GitHub repo.
Auto provisions the server with nginx, MySQL, redis, etc.
* setup of the system itself via ansible
deployment depends on the kind of project
* rsync for simple (static) webpages on vhosts
* docker-compose (docker) or helm/tanka (k8s) for container-based stuff
* and again ansible for everything else :)