For the past few days, i've been trying to set up a FastAPI & Uvicorn server on my Windows machine (although the main idea is to set it up on an old Android device that i dont use anymore.)
The server (in both my android and my pc) can be reached by any machine in my local network. The problem comes when I try to access it through my public IP. So far I have done everything i can think of to try solv it:

Port forwarding TCP port 8000 (and others) to my PC's and Android's IP.
Allow incoming and outgoing connections in Windows's Firewall (not sure how to do this in Android though)

Some things to have in mind:

I don't want to host the server in the cloud as it needs to interact with local devices. For example, to send WOL packages to my laptop.
I have tried to use reverse proxy services like Ngrok, but the link changes every X amount of time, so it's not reliable enough.
My android device,which is a Sony E2053, currently runs rooted 4.4.4 kitkat, without the possibility to install a custom ROM (locked bootloader).

I barely have knowledge about networking so I'm really messed up with this. Any help is aprecciated.
This question is way to broad for StackOverflow, and is highly dependent on the specifics of your situation. However, to get you going here is a highlevel overview of how it would normally work.
Situation: you have a house, in which there is a internet connection to which your computer is connected. There are two networks at play: your internal network (LAN) and your internet (WAN). Your modem/router connects these two networks together. Your computer has a internal IP (10.x.x.x or 192.x.x.x typically), so has your modem/router. Your modem/router also has a public IP address. You can find that public IP when going to websites as whatismyip.com.
In order for your local computer to be reachable via the internet, you need to forward the traffic meant for you computer to your computer on your modemrouter. Typically this is done by portforwarding on the modemrouter. On your modemrouter there would be a setting that let you forward all incoming traffic on port 8000 to :8000.
Then, when you ar eon the internet and browse to :8000, the request is forwarded to your computer and returned to you over the internet.
However, since you are very novice at this stuff, I would HIGHLY advise against such setup. The internet is a scary place and opening yourself up to attack is never a good idea.
FastAPI Server is not accessible from the internet