<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Home-Server Project on LNA-DEV ~ Lukas Nagel</title>
    <link>https://lna-dev.net/en/tags/home-server-project/</link>
    <description>Recent content in Home-Server Project on LNA-DEV ~ Lukas Nagel</description>
    <image>
      <title>LNA-DEV ~ Lukas Nagel</title>
      <url>https://lna-dev.net/assets/Ping%C3%BCino/Ping%C3%BCino.png</url>
      <link>https://lna-dev.net/en/tags/home-server-project/</link>
    </image>
    <generator>Hugo -- 0.166.0</generator>
    <language>en-US</language>
    <managingEditor>me@lna-dev.net (Lukas Nagel)</managingEditor>
    <webMaster>me@lna-dev.net (Lukas Nagel)</webMaster>
    <copyright>🄯 various licenses</copyright>
    <lastBuildDate>Sat, 05 Oct 2024 14:00:05 +0200</lastBuildDate>
    <atom:link href="https://lna-dev.net/en/tags/home-server-project/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Nginx proxy manager on TrueNas Scale without True Charts</title>
      <link>https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/</link>
      <pubDate>Sat, 05 Oct 2024 14:00:05 +0200</pubDate><author>me@lna-dev.net (Lukas Nagel)</author>
      <guid>https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/</guid>
      <description>How to setup a reverse proxy for TrueNas Scale without True Charts using the Nginx proxy manager.</description><content:encoded><![CDATA[<p>This is the third post in a <a href="https://lna-dev.net/en/tags/home-server-project/">larger series</a> about self-hosting with TrueNAS Scale. In this post, I want to show you how to set up the Nginx reverse proxy without relying on TrueCharts. I explained in <a href="https://lna-dev.net/en/posts/home-server/truenas-scale/">the last post</a> why I am moving away from them. In short: Support will be dropped.</p>
<h2 id="nginx-proxy-manager">Nginx Proxy Manager</h2>
<p>Using the default charts in TrueNAS Scale, your application can only be exposed on a high port. Accessing your apps via such a weird port and without a proper domain isn&rsquo;t cutting it. Is it? Therefore you can run a reverse proxy that manages TLS encryption and directs traffic for each subdomain to its respective app, without needing a special port in the URL.</p>
<p>Until now, I had always used a Traefik proxy when working with Kubernetes, but I found this cool project that seemed to fit perfectly. It&rsquo;s called Nginx Proxy Manager, or NPM for short. With NPM, you can set up a reverse proxy and also manage your TLS certificates using Let&rsquo;s Encrypt.</p>
<h2 id="installation">Installation</h2>
<p>First of all, we can&rsquo;t install this app the way we would normally install an app. It is in the default app catalog, but this version can only be hosted on port 9000. Instead, we’ll use the Docker image to deploy it. This won’t make any difference, but we can use our own IP address for it, which also means we can use all ports.</p>
<p>To start, go to the app catalog and click <code>Custom APP</code> in the top right corner. There, you can configure everything. I’ll provide the required settings below.</p>
<table>
	<thead>
			<tr>
					<th>Configuration Name</th>
					<th>Value</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Image Repository</td>
					<td><code>jc21/nginx-proxy-manager</code></td>
			</tr>
			<tr>
					<td>Image Tag</td>
					<td><code>latest</code></td>
			</tr>
			<tr>
					<td>External Interface</td>
					<td>Choose your interface and use an IP address that is not used by any device, including your server <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</td>
			</tr>
			<tr>
					<td>DNS Policy</td>
					<td>Prioritize Kubernetes DNS <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>.</td>
			</tr>
			<tr>
					<td>Storage</td>
					<td>Set up two storage paths one for <code>/etc/letsencrypt</code> and one for <code>/data</code>. I recommend using Host Path Volumes.</td>
			</tr>
	</tbody>
</table>
<p>After installing the app, you can access it via its IP address on port <code>81</code>. The default username is <code>admin@example.com</code>and the password is <code>changeme</code>. Change them immediately!</p>
<h2 id="setting-up-tls">Setting Up TLS</h2>
<p><img alt="Screenshot of the Nginx Proxy Manager home screen" decoding="async" height="184" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/npmHomeScreen_hu_9bfd68ba36052cee.webp" width="720"></p>
<p>Once everything is set up and you’ve changed your password, you’ll see something like this. First of all, I recommend setting up your TLS certificate if you have a domain. If you don’t have a domain, you can still upload a custom certificate.</p>
<p><img alt="Overview of all TLS certificates in Nginx Proxy Manager" decoding="async" height="215" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/npmSslOverview_hu_8060f63e6c54d1ec.webp" width="720"></p>
<p>Click on the <code>SSL Certificates</code> tab to see a list of all the certificates you’ve set up. If you click the button in the top right, you can create a new certificate. Here, you can choose between the Let&rsquo;s Encrypt certificate authority or upload a custom certificate if you&rsquo;re using a local domain. But if you can get a domain, I recommend doing so. I will proceed with the setup instructions for Let&rsquo;s Encrypt.</p>
<p><img alt="The Let&rsquo;s Encrypt setup dialog in NPM" decoding="async" height="737" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/letsEncrypt_hu_3be9e45a3c997656.webp" width="720"></p>
<p>If your server is reachable from the public internet, you just need to enter your domain name and agree to the Terms of Service. This will spin up a local webpage to verify that you actually own the domain you enter.</p>
<blockquote>
<p>You can also set up a TLS certificate for all subdomains by entering <code>*.example.com</code>.</p>
</blockquote>
<p>If your server is not accessible from the public or if you want to use another method, you can choose the DNS challenge. NPM has a couple of DNS providers which you can choose from. Take a look at the list and search for your DNS provider.</p>
<p><img alt="The Let&rsquo;s Encrypt setup dialog with the DNS challenge in Nginx Proxy Manager" decoding="async" height="1204" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/letsEncryptDNS_hu_a551c6bb056eb828.webp" width="720"></p>
<p>You just have to enter the API token or log in another way specific to your provider. NPM will then modify the DNS records to prove that you own the domain you have provided.</p>
<p>If you complete any of these methods successfully, you&rsquo;ll get your SSL certificate.</p>
<h2 id="setting-up-your-apps">Setting Up Your Apps</h2>
<p>Now we want to configure the Nginx Proxy Manager to relay traffic from specific domains to a specific TrueNAS Scale app. To do this, go to <code>Dashboard =&gt; Proxy Hosts</code>.</p>
<p><img alt="Screenshot of the proxy hosts overview page of Nginx Proxy Manager" decoding="async" height="380" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/npmProxyOverview_hu_35a16d2adeba3480.webp" width="720"></p>
<p>Here, you’ll see an overview of all the hosts / apps you’ve configured. On the top right, you can add a new host.</p>
<p><img alt="New proxy hosts dialog in NPM" decoding="async" height="783" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/newProxyHost_hu_3e4e7289225e033c.webp" width="720"></p>
<p>In this window, you can finally configure access to your app. You need to enter the domain where you want your app to be available, choose the scheme (http/https) your app runs on (probably http)and enter the port your application uses.</p>
<p>The hostname of your app is its internal DNS entry in the Kubernetes cluster. It usually follows this pattern: <code>&lt;app-name&gt;.ix-&lt;app-name&gt;.svc.cluster.local</code>. So, for Jellyfin, it would be: <code>jellyfin.ix-jellyfin.svc.cluster.local</code>.</p>
<p>You can find the correct port in the app&rsquo;s configuration or use the default port.</p>
<blockquote>
<p><strong>These are the values for your app running in TrueNAS Scale, not the values for accessing the app publicly!</strong></p>
</blockquote>
<p>I also recommend enabling <code>Websocket Support</code> and <code>Block Common Exploits</code>.</p>
<p>At this point, your app will be accessible via your domain, but one final step is needed to allow requests over HTTPS. You just have to go to the SSL tab and select the certificate we set up earlier.</p>
<p><img alt="SSL config for new NPM proxy host" decoding="async" height="563" loading="lazy" src="https://lna-dev.net/en/posts/home-server/nginx-proxy-manager/npmProxySSL_hu_5cfc540d09478cb.webp" width="720"></p>
<p>After selecting your certificate, I recommend enabling all the available options (<code>Force SSL</code>, <code>HTTP/2 Support</code>, <code>HSTS Enabled</code>, <code>HSTS Subdomains</code>).</p>
<p>Once you click save, the host is set upand your app should be accessible via your domain and the HTTPS protocol.</p>
<blockquote>
<p>If you want to point one domain to your Nginx Proxy Manager UI, you can just point it to <code>http://localhost:81</code>.</p>
</blockquote>
<h2 id="footnotes">Footnotes</h2>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>It took me a while to figure this out because my app only worked sometimes on certain devices. I had registered the IP under the server&rsquo;s networking, which caused some devices to work intermittently. Why it worked at all, I can’t say, but just don’t do it.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>This is needed if you want to use the internal Kubernetes DNS entries to refer to your apps.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>How I built my home server using TrueNAS Scale</title>
      <link>https://lna-dev.net/en/posts/home-server/truenas-scale/</link>
      <pubDate>Tue, 13 Aug 2024 22:02:10 +0200</pubDate><author>me@lna-dev.net (Lukas Nagel)</author>
      <guid>https://lna-dev.net/en/posts/home-server/truenas-scale/</guid>
      <description>Here you learn how to setup a home server using TrueNAS Scale and I show you how I did it.</description><content:encoded><![CDATA[<p>This post is part two of a bigger series of blog posts about my home server and how you can make your own. In <a href="https://lna-dev.net/en/posts/home-server/advantages-of-a-home-server/">the first post</a> I describe why I wanted to have a home server and the next one will be about how to set up the Nginx Proxy Manager (NPM) without TrueCharts. You can find all posts under the <a href="https://lna-dev.net/en/tags/home-server-project/">Home-Server Project</a> tag.</p>
<h2 id="hardware">Hardware</h2>
<p><img alt="Picture of my home server from the inside." decoding="async" height="956" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/server_hu_4d7ece0a70b75fba.jpg" width="720"></p>
<p>(Looks a bit messy, I know 😅 But I somehow like it 😜)</p>


<p><details >
  <summary markdown="span">Full specs</summary>
  <table>
	<thead>
			<tr>
					<th>Type</th>
					<th>Hardware</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>CPU</td>
					<td>Intel i7</td>
			</tr>
			<tr>
					<td>RAM</td>
					<td>32 GB DDR3</td>
			</tr>
			<tr>
					<td>HDD</td>
					<td>5 x 6TB Seagate Ironwolf (For storage)</td>
			</tr>
			<tr>
					<td>SSD</td>
					<td>128 GB Samsung (For the OS)</td>
			</tr>
			<tr>
					<td>GPU</td>
					<td>NVIDIA GTX 970 (Can be used in some apps)</td>
			</tr>
	</tbody>
</table>

</details></p>

<p>As you can see, I am using an old PC as my server. This has the advantage that I only needed to buy the hard drives to support my storage needs, but the downside is that electricity consumption is rather high. Last time I measured with all my apps running, it consumed about 60W. A fresh build could be optimized for electricity consumption, which can save you a lot of money if you want the server to run 24/7. <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>I chose not to do a hardware RAID because I am using the ZFS file system. I will explain this in detail in <a href="#openzfs">a dedicated part</a>.</p>
<h3 id="ecc-memory">ECC memory?</h3>
<p>I unfortunately do not have ECC RAM, but if you can get it, I would recommend it. Error Correction Code (ECC) RAM is able to correct wrong bits, which makes the system more secure against some hardware attacks and especially more reliable. It is not a complete dealbreaker not having it, (especially because it&rsquo;s kind of rare in the consumer world at the moment) but having it is a nice addon.</p>
<h3 id="uninterrupted-power-supply-ups">Uninterrupted Power Supply (UPS)</h3>
<p>I bought a UPS to support my server in case of power outages. The UPS has a battery that can keep my server alive for about 15 minutes, then it gives a signal to the server, which is configured to shut down before the UPS battery runs out. This ensures that most power outages never cause a problem, as they are shorter than the battery time and if the power is out for a while the server shuts down gracefully.</p>
<h2 id="why-i-chose-truenas-scale">Why I chose TrueNAS Scale</h2>
<p>Now to, in my opinion, the most important part: The operating system. I chose TrueNAS Scale for a couple of reasons. First of all I wanted something that is <strong>Open Source</strong>. I also wanted to run apps on the system and definitely needed some sort of RAID / software RAID. TrueNAS Scale has it all. It is based on Linux and led by the company <a href="https://www.ixsystems.com/">iXsystems</a>. <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> For applications, it supports Docker and Kubernetes, as well as its own VMs. I am actually not really using the VMs yet, but I really like Kubernetes and also Docker. So this was great news for me. These technologies allow you to run basically any app you like on it because most apps are or can be containerized. In addition to this, the system uses OpenZFS as the file system, which is pretty cool in my opinion. We will take a look at it in the next part.</p>
<h3 id="raid">RAID</h3>
<p>As I previously mentioned, I am not using a classical RAID system. Instead the ZFS file system which is used by TrueNAS Scale, has something similar to a software RAID built into it.</p>
<p>But first of all, to bring everyone on the same level, I want to explain what RAID actually is. RAID stands for Redundant Array of Independent Disks and as the name suggests brings redundancy into data storage. There are several versions of RAID (0, 1, 5, 6 are the most important ones). RAID 0 just stripes the data across multiple disks and does not provide any redundancy. RAID 1 mirrors every disk on another one so half of the disks could fail without losing any data. The last two versions are the important ones for this blog post. They both work similarly: First the data gets striped like in RAID 0, but a parity part is also calculated, which can be used to recover the data if a drive fails. With RAID 5 you can lose one disk without losing data and with RAID 6 you can lose two disks without an issue. The disadvantage of RAID is that you need more disks because of the redundancy.</p>
<h3 id="openzfs">OpenZFS</h3>
<p>Now let&rsquo;s talk about ZFS, which is an awesome file system in my opinion. It provides a set of features that make it especially interesting for server operation and other systems where correct data storage is important. A few of its features are RAID-Z (which I&rsquo;ll discuss later), data compression, data deduplication, snapshots and self-healing. All of these features are very interesting for building a storage-focused server like the one I am building.</p>
<p>RAID-Z is the most important feature of ZFS in my opinion. It allows me to run the server without a physical RAID controller. It works a bit differently from RAID, which brings better performance and it also has the self-healing ability ZFS is known for, all while not needing a physical RAID controller anymore. This is actually only possible because there is no RAID controller and the file system can manage the disks directly. It is not recommended to use ZFS in addition to a hardware RAID because of that.</p>
<h3 id="setup-of-the-os">Setup of the OS</h3>
<p>The installation of the OS is pretty straightforward. You can follow the <a href="https://www.truenas.com/docs/scale/24.04/gettingstarted/install/installingscale/">installation guide</a> on the developer&rsquo;s website.</p>
<p><img alt="Dashboard of TrueNAS Scale" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/trueNasDashboard_hu_d22e6af1d18eddd.webp" width="720"></p>
<p>If you set everything up, this is how the web UI looks. Here you can control pretty much everything about the system graphically. In addition to the UI, I would recommend setting up an SSH connection so you can use the command line on your system. You can do that under <code>credentials =&gt; users =&gt; upload SSH key</code>.</p>
<p><img alt="Screenshot of the dataset tab" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/datasets_hu_84bae8eb90b06158.webp" width="720"></p>
<p>Under datasets you can set up different folders with different permissions, purposes, shares and much more. You can decide if you want to encrypt your data (you want to 😉) and how you want to do it. There are two options. With the simplest option, a key gets generated and you just have to save it somewhere safe as a backup, while the server stores it securely. But if you are like me and a bit paranoid when it comes to disk encryption, you can also use a really strong password. The difference is that you have to enter this password after every restart. This provides the security that if your system is shut down, it is safe against a lot of hardware attacks.</p>
<h3 id="how-i-move-files">How I move files</h3>
<p>TrueNAS Scale provides you with a few kinds of file shares. I tried them all but did not really like any of them, which actually makes it a lot simpler for me. I am using SSH in my Gnome file explorer if I want to move files or I just do it over the command line. This works perfectly fine for me.</p>
<p>If you want to use shares, you are able to use SMB, NFS and iSCSI to do so. Just play around with it and see what you like most. For me, it&rsquo;s the good old SSH.</p>
<p><img alt="Screenshot of the shares tab of TrueNAS Scale" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/shares_hu_ec0e5b7642b5d337.webp" width="720"></p>
<h2 id="what-apps-i-run">What apps I run</h2>
<p>Now to the most interesting part, in my opinion. I want to run apps that support me in my day-to-day life and provide value. This is why I do all of this.</p>
<h3 id="truecharts-and-why-i-do-not-use-them-anymore">TrueCharts and why I do not use them anymore</h3>
<p>But first of all, we need to talk about TrueCharts. They are a pretty big third-party app catalog or at least they were for a very long time. They now said that they are going to drop support for TrueNAS Scale because they claim iXsystems will remove Kubernetes from the OS in a future update. I am not really sure about that because I haven&rsquo;t read anything significant. But I think sticking with the original apps is not that bad either way. It’s a bit different to set up, but I will guide you through it here.</p>
<p>I also want to mention that I had a few problems using charts from TrueCharts. I do not want to blame them for it, but I think they are less stable than the original ones. But they have advantages like more settings and less performance overhead, so I think the guys from TrueCharts still did a really good job.</p>
<h3 id="install-an-app">Install an app</h3>
<p>I do not want to use file shares for everything. That is not very convenient. I want to use an app that works like all the other file cloud providers. This is why I host Nextcloud on my NAS. This is a really cool private cloud software that manages everything like files, contacts, calendars and the list goes on and on. I will talk a bit more about it in a future post. <sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> But for now, let&rsquo;s take a look at how to install an app like that.</p>
<p><img alt="Screenshot of the TrueNAS Scale apps window" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/apps_hu_62d9995a2e25dd9c.webp" width="720"></p>
<p>The process is actually pretty simple. You can just choose your app from the catalog, which you can open with the discover button.</p>
<p><img alt="Screenshot of the TrueNAS Scale apps catalog" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/app-catalog_hu_a4fe60724dc6390c.webp" width="720"></p>
<p>Here you can choose from many different apps or provide your own if you want to create something not in the default apps. If you have found an app you want to install, you can click on it and configure the app with everything the app allows you to change. Here the TrueCharts apps are a lot better because you can configure way more. But the default apps have a few settings as well and are much simpler. An important thing to keep in mind is that there is a limitation with the default apps, so you cannot use ports below 9000.</p>
<p><img alt="Screenshot of the TrueNAS Scale install dialog" decoding="async" height="351" loading="lazy" src="https://lna-dev.net/en/posts/home-server/truenas-scale/install_hu_f9c52038bb2fb33f.webp" width="720"></p>
<p>If you are finished with configuring, it is just as easy as pressing the install button. After a few minutes, the app is running and you can access it over the port you chose.</p>
<h2 id="the-end">The End</h2>
<p>You now know the basics of TrueNAS Scale. I hope you took a little bit of information from this post and I hope to see you in the next one of this series😄</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>I thought about a couple of solutions that do not require the system to run all the time, but those are mostly hacks and not real solutions for me. For example, you could shut down the server overnight or wake it up using wake on LAN, but this is not a great fit for me.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>For those who are interested, iXsystems is a company based in the US and therefore a bit suboptimal because they are liable to US law, which is not ideal. But as I see it, they are not affected negatively at the moment.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>There are many apps I want to talk about. Examples are: Nextcloud, Jellyfin and Home Assistant. But I will do this another time in another post.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Why I need a home server and you might too</title>
      <link>https://lna-dev.net/en/posts/home-server/advantages-of-a-home-server/</link>
      <pubDate>Mon, 29 Jul 2024 21:34:00 +0200</pubDate><author>me@lna-dev.net (Lukas Nagel)</author>
      <guid>https://lna-dev.net/en/posts/home-server/advantages-of-a-home-server/</guid>
      <description>In this post, I discuss the reasons why I decided to build a home server and talk about the advantages of having one.</description><content:encoded><![CDATA[<p>First of all, this is the first post of a larger series of blog posts I will dedicate to building my home server. You can find all of them under the tag <a href="https://lna-dev.net/en/tags/home-server-project/">Home-Server Project</a>.</p>
<p>There are many reasons someone would want to have a home server. In this post, I want to explain why I chose to build a home server and in the following ones, I will show you how I did it and how you can do it too.</p>
<h2 id="privacy-and-independence">Privacy and Independence</h2>
<p>For me, there are a few main reasons why I wanted to get started with self-hosting. I think my journey began about two years ago in 2022 when I first played around with a Synology NAS. This helped me a bit with some of the goals I had. Having a Synology NAS improved my independence, especially from the big tech nightmares and therefore also improved my privacy. But after a while, I felt that something wasn&rsquo;t quite right with this setup. First, the Synology software is not <strong>Open Source</strong> and therefore there are still <strong>privacy</strong> concerns. (I will cover why this is so important to me in a future post.) Also, Synology is a Taiwanese company and the situation with China was worrying me. (There would be a lot of bigger problems in tech, but it was still concerning.)</p>
<p>So the next step was building my own NAS / home server with custom <strong>Open Source</strong> software. I explain this in another post of this series. For now, let&rsquo;s just say I built my own server about a year ago in 2023 and now I have all my data at home in an environment I trust and am able to control fully. So I achieved a lot of independence from the shady big tech companies.</p>
<p><img alt="A meme about open source and closed source. Obviously always choosing open source." decoding="async" height="837" loading="lazy" src="https://lna-dev.net/en/posts/home-server/advantages-of-a-home-server/openSourceMeme_hu_896dce89f3f6eaae.jpg" width="720"></p>
<h2 id="cost">Cost</h2>
<p>Cost can be an advantage or disadvantage if you start to self-host. On one side, you have to pay for your hardware and the electricity your server consumes, but on the other side, you can cancel a couple of subscriptions which are also pretty expensive. For example, you are probably using some sort of cloud storage. (Or at least you should be using something like that in my opinion. <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> )</p>
<p>Having a bit of data in such storage can have high costs. For example, buying OneDrive, which is included in the Microsoft Personal subscription, costs about $6.99 a month.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> This price only includes 1TB. But if you have large amounts of data, this can get very expensive. To look at another example, Google&rsquo;s cloud storage costs 9.99€ a month for 2TB.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> Other cloud storages, like a hosted Nextcloud, might even be more expensive.</p>
<p><img alt="Screenshot of the Google Drive prices" decoding="async" height="426" loading="lazy" src="https://lna-dev.net/en/posts/home-server/advantages-of-a-home-server/google-costs_hu_8e906238174ac666.webp" width="720"></p>
<p>You also have to keep in mind these are only costs for one service. On your server, you can host a couple of services you need and even share those and also the costs.</p>
<p>Because of all this, you save a bug in my opinion if you start self-hosting and replacing the services you pay for with your own server. But this can vary from person to person.</p>
<blockquote>
<p>Just to mention it: OneDrive and a lot of other big tech tools scan your files for illegal content and use filters that might report you to law enforcement. These tools are known to make mistakes and so an image of your child on the beach can lead to your Microsoft account being suspended in the best case and a meeting with the local police in the worst case. Something like that will never happen if you are self-hosting. Be aware!</p>
</blockquote>
<h2 id="knowledge">Knowledge</h2>
<p>Another good point for having a home lab is all the knowledge you gain from it. You have to think about the hardware, set everything up physically, learn about RAID, about the operating systems and the software you are running, not to mention security and setting up a safe environment. There is a lot to learn on this journey!</p>
<p>And the good thing here is this is not a one-time thing. You can learn a lot as time goes on. Every now and then, if you feel motivated, you can play around with some settings or try something new.</p>
<p>This knowledge can also pay off in your job as you gain experience you maybe wouldn&rsquo;t have otherwise. Personally speaking, I learned most of the things I know about IT, especially programming and DevOps, while building my own things. It is just way more motivating building the things you want than just learning by doing exercises you do not care about.</p>
<h2 id="helping-others">Helping others</h2>
<p>Last but not least, I want to mention a small point I think is notable. If you are building all of this for yourself, it is really easy to give a few other people access to the services you are running. So you can help out your friends and family to have better privacy and generally speaking all of the benefits I was talking about. <sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Of course you should not use services that are not end-to-end encrypted or run by one of the big tech companies. But a service like that provides great value, especially if you self-host it!&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Data from <a href="https://www.microsoft.com/en-us/microsoft-365/onedrive/compare-onedrive-plans">https://www.microsoft.com/en-us/microsoft-365/onedrive/compare-onedrive-plans</a> retrieved on July 24.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>Data from <a href="https://one.google.com/about/plans?g1_landing_page=0&hl=en">https://one.google.com/about/plans?g1_landing_page=0&hl=en</a> retrieved on July 24.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>But be careful with that because you gain a lot of power if you do that, as you may get access to sensitive information. So keep in mind: With great power comes great responsibility^^&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>