If we simplify the "cloud computing" concept to its most basic form, we could say that:
Cloud computing is nothing more than to be able to run applications and access data from a computer (server) in one place from another place through the internet (with a web browser or an application developed to be used as the "front end", though impractical, possible).
So my question is, what do I need to do to be able to run programs and access data in my server machine at home from anywhere on the world? (just one user so I think no virtualization would be required)
I don't want to become a cloud computing expert by a question in StackExchange, just fully understand the principles behind cloud computing and possibly configure my own cloud at home.
Please do not recommend things like AWS, Azure, Dropbox, google drive, etc. I'm not trying to use cloud file storage or cloud services from 3rd parties. I'm trying to understand how cloud computing works not looking for recommendations on 3rd party solutions.
I have some understanding of front-end and back-end development so I could write my own very basic and reduced versions of dropbox and/or whatever is needed to access files and run applications, I just don't know what else would be needed to create a cloud at home that fulfills the definition of "cloud computing" as complete as possible. For this exercise, the applications I want to run are C and C++ applications on my home server.
32 Answers
Not comparable
The definition of cloud seems to be evolving into a subjective view. It seems what are wanting is, a remote machine that I can access anywhere in the world that has my files on it.
From my position, you can't create a cloud at home but you can setup a workstation that you can access from anywhere that has your files on it.
The real idea behind the cloud is virtualization. A substrate of hardware consisting of compute, storage and newtork that advertises that hardware to advertise a platform to create custom virtual solutions. The way in which this hardware is configured and advertised for use makes a comparable home solution out of financial reach. Clouds from providers have built in a considerable amount of fault tolerance. The tolerance to faults is essentially the ability to have hardware fail (fault) in the substrate of the platform and have the platform continue to function as normal. That essentially means that there are multiple switches, routers, servers and storage devices advertising the platform so it can experience multiple hardware failures and continue to function.
Essentially, what you are wanting is a PC on the internet with your data on it that you can access from any Internet connection. That's a big difference.
To accomplish that access:
Enable Remote Access on your PC/Server
- RDP (Remote Desktop Protocol is built into Windows Operating Systems
- RDP uses port 3389
Log into your home router
- Create a TCP rule for your home machine
- Map your Public IP address to your Private IP Address, make note of your public IP address
- Your private IP address is the IP on your home machine
- Save the configuration
- Test the configuration.
- From an Internet connection other your home, open the Remote Desktop Client, put the public IP address in the available field and try and connect to the home machine.
There are other issue to take under consideration such as security and availability of the home machine. I can say that I would NOT do this for multiple reasons. I prefer the commercial tools and features for security of a vetted cloud solution.
1Have a broadband connection
Setup a dynamic DNS so you can reach your home server by DNS and not by a constantly changing residential ISP
Have a server (always on computer) running applications connected to your ISP facing router
The traditional LAMP stack has numerous open-source applications for cloud use
Your applications will likely be delivered via HTTPS. This is 2019, don't use HTTP. Configure and install a Lets Encrypt certificate.
Non HTTP applications should be secured with encryption and certificates.
Configure and harden server appropriately against security and drive-failure issues
Port forward appropriate ports from your ISP-facing router to your server
Harden router configuration to prevent attackers from interfering with your applications or home Internet