I am trying to build a web application for a local community. I'd like to host a postgres database, a SSR frontend server, a REST backend server. The internet and electricity are pretty cheap here and I have a PC lying around. I have a few hard disks and I can raid them for redundancy. A similar spec AWS machine comes out to 170 USD and I think I can do much cheaper than that. I don't expect the application to scale to any level for the forseeable future (50 concurrent users max, same region). The only problem is that I don't have a static IP. IPv6 routing is not prevalent in my area. I can go for simpler BaaS but I want to learn as well.
I have a server on linode (single shared core, 1 GB RAM) with a static IPv4. How can I host everything on my local machine (maybe multiple KVM machines) and serve everything to people?
I have used this script to setup wireguard servers before. Can I use something like `nginx? Are there alternatives? How will my whole setup look like? If I were to use separate virtual machines for frontend, backend and database, how should I network them?
I understand there are many ways to approach this problem, I'm trying to get a feel of "if I can do it". I'd be happy if I can host my own server.