{"id":2524,"date":"2024-02-29T17:47:17","date_gmt":"2024-02-29T23:47:17","guid":{"rendered":"https:\/\/mrguitar.net\/?p=2524"},"modified":"2024-03-01T13:05:22","modified_gmt":"2024-03-01T19:05:22","slug":"refreshing-my-home-server-nas","status":"publish","type":"post","link":"https:\/\/mrguitar.net\/?p=2524","title":{"rendered":"Refreshing my Home Server\/NAS"},"content":{"rendered":"\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f3246ad874e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f3246ad874e\" class=\"wp-block-image size-medium is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"226\" height=\"300\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694-226x300.jpg\" alt=\"\" class=\"wp-image-2527\" style=\"width:600px\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694-226x300.jpg 226w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694-771x1024.jpg 771w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694-768x1020.jpg 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694-1157x1536.jpg 1157w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240225_012718694.jpg 1506w\" sizes=\"auto, (max-width: 226px) 100vw, 226px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">This is the &#8220;after&#8221; &#8230;.I always forget to take the before shot!<\/figcaption><\/figure>\n\n\n\n<p>I&#8217;ve been running a little home server for probably close to twenty years. Originally, it was driven by my desire to learn Linux and run a whole-home <a href=\"https:\/\/mrguitar.net\/?p=120\" target=\"_blank\" rel=\"noreferrer noopener\">MythTV setup<\/a>. I still think that was an amazing setup for the time, but of course things change and broadcast TV just isn&#8217;t what it used to be. About five years ago, I decommissioned my server and moved my media library to a <a href=\"https:\/\/kobol.io\/helios4\/\" target=\"_blank\" rel=\"noreferrer noopener\">Helios4<\/a> by Kobol. My media frontends are now mainly built into our TVs, Fire TVs, or phones\/tablets. The NAS was definitely a cool unit and helped my electric bill some, but ultimately the performance left a lot to be desired. &#8230;.using it for ostree commits the past few years was painful.  <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>My work has me in the situation where I need a fast local container registry. Given the performance of the Helios4 and that two of the hard drives are from 2007 &#8230;&#8230;uh yeah let&#8217;s get that &#8220;spinning rust&#8221; out of here. Rather than waste hours, days, months, etc researching what to buy, I stumbled across Brian C Moses&#8217;s site, specifically <a href=\"https:\/\/blog.briancmoses.com\/2023\/03\/diy-nas-2023-edition.html\" data-type=\"link\" data-id=\"https:\/\/blog.briancmoses.com\/2023\/03\/diy-nas-2023-edition.html\">this post<\/a>. It&#8217;s a small world because he lives about ~25min from me. He imports these <a href=\"https:\/\/www.ebay.com\/itm\/126259718077?var=427286010609\" target=\"_blank\" rel=\"noreferrer noopener\">Topton n6005 systems<\/a> and they seem about perfect for what I need.  I was initially going to <a href=\"https:\/\/modcase.com.au\/products\/nas\" data-type=\"link\" data-id=\"https:\/\/modcase.com.au\/products\/nas\" target=\"_blank\" rel=\"noreferrer noopener\">print this case<\/a>, but I decided it against it as I have a perfectly good Antech case collecting dust and I couldn&#8217;t tell how well the vertical design the 3d print would work with my setup pictured above.<\/p>\n\n\n\n<p>It&#8217;s only been running for a few days, but I&#8217;m so pleased with the results I thought I would document this. &#8230;plus I haven&#8217;t written a blog post in a long time and I should do this more often.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Topton Mini-ITX NAS Motherboard w\/ Jasper Lake Intel\u00ae Pentium\u00ae Silver N6005 Processor (Base: 2.00 GHz, Burst 3.30 GHz, TDP: 10W)<\/li>\n\n\n\n<li>64G memory (you only live once right?!)<\/li>\n\n\n\n<li>4TB flash (non-raid, 2x NVME, 1x SATA)<\/li>\n\n\n\n<li>16TB Raid 1 mirror (2x 16T SATA HDDs)<\/li>\n\n\n\n<li>Existing power supply and case<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2500\" height=\"2001\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3.jpg\" alt=\"\" class=\"wp-image-2542\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3.jpg 2500w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3-300x240.jpg 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3-1024x820.jpg 1024w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3-768x615.jpg 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3-1536x1229.jpg 1536w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/PXL_20240223_182508506-3-2048x1639.jpg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">A Texas sized case for a non-Texas sized mobo! <\/figcaption><\/figure>\n\n\n\n<p>Honestly, there&#8217;s nothing super exciting here, but it&#8217;s a huge step forward in the performance and efficiency side. I have some external drives for back ups, and I mainly want to protect against one of these 16TB drives failing. I&#8217;ve had a ton of luck using software RAID with Linux over the years and this is the basic level of resiliency that makes sense for what I need. Oh and I used my p-touch labeler to mark the port number that each sata cable is in. This should make it a little easier to swap drives or add new one drives to those two red cables. &#8230;thanks for that, OCD!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<p>I grabbed the latest version of Fedora and I have to say I was pretty blown away. Yes, I use Fedora every day since FC4, but I&#8217;m also at a point where I&#8217;m not setting up servers from scratch very often. This was a great reminder for just how far we&#8217;ve come in the Linux world and how user friendly things can be. &#8230;.oh there are plenty of cool things that will trickle into the next <strong>enterprise release<\/strong> soon enough! :) Basically I have a minimal install that self updates using dnf-automatic, 1 mirror, a handful of disks, some LVM volumes, and everything else is running as containers via Podman. If you haven&#8217;t looked at Podman in a while, now is the time to get up to speed with using <a href=\"https:\/\/docs.podman.io\/en\/latest\/markdown\/podman-systemd.unit.5.html\" data-type=\"link\" data-id=\"https:\/\/docs.podman.io\/en\/latest\/markdown\/podman-systemd.unit.5.html\" target=\"_blank\" rel=\"noreferrer noopener\">quadlets<\/a> to define your containers (bonus points for using auto-update), and I took full advantage of that. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/podman-1024x501.png\" alt=\"\" class=\"wp-image-2548\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/podman-1024x501.png 1024w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/podman-300x147.png 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/podman-768x375.png 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/podman.png 1119w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">Hey that&#8217;s not very many containers! &#8230;don&#8217;t worry more are coming!<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">phpsysinfo -&gt; cockpit<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"745\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/cockpit-1024x745.png\" alt=\"\" class=\"wp-image-2535\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/cockpit-1024x745.png 1024w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/cockpit-300x218.png 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/cockpit-768x559.png 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/cockpit.png 1106w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">It&#8217;s everything you want to know at a glance and nothing more. &#8230;.oh and you can click stuff and do things!!<\/figcaption><\/figure>\n\n\n\n<p>I&#8217;ve been a fan of cockpit for years. While I use cockpit regularly, I haven&#8217;t actually used it to setup a &#8220;system of record&#8221; in some time. Holy crap it&#8217;s amazing to see the progress that&#8217;s been made. There are a lot of utilities and commands in Linux that, while I feel I know them and have used them for years, I still find myself googling as I don&#8217;t use these commands with enough regularity to retain the intricacies. I&#8217;m a fan and have no use to mess with <a href=\"https:\/\/phpsysinfo.sourceforge.io\/multi\/index.php?disp=static\" data-type=\"link\" data-id=\"https:\/\/phpsysinfo.sourceforge.io\/multi\/index.php?disp=static\" target=\"_blank\" rel=\"noreferrer noopener\">phpsysinfo anymore<\/a>! &#8230;although it served me well for a long time. <\/p>\n\n\n\n<p> MythTV, Jinzora, Kplaylist -&gt; Jellyfin<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24-1024x576.png\" alt=\"\" class=\"wp-image-2536\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24-1024x576.png 1024w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24-300x169.png 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24-768x432.png 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24-1536x864.png 1536w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-09-24.png 1920w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>I&#8217;ll always have a soft spot for MythTV, but jellyfin fits much better with what I need these days. I haven&#8217;t been running it very long yet, but I was amazed with how easy it is to setup. I much prefer the idea of setting up a backend and my clients just work. I still really like Kodi, but I do not enough maintaining it on multiple clients. My new server also does a great job transcoding videos on the fly to any of our TVs, phones, etc. I actually didn&#8217;t factor that in when I was spec&#8217;ing the hardware. Also, I used to have <a href=\"https:\/\/github.com\/jinzora\/jinzora3\" data-type=\"link\" data-id=\"https:\/\/github.com\/jinzora\/jinzora3\" target=\"_blank\" rel=\"noreferrer noopener\">Jinzora<\/a> and <a href=\"http:\/\/kplaylist.com\/\" data-type=\"link\" data-id=\"http:\/\/kplaylist.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">kplaylist<\/a> hanging around for streaming and downloading music to my phone. These projects were pretty mind blowing for their time, but they haven&#8217;t aged very well. I did not expect jellyfin to handle my large music collection, but holy crap it does. Also, their android app is amazing. So this was huge win and the<a href=\"https:\/\/jellyfin.org\/docs\/general\/installation\/container\/#podman\" data-type=\"link\" data-id=\"https:\/\/jellyfin.org\/docs\/general\/installation\/container\/#podman\" target=\"_blank\" rel=\"noreferrer noopener\"> podman documentation<\/a> is *perfect*!  Oh and my old HDhomerun tuner &#8220;just works&#8221; too. <\/p>\n\n\n\n<p>Pro tip: The HDHR-3US will negotiate random high UDP ports so I just added the source IP to the trusted zone for my server and poof, it works! <code>firewall-cmd --zone=trusted --add-source=[tuner IP in CIDR] --permanent<\/code> <\/p>\n\n\n\n<p>Now any client gets broadcast TV. &#8230;not there&#8217;s anything worth watching but next time there&#8217;s a tornado, we cat watch the weather in the bathroom as a family! <\/p>\n\n\n\n<p>httpd -&gt; Caddy<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a-300x300.png\" alt=\"\" class=\"wp-image-2543\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a-300x300.png 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a-150x150.png 150w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a-768x768.png 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a-100x100.png 100w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/GBFgnqhaoAApL0a.png 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<\/div>\n\n\n<p>OK, Caddy is probably the biggest single game changer here. It&#8217;s a simple web server &amp; reverse proxy with automatic TLS. This solves three problems for me. 1) I hate getting browser errors for self-signed certs. This is also problematic for the container registry I need to run, and I really don&#8217;t want to mess with client-side configurations. 2) who wants to remember the ports being used by containers, especially when you&#8217;re running more than a handful? Kubernetes solves this problem by using &#8220;services&#8221; which typically run behind some type of reverse proxy. 3) I don&#8217;t really want to deal w\/ a LAMP stack if I don&#8217;t have to! &#8230;.well, caddy to the rescue! I&#8217;m using cloudflare DNS and Caddy perfectly creates TLS connections. Each container I need to access has an entry in the Caddyfile which helps me keep all the ports straight. Instead of using [SERVER-IP]:5000 as my registry, my clients point to registry.mydomain.com and the TLS just works! Finally, it&#8217;s a super fast web server and is perfect for serving my local files. It greatly simplifies a lot of things I used to deal with. Of course Caddy is just another container running on the server w\/ everything else.<\/p>\n\n\n\n<p>I also have Caddy serving a local landing page with links to almost everything  on my network including my 3D printer, sprinklers, cameras, etc. So the next time I have a middle-age moment and forget an IP or hostname, this little landing page will help me cope! Go <a href=\"https:\/\/major.io\/p\/caddy-porkbun\/\" data-type=\"link\" data-id=\"https:\/\/major.io\/p\/caddy-porkbun\/\" target=\"_blank\" rel=\"noreferrer noopener\">read this blog<\/a> or<a href=\"https:\/\/roelofjanelsinga.com\/articles\/using-caddy-ssl-with-cloudflare\/\" data-type=\"link\" data-id=\"https:\/\/roelofjanelsinga.com\/articles\/using-caddy-ssl-with-cloudflare\/\" target=\"_blank\" rel=\"noreferrer noopener\"> this one<\/a> to learn how to set this up.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-10-47-1024x387.png\" alt=\"\" class=\"wp-image-2537\" srcset=\"https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-10-47-1024x387.png 1024w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-10-47-300x113.png 300w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-10-47-768x290.png 768w, https:\/\/mrguitar.net\/wp-content\/uploads\/2024\/02\/Screenshot-from-2024-02-29-17-10-47.png 1157w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Final thoughts<\/h2>\n\n\n\n<p>My setup is really super simple and was long over due for an upgrade. I really wish I had done this years ago, but regardless, I&#8217;m really glad that it&#8217;s in place now. I&#8217;ve also had two other home network upgrades including moving openvpn to wireguard and adding Adguard. Both of these were great upgrades that compliment the new server. There are a few more containerized applications I&#8217;m going to add in the future. I&#8217;m also anxiously awaiting podman 5 which is scheduled for Fedora 40. Specifically, I&#8217;m waiting for quadlet to gain the ability to manage pods for multi-container apps. Pods work great today, but everything is sooooo clean w\/ quadlet that I&#8217;m going to wait for that. I predict this will be in place for quite a while and I love that there&#8217;s room to group compute &amp; 2x free SATA ports. Next on my list is upgrading these ancient 1G network switches. That&#8217;s the next bottleneck.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been running a little home server for probably close to twenty years. Originally, it was driven by my desire to learn Linux and run a whole-home MythTV setup. I still think that was an amazing setup for the time, but of course things change and broadcast TV just isn&#8217;t what it used to be. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/mrguitar.net\/?p=2524\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Refreshing my Home Server\/NAS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[32,121,13,12],"class_list":["post-2524","post","type-post","status-publish","format-standard","hentry","category-open-sourcenerd-stuff","tag-fedora","tag-jellyfin","tag-linux","tag-mythtv"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/posts\/2524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mrguitar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2524"}],"version-history":[{"count":5,"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/posts\/2524\/revisions"}],"predecessor-version":[{"id":2554,"href":"https:\/\/mrguitar.net\/index.php?rest_route=\/wp\/v2\/posts\/2524\/revisions\/2554"}],"wp:attachment":[{"href":"https:\/\/mrguitar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mrguitar.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mrguitar.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}