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.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cf2ce2b6-7beb-4cbc-ab69-b4dba877ef60/Untitled.png

Thanks for the 4 years of service! Now it's time to retire.

General Architecture

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.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6d35e0c-c543-417c-a397-e1d90eaf6563/azaky-io-arch.jpg

The general architecture looks like this. Pretty simple, but it caters my needs.

Powered by Fruition