What is the Cloud and how can I use it?

Prior to about 1993, computer applications were always loaded on the computer that you were using. If you were working at a large company, it was more likely that you ran a program on your desktop computer at work that connected to a database or other program in their data center. This arrangement was called a client/server connection.

Fast forward to today and you now hear about programs that all run in the cloud. A program in the cloud is normally a program that you can access via your web browser and is not locally hosted or installed on your computer. In the simplest form your bank website is in the cloud as are sites like Amazon.com, Walmart.com, and others.

Sometimes a cloud site offers a particular connectivity service. Examples of this might be Netflix to play movies at home, an Amazon Echo device connecting to Amazon to provide you information or home control, Chamberlain MyQ to offer control over your garage doors, Wyze to offer cloud storage for security cameras, Nest to control your thermostat remotely and many many others.

Some cloud services offer you a service for free, like gmail for e-mail, dropbox for file storage, or the Microsoft or Apple App stores. With most cloud services you have recurring monthly or yearly charges. Most security cameras charge for Web based storage like Nest cams. Streaming video services like Amazon Prime, Netflix, Hulu, Apple TV, YouTube TV and many others charge for their services. Most passworrd managers have paid plans for their premium features. Cloud based file storage like Dropbox, Google Drive, Microsoft OneDrive and Apple iCloud give you some storage for free but then charge you for more storage. In addition, Microsoft has Office 365, which is effectively Office in the cloud and now even Windows 365 which is Windows in the cloud.

All the services above are referred to as Public Cloud because they reside on the Internet in some data center somewhere and are available to the public and many of them incur cost. If a Public Cloud service is free, such as many Amazon or Google services, it is highly likely that the cloud provider is gathering or selling marketing data about what you are doing in exchange for the service that they are providing.

There is also the concept of Private Cloud. Private cloud services are also referred to as self-hosted applications and they provide the same type of utility as Public Cloud, but you are running and maintaining these applications yourself.

Private cloud services can be run inside your network on your own system or they can be run on a hosting service such as Amazon AWS, Microsoft Azure, Oracle OCS, Digital Ocean, Linode and many others.

Hosting services charge for the use of computing resources in the cloud that you use to host you application. These charges vary from a minimum of about $5 a month to typically $50 a month and more. The best part about using a hosting service is that you don’t have to worry about power outages, network outages or obsolete equipment since these services provide highly available services.

The downside to a hosting service is obviously the cost. I have about thirty hosted applications on my private cloud in my home. Private cloud generally means having computers on your own network that support providing these services either to multiple computers inside your home or to other people outside your home.

To implement private cloud, you either use a dedicated desktop computer or a Network Attached Storage (NAS) server that has sufficient software and power for hosting. Popular NAS devices that support self-hosting are sold by QNAP and Synology.

We tend to think of NAS devices as providing shared storage, but most also can provide virtual machines, LXC containers and Docker containers which are all the logicial equivalent of what hosting services provide. The advantage is that once you own your own computer or NAS, you don’t have any recurring charges to use it.

We all have an Internet Service Provider (ISP) that provides us home internet service. The majority of home internet users use their connection in the outbound direction. If you are “self-hosting” then other people can connect to the service that you are offering inside of your home. The simplest self-hosted example would be to self host a website.

To be able to self host, you need a few things:

  1. A computer or NAS that will run the program you want to self-host 24/7
  2. Your own Domain Name unique to you (mine is scottibyte.com and costs me $12 a year)
  3. Define a Dynamic DNS name (DDNS) for your domain that changes when your ISP changes your address.
  4. A CNAME DNS record for each hosted application that you want people to access.
  5. An idea of what type of site that you want to host.
  6. A hosted Instance of NginX Proxy Manager which I describe in: What is NginX Proxy Manager

Your ISP provides you one changing public IPv4 address for your router that is effectively the address of your Internet connection on the Internet. Item #3 above takes care of adjusting the fact that the address the ISP gives you may change.

The NginX Proxy Manager that I link above to my other article is a self hosted program that allows you to use that one ISP provided internet address to host as many separate sefl-hosted programs as you like. This works by NginX Proxy Manager effectively sitting at your router and listening for connection requests by name and sending them to the appropriate server inside your network that hosts that named service.

What types of services do I host in my private cloud? Here’s a list:

  1. Bitwarden – Bitwarden is a self-hosted password manager
  2. CameraImageServer - This is a web server that records still frames off one of my cameras when motion is detected and stores these frames as an event
  3. CATT Casting Server - This is inside my network only and provides a way of remote controlling my Google Chromecast display
  4. Community phpBB - This is one of my public bulletin board servers offered at https://community.scottibyte.com,
  5. Dark-Web - This is another phpBB server offered at the dark web address 5kxymuorerk6luzq7lsepfvd6wrymgtsxx3orwlyttumrtsb4xoil6yd.onion
  6. Discourse - This is my Discourse server on which this article is hosted at https://discussion.scottibyte.com
  7. Draw.io - A network based drawing program that I self host at https://draw.scottibyte.com
  8. Guacamole - Apache Guacamole is a program that supports connecting to other servers in my network easily via a web page…
  9. HarmonyHubAPI - This is hosted inside my network and provides extended control over my Logitech Harmony Hub remote controls
  10. Heimdall - This provides me my own web based network menu of any websites that I choose whereby any computer on my network can connect to.
  11. Jellyfin - This is a server that allows the viewing of all Houston local broadcast TV channels via my network based digital tuner and attic antenna
  12. Jitsi - My Self-Hosted conference server similiar to Zoom but more secure
  13. MeshCentral - A Monitoring and remote control program for the computers on my network
  14. Monocle Gateway - A Server that makes my cameras viewable on Amazon Echo Shows and Fire TV Sticks which normally would not support this.
  15. NextCloud - A self-hosted server for friends and family supporting file storage, calendar, contacts, email, chat and other functions.
  16. NginX Proxy Manager - The reverse proxy manager described above that points to all my services and also manages my self signed SSL security certificates.
  17. OnlyOffice - This is a server that provides NextCloud web-based versions of editing programs compatible with Microsoft Word, Excel, and Powerpoint.
  18. OpenSpeedTest - My internally hosted speed test to measure speeds inside my network.
  19. Pi-Hole - I have two instances of Pi-hole. Pi-hole is a network wide advertisement and malware site blocker.
  20. PublicIPProxy - This is an internal web server that I use for tracking my Internet connection
  21. Remotely - A hosted program that I can use to provide remote control support to friends or family needing help on their computers
  22. Shinobi - A web based program consolidating all of my security cameras for viewing.
  23. Unbound - A server providing a validating, recursive, caching domain name resolver that I have linked to my Pi-Hole. Unbound allows my network to bypass Google and other DNS providers and use the root domain authority to find websites thus assuring complete privacy.
  24. Webhome - The server that provides my website at https://www/scottibyte.com
  25. Whiteboard - A publically hosted whiteboard editor at https://whiteboard.scottibyte.com
  26. Whoogle-search - A hosted search engine that ties into Google and bypasses Google’s ability to log my search information
  27. youTransfer - My Secure File Transfer protocol allowing any two users on the net to send even large files securely hosted at https://files.scottibyte.com
  28. Zulip - My self-hosted realtime chat server https://zulip.scottibyte.com
  29. Plex - My Plex media server for my Movies, TV Shows, music, and pictures served to my family.
  30. Tautulli - My Web based statistics server for Plex.
  31. Joplin - An Opensource free version of Evernotes that syncs to my Nextcloud server.
  32. SyncThing - An opensource realtime folder replicator/backup service that syncs important folders to my NAS with versioning.

Even if I only paid $10 a month to host 30 of these on a hosting service, it would cost me $300 a month or $3600 a year. So, the return on investment for buying a good NAS that offers container virtualization to do the above is worth the savings.

Here is an example of my Network based Heimdall application menu mentioned above.
image
Here is an example of my Nextcloud server main screen.
image
Here is an example of editing a document in Nextcloud using the OnlyOffice equivalent of Microsoft Word.
image
Here is what my Jellyfin server looks like that uses my network tuner for over the air broadcasts using my attic antenna.
image
My Secure File Transfer Portal allowing any two users to send even large files securely over the net completely encrypted.
image
Finally, my website.
image

In summary, the point is that self-hosting is a viable option to increase your privacy, be in control of your data and to cost effectively have services that you, your friends or family can use from anywhere.