DIY NAS and Home Server / Learning to Code for Devermber 2022

This is my December2022 project I will finish (or at least get to a working state) a DIY NAS project I started based heavily on an LTT video I watched some time ago. (Video title on youtube below)

This blows away the competition - JONSBO N1 NAS Build

If there are any problems with that project, I would also like to be spending at least 1 hour a day working on learning coding. This blog will serve as the progress log for these projects.

The goal for today will be to make the first update to this blog with a full project plan with concrete measurable goals to determine project success or failure.

one additional note, I am VERY new to forums and have never posted to a forum before. I have done several hours of reading in an attempt to not completely bungle this. However, I’m sure there will be mistakes. Should anyone be so kind as to have constructive feedback I would be incredibly grateful for any provided!


a couple changes were made from the original hardware list in the above video, they are as follows.

 - Ryzen 5 5600G CPU instead of the Ryzen 3 3100
 - 64GB 32x2 corsair vengeance ddr4 instead of 16GB 8X2 g-skill rip jaws
 - The operating system currently installed is _Ubuntu Server 22.04_ instead 
   of TrueNas.
 - There is also only one 18 TB Seagate drive at the moment.

Why make these changes?

- 6 cores are better then 4 if Im going to be utilizing virtualization (I hope)
- more RAM is more better, at least if its going to be used as a caching
  layer like they mentioned in the video.
- I dont really know why I picked Ubuntu server, I guess because its relatively 
  light weight in terms of systemrequirements? And it looked hard.

The overall state of this project at the moment is that it is built, posts, the Ubuntu OS is installed, and the 1 Ethernet port on the motherboard has been configured with a static IPv4 IP address which has also been reserved in my home routers DHCP server (assigning the IP address took 8 hours to figure out, that was an adventure). When the machine is powered on and plugged into the router (all wireless is disabled in the bios because Im paranoid). I can SSH into the router from my laptop from anywhere in the apartment. This, I admit rather trivial success, is the crowning achievement of my adult life.

The plan

1. nail down the software. decide what is going to be used, if there will be
   virtualization, and how all that will fit together.
2. find out what steps need to be taken and what configurations need to 
   be applied to ensure the security of the system.
3. once the software is decided on and reasonably high level of confidence 
   in the systems security can be assumed. implement these configurations 
   through some script or code in order to facilitate easier setup and recovery 
   from inevitable catastrophic failure :smile:

supplementary objective

If there are some unforeseen circumstances that prevent the primary NAS project from being worked on then I will continue learning to code through online classes for at least 1 hour during the day.

That is all for today. If someone actually bothers to read all that word vomit you have my sincerest thanks and deepest apologies.

How did you partition? What filesystems are you using? Any encryption?

so far the boot drive is solely occupied by the default linux install so whatever partitions were created by the installer (the entire drive was used for the install). The file system I left as the default which I believe is EXT4. I have not made the effort to actually encrypt anything yet as, unfortunately, that is the subject I most likely know the least about.

That being said, it is also a subject I’m saving until later due to my perception of its overall size/scope, my strong personal interest, and my tendency to become distracted by new interesting topics. In short, Im not allowed to go too far into that rabbit hole until I really need to because its going to be a while before I come out.

At the moment my “plans” are to use ZFS as the filesystem, and to have everything encrypted. I am a little worried about how much overhead the encryption would eat up. I dont actually know if those worries are grounded or just me being ignorant of how encryption is actually implemented. It just seems like encrypting and decrypting would be additional computation needed on top of everything else. then again even if there is a perceptible impact to performance the question becomes is that performance worth the added security? probably.

wow that’s a long winded answer. I hope that answered your question, I only wish I could be more confident with my response. If there are anymore points of confusion don’t hesitate to ask!

Daily update 2022/DEC/12

Today I spent several hours reading about filesystems, Linux operating systems, and a little about RAID arrays. ZFS seems to be the best filesystem for reliability.

I also learned there is a utility for implementing ZFS on Ubuntu 22.04. this will be extremely helpful, hopefully.

No progress on the virtualization front, or the infrastructure as code front. on the bright side, this progress is the most Ive made in months and Im hungry for more.

Daily update 2022/DEC/13

Another day consisting primarily of reading and research. The research was focused on Infrastructure as code both as a practice and how to actually do it. There also seem to be a good number of tools to help with the implementation. Unfortunately for me that feels like cheating, and therefore the only logical solution will be to try and create my own DIY infrastructure as code. . . thing (abomination).

The bright side though is there will be mountains of learning done AND this gives me a more solid direction to go instead of chasing semi ethereal concepts that I dont fully understand.

my hope is that by the weekend I will be able to automate the installation process for the NAS as it exists now. In other words by the weekend I want to be able to plug in a USB stick into a machine with no OS and when everything is said and done the system will be exactly as it is now. Then any changes that I decide to make will be implemented through the coded infrastructure.

Im just now realizing Im probably going to need to sign up to Github. So Ill have to link that in a coming update.