Off late, just after Google backstabbed us by breaking their promise with Google Photos Unlimited backup storage, I started to tinker with various self hosted solutions to take advantage of the super fast fiber optics home broadband internet options.
Couple of years earlier, it wasn't feasible or technically practical to think about running an Internet enabled Home Server.
However, present broadband Internet penetration is excellent, specially with these no data cap, fiber to home connections, we have plenty of bandwidth to host our own cloud server right at home.
Did some tinkering and surprisingly I was able to build a home server for FREE & that too, very easily.
Few important points to note,
- No coding knowledge needed, anyone who can read English and know basic copy paste and enter key operation can do it. Just find the right tutorial with step by step guide.
- Every piece of software is open source and FREE.
- Old and rejected PC / Laptop hardware can be repurposed for building this Home Server. 13/14 year old Intel Core 2 Duo systems work just fine.
The setup I am running
NextCloud Home Server -> nextcloud.com
Internet Setup Over View,
I have a fiber to home local cable broadband with 250 mbps unlimited (no data cap) up / down connection. I can push it up to 500 or even 1 gbps if I choose to pay for higher monthly plan.
My Internet setup is a standard household setup, Fiber comes to ONU and that offers a Gigabit LAN cable out to my Wireless Router. My router further distributes the connection to all the connected devices.
Nothing special or fancy, as you may see, it's just like any other standard Indian House Hold.
Server Hardware Choice
I had the option to choose an old Intel Core i5 (first Generation) PC however, I opted for an old low powered laptop to save electricity in longer run since it would be running 24x7x365
Very Basic hardware, too weak for Windows 10 or 11 operation but Linux and server side operations run just fine (home use purpose).
Intel Pentium N3530 (Quad Core but very low powered CPU)
4GB DDR3L (Low powered modules)
1TB 5400 RPM HDD
Gigabit LAN Port (Connected to my router using CAT 6E Gigabit Ethernet)
Software Over View
Ubuntu + NextCloud (Snap) + OpenVPN (AWS Free tire EC2)
One of the major problem with most of the Indian ISP's are CG NAT. Our home CPE (like my fiber ONU) doesn't get Public IP Address. So without public IP address, the server can't be accessed from Internet.
To bypass this limitation, I am using an AWS always free tire Virtual Server. That get's a public IP and I am connecting my NextCloud Server using a VPN tunnel. Now when I am forwarding (AWS VPS) all incoming traffic of port 80/443 via VPN, anyone accessing the AWS VPS Public Static IP will end up landing at my home server.
Both AWS and my Home Server is running Ubuntu Server 20 LTS and they are connected together using OpenVPN.
Now at my home server, I am using NextCloud Snap installation, so its just one single command to install the entire stack (Web Server, DB Server, Apps and so on) on my Laptop Home Server. Along with couple of more commands (just copy pasting job to run those commands) to setup security / encryption and such.
And that is it.
NextCloud
Complete Backup and cloud storage solution. Comes with its own iOS / Android app for auto backup (just like Google Photos or G Drive). Not everyone needs everything, so just activate / install what you need using NextCloud Web Interface.
Done.
Once setup process is complete, it will run untouched. Just keep on using it.
NextCloud allows end to end encryption so not even the server admins can view the contents of other users. Extremely security and privacy oriented setup.
Here is my setup. Home server is running flawlessly, none stop, without any reboot or interruption. It's always available, data can be accessed, used, transferred from anywhere in the world at any time.
Not only me, my friends and family too use this server for their backup purpose, mainly as an alternative to Google Photos and Cloud Storage.
Caveat
There are two negatives of my personal setup.
1. My choice of CPU is very weak. So at most it can handle 3 simultaneous users doing heavy upload / download. Beyond that, CPU struggles to keep up and transfer speeds suffer. However, being a home server, I don't see all users are online always and pushing the CPU, so I selected this ultra low powered system to save on electricity bills.
Here is one such example at the time of onboarding when multiple users were doing their initial rounds of full backup.
2. My choice of a laptop platform, eliminates the option for a RAID setup for data safety. I have to use manual snap backup command to generate the backup and push it to my desktop HDD via my internal network. Easy one command job but have to do it once a week to ensure data safety (in case the laptop or HDD fails)
Conclusion
It was really easy to setup. Just finding the right tutorials and simple copy paste job.
Rather than making e-waste, I get to reuse and repurpose my old computers and have complete freedom from all these data mining companies and their monthly fees
Its been 3/4 months since I am running this setup and many friends are coming onboard after liking this setup. We are now thinking of making a pool to arrange for more powerful hardware and share the electricity / internet (higher speed) bills for the project.
Thanks.
P.S.
Here is my Internet enabled NextCloud Home Server located at a corner of my storage room. Gathering some surface dust (last cleaned it a month ago), but working flawlessly.
I forgot to add this image, so mods, kindly merge the post.
Thanks.