I did try Cyberpanel since I responded, but I highly disliked how its automated backups upload to remote storage. It just didn’t feel safe enough for my liking. I was hosting a few sites: a development site for me and two for family members I was trying to introduce to having websites. The family members lost interest and I needed more power for my dev site (I think this thread encouraged me to try less server power).
Now I use Runcloud’s OLS stack for all of my WP sites, still one per server. I could do the server management myself, but being able to launch a server through the RunCloud interface and have it spin it up and then be able to clone an application from an existing server AND update the DNS records in Cloudflare through its API is well worth the money spent in my opinion.
Your server specs are about the minimum I’d use for a low-traffic site, but my Woo sites typically need a lot more. I have one that uses Sensei LMS on a 32 GiB, 8 vCPU DO General Purpose droplet and could probably get by the next one down, but that makes the admin too slow for my liking even though it’s fine for end users because all the admin queries aren’t run for them. And that’s with lots of indexes added to the db to reduce query time, and the removal of the slower queries via hooks that I never look at that typically occur when you load the admin.
And just for development for another Sensei site (the one mentioned above), I’m using a 16 GiB, 4 vCPU General Purpose DO droplet because I found saving content took too long and it was taking too much of my time.
Of course, both these sites are plugin-heavy, which seems to always be the case with Woo sites that also serve as marketing sites with many automated actions thrown in. And the more plugins, the more duplicate queries, unnecessary queries, and non-optimized queries you get per page load. LiteSpeed Cache with object caching helps with duplicate queries, but S2 doesn’t support it, unfortunately.
I did try the first site using the RunCloud NGINX stack, but found that at least one plugin relied on .htaccess and the plugin’s conf file suggestion broke another plugin, so back to OLS it was. And RunCloud made changing back easy.