Roadmap

Building essential hardware infrastructure - Complete

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.   

Acquire domain and set up website with SSL certificates - Complete

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.

Establish secure connection between machines  - Complete

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.

Enable public access of game servers  - Complete

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.

Enable file sharing capabilities  - In Progress

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.

Expand and upgrade hardware  - In progress

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.

Enable email capabilities  - In queue

I want to enable email capabilities so I can look more professional and for when I get my webapps running.

Build account and authentication systems - In queue

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.

Implement account system to website - In queue

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.

Add webapp for music libraires - In queue

I want to enable a webapp for my personal music library.

Add webapp for video libraires - In queue

I want to enable a webapp for my personal movie and show library.

Add webapp for game server authentication - In queue

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.

Add portfolio page​ - In queue

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.

Add ​miscellaneous webapps​ - In queue

Place holder for more webapp ideas I have