Building the basic server infrastructure to host a website with an associated domain name. This was a little tricky since I knew I eventually wanted to expand the capabilities of this website so I needed to create a solution that would enable that. The solution I arrived at was to purchase a VPS to host the front end of the network. This server would be registered in DNS as the main IP. This servers only responsibility is to host the website and respond to requests.
The first step was as simple as it says, I purchased the domain jainet.work and set up the correct forwarding.
Since I knew I wanted to expand the capabilities of this server by adding cloud storage, accounts and several webapps I knew that I would need SSL certificates to ensure that using the services of my network is secure and safe. I maintain a strict list of what pages and domains have SSL certificates to ensure there is no security gap in my services. The certificates are acquired through certbot.
I quickly threw together a webpage that used HTML and CSS to demonstrate basic knowledge of the two languages, and to give a quick rundown of the website. That page has since been retired in favor of this one. The current website is built with a page designer, but in the future, I intend on coding the site by hand as that will give me more control over the functionality.
Since I purchased an affordable tier of VPS, it cannot run much more than a website for medium traffic. Additionally, I already had the hardware for multiple servers but none of these machines had a public IP. My solution was to link these machines together through a VPN to enable secure connection between the machines. While this may add latency it increases security and allows for the physical machines I have to interact with users safely. By using wireguard I connected the first two machines together and intend on connecting more.
As much as I like working on this project there must be time for leisure. So of course this was the first thing I did since it was something I’ve been wanting to do since I was little. However, since I purchased an affordable tier of VPS it is not capable of hosting multiple game servers. My solution was to connect the VPS to my physical game server. Once the two machines were connected through the VPN I then bound the ports together. So in the case of Minecraft, port 25565 on the VPS is bound to 25565 on my game server. Making so that jainet.work:25565 forwards all of its traffic to the game server.
While on my main computer I have ample storage from hard drives and cloud storage through my school, I need a solution that increases the portability of my data and is not potentially going to disappear at some point. Since I work on multiple computers and especially since I’m undertaking this project I need a private solution to data storage, and version control. The solution I came up with was to make a Seafile server on my NAS. I chose Seafile as it seemed like it had everything I needed. Unfortunately, Seafile is a headache to install and get running, and is missing features present in other personal cloud solutions. Although the headache seafile caused taught me some new things. I am currently switching cloud storage software and when cloud storage is enabled it can be found at cloud.jainet.work.
I am currently working on building a machine to handle email and webapps. I have already installed the OS and am working on configuring the software. But I still need to 3D print the case for it and add it to the VPN.
I want to enable email capabilities so I can look more professional and for when I get my webapps running.
Since this website is meant for family and friends only I need to restrict access to the full functionality of network to certain people. I plan to achieve this with an account system. Not only will this restrict who can access but also demonstrate my ability to develop a functional and secure system.
I want to only allow certain pages for certain users. I know this will be tricky since Ill have to learn about sessions and cookies.
I want to enable a webapp for my personal music library.
I want to enable a webapp for my personal movie and show library.
I want to add a webapp to automate the whitelisting of players on my game servers. So if you have an account you can add yourself to the white list. This also opens the door to allow friends and family to request a specific game server and have it fulfilled automatically. The second part maybe a project in its self.
Eventually when all the important stuff is out of the way I will make a portfolio page for employers and recruiters to see. Although once I get to this point the website itself will be a portfolio.
Place holder for more webapp ideas I have