My Journey with Remote Machines
You really need the will power to not give up

The Need
DISCLAIMER: - I have never learnt any dev language to date, and yet I have taught myself all of this
I had been pining for a VPS or a RaspberryPi machine for about 2.5-3 years in 2019 but I never actually dared to buy either because 1) I'm broke and they cost a lot of money, 2) it wasn't worth the effort to set them up and use them for my prototype purposes.
I came across the Google Cloud free tier and before realising that it wasn't a long-term solution but just for one year, I availed the free trial. I learnt that the type of remote machines I was looking for were called "instances" and that they barely had enough RAM to even run a Minecraft Bedrock Server. Regardless, I tried setting one up and it worked for a while - until I purposely tried to push its limits by flying to the ends of the map until the server couldn't keep up. That crashed the server and the instance along with it, to the point where I couldn't even ssh into it. This caused a hassle of a hard reboot and I slowly realised this was not the solution I was looking for because 1) it ran out in a year, 2) did not provide enough resources (512MB RAM) in the always-free tier.
So I started researching cheap VPSs as one does and found out about the always free tier of Oracle Cloud that was too good to believe. Mind you, all of this was before even knew how to work headless linux (Ubuntu), configure PuTTY or how the system of ssh worked at all. I signed up for it, got access to two 1GB RAM instances and within the span of a week taught myself to generate keys with PuTTY-gen along with using the keys to ssh into the machines. When I finally got access to the machines, I had to learn the basics of linux (like mkdir, rm, mv, cp, apt install etc.) from scratch. This took a while because I had only used them in the google cloud instances and I had already forgotten about most commands (at this point the commands are like the back of my hand). I learnt how to use nano, how to sparingly use sudo and stuff like that and my entire motivation for all of this had been to host my own Minecraft Server because Realms had not been out yet and using free hosting providers was a pain in the ass.
After I finally got used to it, I realised the network configurations worked very differently on Oracle Cloud because the machine was not opened up from the get-go and I did not know anything about internet protocols, ports, IP addresses or connections more than the average Joe. So even though I had a server running, I had no way to access it. It took me another week to figure out that I needed to allow ingress to the machine from the Oracle Cloud dashboard and also open up the machine ports through ufw to be able to access it. This finally resulted in my 1st breakthrough - my server was finally stable and accessible!
The Learning Curve
Oh man, troubleshooting programs you know nothing about teaches you the most about error handling. Of course, a couple of months after the Minecraft Server had been hosted I shut it down because I wasn't using it all that much and had instead started focusing on finding self-host solutions to problems I was having myself, the most pressing of which at that time was to find a password manager. Naturally, I came across Bitwarden because it was a no-brainer for my use case and I tried to set it up with docker. Little did I know that the official docker container was waaaaay above my instance's pay grade and it would never be able to run it. This caused a ton of problems because I kept trying to solve errors the console threw at me without realising that in the end, it wouldn't matter. After about 2 weeks I realised what was happening, refreshed the instance and used the Rust fork of Bitwarden called Vaultwarden (it was called bitwarde_rs then) as my docker container, and of course it worked like a charm. This was my second big breakthrough because I finally had premium Bitwarden features out my own labour and the Orcale Cloud free tier.
This bolstered my curiosity for self-hosting stuff and I experimented with hosting many other things like a transfer.sh instance, a URL shortner, two different temp file sharing services, an ArchiSteamFarm instance, a seedbox powered by qBittorrent, a Forum powered by Discourse and many other such things. This endeavour of mine taught me more than any one guide, walkthrough or YouTube video could have ever taught me. I learnt the idiosyncracies of Linux, of Ubuntu and the internet in general. I learnt how websites worked, how Ip addresses worked, how ports worked, how port forwarding worked, how reverse-proxies worked, how applications attached to ports and how building production environments with stuff like npm worked. This was a steep learning curve that I climbed within 6-7 months through these hobbies of mine.
As they say, doing the work yourself teaches you the ins-and-outs and that is exactly what happened with my experience to the point where setting up a service and a reverse proxy to access it from a subdomain of mine became second nature.
The Present
I recently undertook the project of turning my old OnePlus 5 (a beast for performance) into a Linux machine without root through AnLinux and Termux and I can proudly say that I have accomplished the same and I use it as a seedbox along with my PaperMC server for Minecraft. I run a Vaultwarden server for myself here and a couple of other things that I cannot share that are valuable and useful to me. How I did this specifically will be covered in another post that I shall be writing soon, so stay tuned for that. This has been a journey and I hope I never reach the horizon with this hobby of mine.





