I always thought every developer needs to have their own VPS. I created one about 4 years ago, when I just graduated college and got my first full time job. Even though I did not use it that often, it was still essential for me to have some remote machine ready at any given time. It let me run anything, especially long-running jobs or something which needed high bandwidth. It also enabled my apps to be accessed via my own domain with minimal setup.
I used DigitalOcean for my VPS, but for no particular reason. I could always spin up new short-lived instances for more CPU/RAM demanding tasks, so until now the single droplet of the lowest spec (1 GB RAM/1 CPU/25 GB disk) was enough to cater my VPS needs.
I decided to migrate my VPS to a new one for the following reasons.
I took this opportunity to document every step along the way, to learn what works and what doesn't, and so I could replicate the same process easily in the future. And I decided to share it here as well.
Thanks for the 4 years of service! Now it's time to retire.
One of my objectives was to conceal the droplet's IP. I decided to hide my server behind Cloudflare. I also put a lot of things at once in my VPS, and I used Nginx reverse proxy to redirect the traffic to the appropriate port by subdomain or path.
The general architecture looks like this. Pretty simple, but it caters my needs.