I run my own server for most of my projects. A single VPS with KeyHelp, Apache, MariaDB, and a handful of Node and PHP applications. No cloud provider abstractions, no managed services besides the VPS itself.
This is not for everyone. But for a solo developer running a few small to mid-sized projects, it works really well.
Why I do it
Cost, mostly. A single VPS costs me a fraction of what the equivalent setup would cost on any managed platform. I get SSH access, full control over the stack, and I can host as many sites and apps as the hardware allows. No per-project billing, no surprise invoices.
The other reason is understanding. When something breaks, I know where to look. I have configured the web server, the database, the firewall, the SSL certificates. There is no magic layer between me and the system. If something fails it is usually something I did, and I can fix it.
What I would not self-host
Anything where downtime costs real money or where I need five nines of uptime. For client projects that need high availability I will recommend managed infrastructure. The peace of mind is worth paying for when someone else's business depends on it.
But for personal projects, side projects, and small client sites with reasonable traffic? A VPS and some configuration gets you very far.
The tools I use
KeyHelp as the server panel. It handles virtual hosts, SSL via Let's Encrypt, email, databases. Not the prettiest interface, but stable and does what it should. Deployment is either git pull and build on the server, or build locally and upload the output. PM2 for Node processes. Cron for anything scheduled. Nothing fancy.