{"id":156,"date":"2022-01-28T18:19:44","date_gmt":"2022-01-28T18:19:44","guid":{"rendered":"http:\/\/www.asafslaboratory.com\/?p=156"},"modified":"2022-11-06T07:09:32","modified_gmt":"2022-11-06T07:09:32","slug":"pi-raspberry-pi-my-self-hosted-home-server","status":"publish","type":"post","link":"https:\/\/www.asafslaboratory.com\/?p=156","title":{"rendered":"The WayStone Pi-  My Self Hosted Home Server"},"content":{"rendered":"\n<p>Man, oh man, have I been dying to get this project up and running for a long time!<br>I got my first 4GB ram Raspberry Pi 4B, about a year ago. I went through some startup guides to help me set up the Raspbian LINUX distro, and use that as a server for my printer using OctoPrint. <\/p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>For those of you who don&#8217;t know, OctoPrint is a cool interactive web interface for your 3D printer. <\/p>\n\n\n\n<p>It lets you remotely control your printer, upload stl files, mount a camera to monitor your print and even produce a  time-lapse video of the whole process. <\/p>\n\n\n\n<p>Another awesome feature is an AI computer vision plugin algorithm that checks if the print is going ok, and prevent the abominable filament spaghetti we all fear.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:30%\">\n<figure class=\"wp-block-image is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/Octoprint.png\" alt=\"\" class=\"wp-image-158\" width=\"314\" height=\"252\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Anyway, a couple of months ago Google had changed their &#8220;Google Pictures&#8221; app terms <br>from: &#8220;<kbd><mark class=\"has-inline-color has-vivid-cyan-blue-color\" style=\"background-color: rgba(0, 0, 0, 0);\">We host your pictures for free, but with lesser quality<\/mark><\/kbd>&#8221; <br>to: &#8220;<kbd><mark class=\"has-inline-color has-vivid-cyan-blue-color\" style=\"background-color: rgba(0, 0, 0, 0);\">We host your pictures using YOUR OWN storage drive<\/mark><\/kbd>&#8221; <br>That means you&#8217;d better buy some extra GBs and start sorting through <strong><em>ALL <\/em><\/strong>of your pictures. Pictures of your friends&#8217; pets, your old scanned documents from the university years ago, hundreds of accidental screen shots taken while trying to hit the snooze alarm in the mornings, and of course, picking the <strong>best <\/strong>picture out of a series of <strong>twenty <\/strong>lavishly taken photos of the same exact moment, because why not? the age of film is no more.<\/p>\n\n\n\n<p>So I tried the sorting thing. I really did. I tried coming up with a threshold for choosing which pictures were worth saving, and which weren&#8217;t. For each statue, road, friend or just plain scenery photos from a trip, I had to choose if its IN or OUT. <br>That did <strong>NOT<\/strong> work out, to say the least. I ended up quite decision-paralyzed from the process, and I wasn&#8217;t even half way through!. Just thinking about it gives me anxiety. I&#8217;m telling you. You want to torture information out of people quickly? let them sort through my photos. 5 minutes of that, and they&#8217;ll sing like a bird. Want it quicker? but I mean, banned-from-the-Geneva-conventions quicker? <br>Let them sort through a phone belonging to one of those gym members that go everyday just to look at themselves in the mirror. <\/p>\n\n\n\n<p>&#8230;..<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;<\/p>\n\n\n\n<p>Umm, yep.<br>I got carried away there for a second&#8230;.<br>Bottom line, I wanted to create my own media device, accessible from anywhere around the world. I wanted it to be secure, and to be able to sync my photos from my phone to an SSD attached to it with a backup drive, without depending on any other cloud service out there. <br>I wanted my own server, my own cloud. <br>I wanted a <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\"><em>NAS<\/em><\/mark><\/strong> &#8211; A Network Attached Storage device. <\/p>\n\n\n\n<p>So I bought my second 4GB Raspberry Pi 4B and a couple of SSDs. I also designed and printed a nice mounting frame for it: <\/p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p>I called it <em><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">The WayStone NAS<\/mark><\/strong>.<\/em> <br>All of my Pi&#8217;s and IOT&#8217;s are themed after my favorite book &#8211; <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The Name Of The Wind <\/p>\n<cite>The Kingkiller Chronicle series, <br>by Patrick Rothfuss<\/cite><\/blockquote>\n\n\n\n<p>Well, after installing docker I spun up my OpenMediaVault OS container, to manage my NAS and that opened up a whole new world of self hosting PARADISE.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-6.png\" alt=\"\" class=\"wp-image-162\" width=\"341\" height=\"354\" srcset=\"https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-6.png 569w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-6-288x300.png 288w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-6-300x312.png 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>My curiosity buds EXPLOADED with tons of awesome server apps I could run containerized. I started hosting my own websites using <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Nginx <\/mark><\/strong>or <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Apache <\/mark><\/strong>web servers, creating a media server with <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Plex<\/mark><\/strong>, hosting a <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Nextcloud <\/mark><\/strong>server for syncing all my photos and documents, adding <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\"><strong>Grafana<\/strong> <\/mark>and <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\"><strong>Prometheus<\/strong> <\/mark>to scrape and monitor the health of my server, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">BitWarden <\/mark><\/strong>to locally store and access all of my passwords, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Pi-Hole<\/mark><\/strong> to act as my local DNS and block ads, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Sonarr<\/mark><\/strong>, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Radarr<\/mark><\/strong>, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Bazarr<\/mark><\/strong>, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Readarr<\/mark><\/strong>, <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Overseerr<\/mark><\/strong>, and <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Prowlarr <\/mark><\/strong>to manage all my media automations, requests, and recommendations. <br>Each of these is in its own docker container using a separate port on my local host, and I am using the Heimdall dashboard (also in a container) as my &#8220;<em><kbd>one ring to rule them all<\/kbd><\/em>&#8220;<code>:<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"496\" src=\"http:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-1024x496.png\" alt=\"\" class=\"wp-image-164\" srcset=\"https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-1024x496.png 1024w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-300x145.png 300w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-768x372.png 768w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-1536x744.png 1536w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7-850x412.png 850w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/image-7.png 1830w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Locally, connected to my home network, everything&#8217;s all fine and dandy, but how do I <strong>securely<\/strong> enable access from the outside world??<br><span style=\"text-decoration: underline;\">Three ways to do that:<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Enabling port forwarding through my router to access each on of my services &#8211;<br>UNSAFE. INSECURE. NEVER do that!<br><\/li>\n\n\n\n<li>Using Nginx as a reverse proxy server with SSL. Quite secure, but isn&#8217;t very flexible for adding\/removing clients. I need more CONTROL.<br><\/li>\n\n\n\n<li>Hosting my own VPN server. UBER SECURE. <\/li>\n<\/ol>\n\n\n\n<p>As you might have guessed, I went with the third option and installed a WireGuard VPN server. <\/p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad-1024x538.png\" alt=\"\" class=\"wp-image-170\" width=\"409\" height=\"215\" srcset=\"https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad-1024x538.png 1024w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad-300x158.png 300w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad-768x403.png 768w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad-850x446.png 850w, https:\/\/www.asafslaboratory.com\/wp-content\/uploads\/2022\/01\/wiregurad.png 1200w\" sizes=\"auto, (max-width: 409px) 100vw, 409px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-left\" style=\"font-size:18px\">It works wonderfully, giving me complete control over my clients. Configuring a new client is as easy as copy\/paste. All I have to do is add a new client in the server to receive my handshake configuration. I pass the config file into my client&#8217;s WireGuard app and that&#8217;s it!. The app is also supported in Android, IOS, Mac and PC and it&#8217;s incredibly fast!<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>Now all that remains is to start scraping all of my data from Facebook and Google drive and migrate into the Waystone. I do think I&#8217;ll keep using my Google drive as a backup, until I am perfectly confident in the reliability of my system. You can never be too careful.. <\/p>\n\n\n\n<p>In the next posts, I intend to start sharing a bit more info about this build and dive into details . Future posts will detail specific app configurations, setting up docker and docker-compose and everything I host on my server. The ultimate goal is leading to my very own Pi-Cluster SUPER COMPUTER, which would be managed by <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Kubernetes<\/mark><\/strong>. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p><span style=\"text-decoration: underline;\">I give credit when credit is due<\/span><br>Here&#8217;s a list of the self-hosting Jedi&#8217;s who guided me through the process &#8211;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.youtube.com\/c\/NetworkChuck\">NetworkChuck<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/c\/NovaspiritTech\">Novaspirit Tech<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/c\/TechnoDadLife\">Techno Dad Life<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/c\/DBTechYT\">DB Tech<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Man, oh man, have I been dying to get this project up and running for a long time!I got my first 4GB ram Raspberry Pi 4B, about a year ago. I went through some startup guides to help me set up the Raspbian LINUX distro, and use that as a server for my printer using&#8230;<\/p>\n","protected":false},"author":1,"featured_media":162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-156","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-the-road-to-ai"],"_links":{"self":[{"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=156"}],"version-history":[{"count":18,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":411,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions\/411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=\/wp\/v2\/media\/162"}],"wp:attachment":[{"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.asafslaboratory.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}