What's Self-hosted ?
Self-hosting is the practice of locally hosting and managing applications instead of renting from SaaSS providers.
Ever wondered what if you had your own netflix ? or E-book Store/library ? well with the help of Awesome self-hosted Open source software you now can.
So without further a do let's get started.
What you need before you get started ?
- A PC / Rackserver / Workstation [Atleast 16GB of Ram]
- Moderate understanding of Computers and Networking
- Internet Connection to download various FOSS
- Client Devices Mobile & PC to test it out
Preparing The System Ready for use as a server
If you have a old PC (not too old) that has no use at the moment, well get it Install a Hypervisor on to it such as Proxmox or install Unraid.
Your first Self host - Productivity Platform and Cloud Storage
Thinking about ditching Google suite or looking for a Dropbox replacement? Are you ready to self host your own productivity platform? Well, Nextcloud may be for you!
Proxmox(Virtualize) or Unraid(Containerize)
Containers provide a lightweight alternative to virtual machines (VMs). A container isolates your application from wherever you are running it. You install only what you need to run your application and nothing more. Containers allow developers to work with identical dev environments and stacks. You can also develop directly in a container as it gives you a separate network stack and storage without the overhead of building and running a virtual machine. In addition, containers facilitate continuous integration and delivery processes, and encourage the use of stateless designs.
The VM also can be used in same manner as container, but VMs have several significant drawbacks. The most critical one is that virtualization has an overhead; no matter how thin the operating system (OS) of the guest deployed, you still need to fully copy that OS and its entire configuration when establishing a new VM. Containers run their own init processes, filesystems and network stacks, which are virtualized on top of the VM or a baremetal host OS. By their nature, containers use less memory than VMs. This is due to the fact that they inherently share the OS kernel and, in most cases, they also use the same identical libraries.
The Virtualization Overhead
A hypervisor is used to share the hardware infrastructure, allowing multiple tenants, isolated VMs to be run on the same physical machine. A VM emulates a computer system based on computer architectures, and provides the functionality of a physical computer. This allows higher utilization of the underlying physical machine. In comparison, a bare metal server is a single tenant, which means that there is no resource sharing and the available CPU and RAM are dedicated to your processes.
The reported overhead using, for example, Hyper-V is between 9-12%, which means that a guest operating system under Hyper-V typically starts at 88-91% of the CPU available. The memory overhead when the running operating system under Hyper-V was observed to be around 340 MB of main memory. Naturally, running a process on a guest operating system might suffer from lack of resources and performs less efficiently than running the same process directly on a host (physical server) operating system.
Considering this virtualization overhead, the way containers work and their benefits prompt us to check the option to run containers directly on hosts.
Should I just Bare-metal it ?
If it has a critical application in your network then "YES"
For Example if you wanted to make your own router then you could do so with pfsense Since it will be responsible for connectivity to the internet which is very essential we want it to have dedicated resources.
On the other hand if its something like a DNS or DHCP server, then you can get away with Containerization
This was a demo post, More to come soon
This post will be removed once my original content is live