I use a few providers based on my requirements. I.e the services server is hosted on an Azure VPS on ubuntu 16.04 due to their insanely fast I/O throughput.
The server hosting this website is an OVH vps (the highest tier) on ubuntu 14.04 because it is cheap and cheerful and they offer decent DDOS protection (We need it, some people are jerks =/)
Both above servers use Cloudflare for DNS, CDN, DDOS Mitigation and metrics.
The official shard is hosted on a dedicated server with OVH because of the same reason above on windows server.
I have not used a shared host in many years so could not really give a decent recommendation there. I would only suggest getting a vps and learning how to manage it. It's not that hard for a low traffic server.