<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AADSIT.COM</title>
	<atom:link href="https://aadsit.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://aadsit.com</link>
	<description>Homelab, Selfhosting, 3D and More</description>
	<lastBuildDate>Sat, 01 Feb 2025 05:01:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>AI Response Showdown &#8211; Rendezvous with Rama</title>
		<link>https://aadsit.com/homelab/246/</link>
					<comments>https://aadsit.com/homelab/246/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Thu, 23 Jan 2025 15:00:00 +0000</pubDate>
				<category><![CDATA[Homelab]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=246</guid>

					<description><![CDATA[<p>When I was younger I was a voracious reader especially Sci-Fi. If I was shopping at half price books [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/246/">AI Response Showdown &#8211; Rendezvous with Rama</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p>When I was younger I was a voracious reader especially Sci-Fi. If I was shopping at half price books and saw something that won a <a href="https://en.wikipedia.org/wiki/Hugo_Award" target="_blank" rel="noopener">Hugo </a>award, it would almost certainly come home if I had the budget. Going off to college and moving on with life I found I don&#8217;t have as much time as I would like to read, but I often hear some favorite names come up. One of which was &#8220;Rendezvous with Rama&#8221;, something I read back in middle school.</p>



<p>Rendezvous with Rama by Arthur C. Clarke was a fun tale to read early in my Sci-Fi obecession. I heard the name recently when YouTube added a legacy sci fi book summary channel to my suggested watch list, and as I have been working with home hosted LLM models I thought it would be fun to see how well an LLM can handle a whole book!</p>



<p>Taking it a step further, I also have the option to use web searches through the OpenWebUI Google API. So why not compare three methods?</p>



<p><strong>LLM Standalone: </strong>This method uses the LLM with it&#8217;s trained information. No additional sources are included. </p>



<p><strong>LLM with Internet Search</strong>: This method uses the Google API in OpenWebUI retrieve information from the internet. It is described further below. </p>



<p><strong>LLM with Book Availability through RAG</strong>: This method (RAG) also described below provides information directly from a text source. </p>



<p>To evaluate these three methods, we will be asking for a three paragraph summary, and several short discussions on sections of the book. Prompts will be included and responses separated into three columns, the default prompt in OpenWebUI has been removed.</p>



<p><strong>More about the system:</strong></p>



<p>I will be using my current co-editor, Llama3.1:8B running on an Nvidia P4 on a virtual machine in a Dell R430, the model I use for my co-editing! This is hosted on a <a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/overview" target="_blank" rel="noopener">Proxmox </a>server with GPU passthrough, a common solution for LLM and gaming projects.</p>



<p><strong>More about the sources:</strong></p>



<p><strong>Google API &#8211; </strong>OpenWebUI uses the <a href="https://docs.openwebui.com/tutorials/integrations/web_search/#google-pse-api" target="_blank" rel="noopener">Google PSE API</a> in my case, providing a free platform (with daily limits).</p>



<p>In OpenWebUI, an LLM is used to generate text-based interfaces, including a search interface. When a user interacts with this interface, the LLM uses the Google Custom Search JSON API to send a search request and retrieve relevant results. The LLM then generates a response based on these results, creating a conversational experience for the user.</p>



<p><strong>RAG</strong>: &#8211; The Retrieval Augmented Generation (RAG) implementation uses an EPUB copy of Rendezvous with Rama that was converted to a TXT file and uploaded to OpenWebUI Knowledge base. It is the only document in the knowledge base being referenced in method three, and is 401.6KB in size.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="307" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104-1024x307.png" alt="" class="wp-image-264" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104-1024x307.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104-300x90.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104-768x230.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104-1536x461.png 1536w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021104.png 1633w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Imagine you&#8217;re trying to write a essay about a historical event, but you need some specific information to make your points. A traditional AI model might just try to generate text from scratch, but it might not always get the facts right. RAG is a way to improve this process by first searching through a vast library of existing knowledge (like a super-smart search engine) to find relevant details about the event. Then, it uses those findings to inform and guide its own writing, making sure that the generated text is accurate and helpful. This approach helps the model produce more reliable and informative content!</p>



<p><strong>Section One:</strong> A book summary.</p>



<p><strong>Section Two:</strong> Tell me about the aliens.</p>



<p><strong>Section Three:</strong> Why is Rama visiting our solar system?</p>



<p>Without further adieu, let&#8217;s get started!</p>



<p><strong>Section one: Book Summary</strong></p>



<p><code>Prompt: Please write a two to three paragraph summary of Arthur C Clarke's book Rendezvous with Rama.</code></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM</strong></p>



<p>Here is a summary of Arthur C. Clarke&#8217;s novel &#8220;Rendezvous with Rama&#8221;:</p>



<p>The novel tells the story of a massive, cylindrical spacecraft that enters the solar system and makes its way towards Earth. As it approaches, scientists from around the world converge on the planet to study the enigmatic vessel, which they have dubbed &#8220;Rama.&#8221; The ship is roughly 50 kilometers in length and appears to be made entirely of some sort of metal or alloy material. Despite numerous attempts to communicate with Rama, no signals are received, leading many to speculate about its true purpose.</p>



<p>A small group of humans is able to board the spacecraft via a tiny spaceship that is inserted through a series of narrow openings on Rama&#8217;s surface. The crew members, led by Commander Norton, find themselves in a vast, almost empty environment with strange and eerie artifacts. As they explore the interior, they begin to uncover clues about Rama&#8217;s origins and purpose, which lead them to question everything they thought they knew about the universe.</p>



<p>Throughout the novel, Clarke explores themes of first contact, cosmology, and the search for meaning in a seemingly indifferent universe. The enigmatic nature of Rama serves as a mirror to humanity&#8217;s own existence, raising questions about our place within the grand scheme of things. Ultimately, &#8220;Rendezvous with Rama&#8221; is a thought-provoking and visually stunning novel that challenges readers to consider the possibilities of life beyond Earth.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + GOOGLE</strong></p>



<p>Arthur C. Clarke&#8217;s novel &#8220;Rendezvous with Rama&#8221; tells the story of a mysterious alien vessel that enters Earth&#8217;s solar system, prompting an expedition to investigate it. The story follows a group of astronauts and scientists as they attempt to explore the vessel, which is about 50 kilometers long and has a complex internal structure.</p>



<p>As the crew delves deeper into the ship, they discover evidence of an advanced alien civilization that had encountered Earth in the distant past. However, the aliens&#8217; intentions and purposes are unclear, leading to a sense of wonder and unease among the human explorers. Clarke&#8217;s novel explores themes of science, technology, and humanity&#8217;s place in the universe.</p>



<p>The book was initially intended as a standalone novel but received commercial success and critical acclaim, leading Arthur C. Clarke to team up with writer Gentry Lee to co-author three sequels set in the same Rama universe.</p>



<p>Sources Referenced:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="455" height="164" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020620.png" alt="" class="wp-image-256" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020620.png 455w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020620-300x108.png 300w" sizes="(max-width: 455px) 100vw, 455px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="523" height="158" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020627.png" alt="" class="wp-image-257" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020627.png 523w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020627-300x91.png 300w" sizes="(max-width: 523px) 100vw, 523px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + RAG</strong></p>



<p>Based on the provided context, here is a summary of Arthur C Clarke&#8217;s book Rendezvous with Rama:</p>



<p>The story revolves around the discovery of a massive spacecraft, known as Rama, which is approaching the solar system. As it draws closer, scientists and experts begin to discuss its implications and what could be controlling it. Some speculate that Rama might be headed for a rendezvous with Earth, while others are unsure about its intentions.</p>



<p>One of the key points discussed in the context is the possibility of Rama decelerating near the Sun and then making a velocity change to rendezvous with Earth. The experts also mention that Rama&#8217;s unusual orbit and size make it an intriguing phenomenon that will be studied further as it approaches the solar system.</p>



<p>Overall, the context suggests that Arthur C Clarke&#8217;s book is about the discovery of this massive spacecraft and the subsequent discussions and speculations among scientists and experts about its intentions and possible implications for humanity.</p>



<p>Note: I&#8217;ve tried to summarize the context in a neutral way without providing too much interpretation or personal opinion, as per your rules.</p>
</div>
</div>



<p><strong>Results</strong></p>



<p>The first method, just the LLM with it&#8217;s trained data, is unexpectedly the most wordy about the summary. However this seems to largely be a repeat of opinions on the book gained from conversations or other summaries it was trained on, rather than speaking to anything technical about the book.</p>



<p>The second method using Google search engine supplies data provides the shortest summary, with no real information to the story besides a very high level summary and a fun fact.</p>



<p>The final method, using the RAG method, seems to focus on information from the start of the book. To be honest, I had expected more from this and feel that a different prompt may have served better considering it has the entirety of the book at hand, but it may be too much information for an 8b model to handle.</p>



<p><strong>Section Two: Comprehension</strong></p>



<p><code>Prompt: Tell me about the aliens in Rendezvous to Rama. What did they look like, what was their motivation?</code></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM</strong></p>



<p>There are no aliens in Arthur C. Clarke&#8217;s novel &#8220;Rendezvous with Rama&#8221;. In fact, one of the hallmarks of the book is its refusal to reveal any explicit information about the nature and purpose of Rama.</p>



<p>Throughout the novel, Clarke skillfully builds suspense and mystery by providing tantalizing clues and hints about Rama&#8217;s true identity, but ultimately leaves the reader with more questions than answers. The focus of the story is on the human characters&#8217; experiences and observations as they explore Rama, rather than on any specific alien species or civilization.</p>



<p>In a sense, this lack of explicit detail about aliens is a deliberate choice by Clarke to reflect humanity&#8217;s own limited understanding of the universe. By avoiding explicit answers, Clarke invites readers to speculate and consider the possibilities for themselves, making the novel a more thought-provoking and unsettling experience.</p>



<p>The enigmatic nature of Rama itself becomes a kind of &#8220;alien&#8221; presence, one that challenges human assumptions and encourages us to re-examine our place in the cosmos. So while there are no traditional aliens in the novel, the mystery and ambiguity surrounding Rama serve as a powerful metaphor for the vast and unknowable nature of the universe.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + GOOGLE</strong></p>



<p>Arthur C. Clarke&#8217;s novel The aliens in Arthur C. Clarke&#8217;s novel &#8220;Rendezvous with Rama&#8221; are not explicitly described as having a physical appearance. The focus of the story is more on the enigmatic alien vessel, known as Rama, and its mysterious purposes, rather than the aliens themselves.</p>



<p>As for their motivation, it remains unclear throughout the book. The Ramans seem to be collecting intelligent life forms from around the galaxy using their spacecraft, but their reasons for doing so are not revealed. It is suggested that they may be studying or observing these civilizations, but the true purpose of this collection activity is left ambiguous.</p>



<p>Clarke leaves the interpretation of the aliens&#8217; intentions and motivations open to the reader, which adds to the sense of mystery and wonder in the novel.</p>



<p>Sources Referenced:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="789" height="129" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020822.png" alt="" class="wp-image-260" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020822.png 789w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020822-300x49.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020822-768x126.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="599" height="150" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020833.png" alt="" class="wp-image-261" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020833.png 599w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-020833-300x75.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + RAG</strong></p>



<p>I&#8217;m afraid I must say that I don&#8217;t know. The context provided doesn&#8217;t mention anything about aliens or extraterrestrial beings in Rendezvous with Rama. It appears to be discussing the discovery and approach of a massive spacecraft called Rama, but it doesn&#8217;t provide any information about its inhabitants or their motivations.</p>



<p>It&#8217;s possible that the book explores these themes, but based on the provided context, I couldn&#8217;t find any relevant information.</p>
</div>
</div>



<p><strong>Results</strong></p>



<p>Again, the trained knowledge provides the longest response, though seems to hallucinate a little but and draws conclusions that don&#8217;t really match the narrative.</p>



<p>The Google based response is interesting in that it seems to have pulled a Google result and used that as the basis for it&#8217;s conclusion. While there are a handful of opinions on the purpose of Rama, there are very few who theorize it is about collecting species (though this sounds distantly familiar for another book series), and rather most interpretations are that the crablike creatures found on Rama are the equivalent of maintenance drones.</p>



<p>Lastly, again I find the RAG generated response to be a disappointment. There most certainly are references to the alien inhabitants of the craft, and readers may remember a &#8220;crablike&#8221; entity, as noted in this screen shot of the text that was fed to the Knowledgebase:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="227" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021342-1024x227.png" alt="" class="wp-image-267" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021342-1024x227.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021342-300x67.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021342-768x170.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-021342.png 1361w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Section 3: Interpolation and Speculation</strong></p>



<p><code>Prompt: In Rendezvous with Rama, why is Rama visiting our solar system?</code></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM</strong></p>



<p>That&#8217;s another great question about &#8220;Rendezvous with Rama&#8221;! Unfortunately, Clarke doesn&#8217;t provide a clear or explicit answer to why Rama is visiting our solar system. In fact, the novel leaves this question entirely unanswered.</p>



<p>Throughout the book, various scientists and theorists propose different explanations for Rama&#8217;s presence in our solar system, but none of these theories are definitively proven or disproven. Some suggest that Rama might be a survey vessel sent by an advanced civilization to study the solar system, while others propose that it could be some kind of cosmic structure that has been swept into our system.</p>



<p>Clarke intentionally leaves this question open-ended, allowing readers to draw their own conclusions and speculation about Rama&#8217;s purpose. This ambiguity is a hallmark of the novel, adding to its sense of mystery and wonder.</p>



<p>In an interview, Clarke himself stated that he deliberately avoided providing a clear explanation for Rama&#8217;s presence in our solar system, preferring to let readers&#8217; imaginations fill in the gaps. By doing so, Clarke aimed to create a sense of awe and curiosity about the universe and its potential secrets.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + GOOGLE</strong></p>



<p>Unfortunately, I don&#8217;t have a clear answer to this question from the context provided. The context mentions that Rama&#8217;s presence and intentions are unclear, and Clarke himself seems to be leaving many questions unanswered in the novel. One of the quotes from the source_context even says &#8220;for all the questions Rama environment raises, Clarke offers very few, in fact almost no, definite answers.&#8221;</p>



<p>Therefore, I must say that we don&#8217;t really know why Rama is visiting our solar system, as it&#8217;s intentionally left ambiguous by Arthur C. Clarke.</p>



<p>Sources Referenced:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="762" height="133" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-022958.png" alt="" class="wp-image-271" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-022958.png 762w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-022958-300x52.png 300w" sizes="(max-width: 762px) 100vw, 762px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="867" height="136" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023005.png" alt="" class="wp-image-272" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023005.png 867w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023005-300x47.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023005-768x120.png 768w" sizes="(max-width: 867px) 100vw, 867px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p><strong>LLM + RAG</strong></p>



<p>Rama is visiting our solar system because it will be at perihelion (its closest point to the Sun) in three weeks and then it will leave the solar system just as fast as it came in. According to Rodrigo&#8217;s theory, if there&#8217;s any truth to it, Rama might make another velocity change and rendezvous with Earth, which would allow it to remain in the solar system.</p>
</div>
</div>



<p><strong>Results</strong></p>



<p>In line with the previous responses, the LLM trained information response is the longest and seems to be general knowledge, ending with elaboration that sounds like something out of a book review.</p>



<p>The Google API generated response is short and concise, and seems to offer a quote from one of it&#8217;s references, which is a nice touch:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="683" height="101" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023426.png" alt="" class="wp-image-275" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023426.png 683w, https://aadsit.com/wp-content/uploads/2025/01/image-20250123-023426-300x44.png 300w" sizes="(max-width: 683px) 100vw, 683px" /><figcaption class="wp-element-caption"><sub>From Kingofthenerds.wordpress.com</sub></figcaption></figure></div>


<p>Lastly the RAG generated response is the most underwhelming response yet. It seems entirely based on the facts in the early chapters of the book, rather than drawing in and using information from the book in general.</p>



<p class="has-text-align-center"><strong>Conclusion</strong></p>



<p>The LLM trained model provides a detailed and lengthy response, but often makes assumptions or draws conclusions that aren&#8217;t supported by the context.</p>



<p>The Google API generated responses are concise and to the point, but sometimes seem to rely on pre-existing knowledge or references rather than providing a fresh interpretation of the information.</p>



<p>The RAG (Reinforcement Learning from Human Feedback) generated responses are often underwhelming and seem to be based solely on the early chapters of the book. They rarely draw on broader themes or motifs in the narrative, instead sticking to surface-level facts and descriptions.</p>



<p>It&#8217;s worth noting that all three models have their strengths and weaknesses. The LLM trained model excels at providing detailed information and explaining complex concepts, but can sometimes struggle with nuance and subtlety. The Google API generated responses are great for quick answers and concise summaries, but might not always provide the most in-depth or insightful analysis. The RAG generated responses have potential for being more nuanced and context-specific, but often fall short due to their reliance on early chapters and lack of broader thematic understanding.</p>



<p>Overall I think the LLM trained information and Google API enabled results provide fairly satisfactory results, however I will have to leave the RAG based prompts to a minimum or for technical information only.</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/246/">AI Response Showdown &#8211; Rendezvous with Rama</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/homelab/246/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nginx Reverse Proxy Guide for Self-Hosted Services</title>
		<link>https://aadsit.com/selfhosting/143/</link>
					<comments>https://aadsit.com/selfhosting/143/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Mon, 20 Jan 2025 04:40:50 +0000</pubDate>
				<category><![CDATA[Selfhosting]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=143</guid>

					<description><![CDATA[<p>When it comes to self-hosting, having services available by their IP address and port number can be a hassle [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/selfhosting/143/">Nginx Reverse Proxy Guide for Self-Hosted Services</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p>When it comes to self-hosting, having services available by their IP address and port number can be a hassle to keep track of. A much more practical solution is to use a Reverse Proxy, which receives requests for a site and acts as an intermediary to connect your request to the right server.</p>



<p><strong>What is a Nginx Reverse Proxy?</strong></p>



<p>A Nginx reverse proxy server is a powerful tool that&#8217;s designed to handle large volumes of traffic while keeping your infrastructure organized. As a web server tool, it&#8217;s often used for hosting websites directly, but its capabilities don&#8217;t stop there. With Nginx&#8217;s Proxy Pass configuration, you can pass requests to another URL or IP/port combination &#8211; even implement load balancing.</p>



<p><strong>Why Choose Nginx as Your Reverse Proxy?</strong></p>



<p>There are many reasons why Nginx is a top choice among web developers and sysadmins. Some of the key benefits include:</p>



<ul class="wp-block-list">
<li><strong>High performance </strong>: Nginx is designed to handle large volumes of traffic while keeping your infrastructure organized.</li>



<li><strong>Load balancing </strong>: With Nginx, you can easily implement load balancing to distribute traffic across multiple servers.</li>



<li><strong>SSL termination </strong>: Nginx makes it easy to terminate SSL certificates and ensure secure connections between clients and servers.</li>
</ul>



<p><strong>Prerequisites</strong></p>



<ol start="1" class="wp-block-list">
<li><strong>Domain Registration </strong>: You should have a registered domain name (e.g., aadsit.com) and ensure that it is correctly pointed to your server. If you have a dynamic IP address I highly recommend setting up a dynamic DNS client!</li>



<li><strong>Public IP Address </strong>: Your server should have a publicly accessible IP address (i.e., not behind a Carrier Grade NAT or firewall ISP).</li>



<li><strong>Proxmox/Networking Setup </strong>: Familiarity with Proxmox or other virtualization software, as well as basic networking concepts (e.g., subnets, ports, etc.) is assumed.</li>
</ol>



<p><strong>Setting Up a Nginx Reverse Proxy Server with Certbot</strong></p>



<p>In my setup, I use two separate Nginx servers: one handles public-facing traffic, while the other is for internal-only traffic. This post focuses on setting up the public-facing Nginx reverse proxy server using <a href="https://certbot.eff.org/" target="_blank" rel="noreferrer noopener">Certbot </a>to obtain Let&#8217;s Encrypt certificates. By following this guide, you&#8217;ll learn how to:</p>



<ul class="wp-block-list">
<li>Set up a Nginx reverse proxy server</li>



<li>Obtain free SSL certificates from Let&#8217;s Encrypt using Certbot</li>
</ul>



<p>To begin we will discuss our lab environment and dive into creating a host for our server. At home I run a Proxmox cluster with High Availability, with most of my servers being virtual machines. In this demo, we will be setting up an individual LXC container for low overhead and quick setup.</p>



<p>The host server is &#8220;Atacama&#8221;:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="539" height="249" src="https://aadsit.com/wp-content/uploads/2025/01/image-1.png" alt="" class="wp-image-150" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-1.png 539w, https://aadsit.com/wp-content/uploads/2025/01/image-1-300x139.png 300w" sizes="(max-width: 539px) 100vw, 539px" /></figure>



<p>This article doesn&#8217;t cover Proxmox or networking basics and assumes you have these covered. We will create a new LXC container for our demo. I&#8217;m using the ubuntu-22.04-standard image as that is what I have readily downloaded. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="573" height="183" src="https://aadsit.com/wp-content/uploads/2025/01/image-2.png" alt="" class="wp-image-151" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-2.png 573w, https://aadsit.com/wp-content/uploads/2025/01/image-2-300x96.png 300w" sizes="(max-width: 573px) 100vw, 573px" /></figure>



<p>We will get signed into the server and run apt-update to get a list of current packages</p>



<figure class="wp-block-image size-full"><img decoding="async" width="705" height="382" src="https://aadsit.com/wp-content/uploads/2025/01/image-4.png" alt="" class="wp-image-154" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-4.png 705w, https://aadsit.com/wp-content/uploads/2025/01/image-4-300x163.png 300w" sizes="(max-width: 705px) 100vw, 705px" /></figure>



<p>It&#8217;s good practice to get everything updated before continuing, so we will go ahead and run apt full-upgrade -y</p>



<figure class="wp-block-image size-full"><img decoding="async" width="559" height="158" src="https://aadsit.com/wp-content/uploads/2025/01/image-5.png" alt="" class="wp-image-155" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-5.png 559w, https://aadsit.com/wp-content/uploads/2025/01/image-5-300x85.png 300w" sizes="(max-width: 559px) 100vw, 559px" /></figure>



<p>Now that everything is updated we will install Nginx and Certbot, including the module for certbot to interact with Nginx.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="662" height="212" src="https://aadsit.com/wp-content/uploads/2025/01/image-8.png" alt="" class="wp-image-159" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-8.png 662w, https://aadsit.com/wp-content/uploads/2025/01/image-8-300x96.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p>Now that the packages are installed, we need to enable Nnginx to run as a service with &#8220;sudo systemctl enable nginx&#8221;, and then start the service after. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="952" height="96" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035408.png" alt="" class="wp-image-161" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035408.png 952w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035408-300x30.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035408-768x77.png 768w" sizes="(max-width: 952px) 100vw, 952px" /></figure>



<p>Our server is sitting at 192.168.2.3. Specifying HTTP, NOT HTTPS, we see a welcome screen! </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="284" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035521-1024x284.png" alt="" class="wp-image-163" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035521-1024x284.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035521-300x83.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035521-768x213.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-035521.png 1092w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>As the focus of this is on setting up a reverse proxy, let&#8217;s next discuss our target. I choose to have a different virtual machine run Docker, hosting websites and similar services in a containerized environment. Without going into the details, this provides easy snapshotting, backups, and even high-availability and live migrations when I do server maintenance. This server is at 192.168.2.8, and I have a WordPress website running on port 9080. We can set up a basic Proxy in Nginx by creating a new file in /etc/nginx/sites-available, such as &#8220;demo&#8221;. I like to use the full name for my configuration files, and this will be a sub domain of aadsit.com, so I will call this &#8220;demo.aadsit.com&#8221;. The text in the &#8220;Demo.aadsit.com&#8221; file:</p>



<pre class="wp-block-code"><code>server {
    server_name demo.aadsit.com;
    listen 80;
    location / {
        proxy_pass http://192.168.2.8:9080;
        client_max_body_size 800M;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
    }


}


</code></pre>



<p class="has-large-font-size"></p>



<h1 class="wp-block-heading">Explained</h1>



<h2 class="wp-block-heading">Server Block</h2>



<p><em>server { </em>: Starting point for an individual server block.<br><em>server_name demo.aadsit.com</em>;: Specifies the domain name that this server block should respond to.<br><em>listen 80</em>;: Tells nginx to listen on port 80 (the standard HTTP port).</p>



<h2 class="wp-block-heading"><strong>Location Block</strong></h2>



<ul class="wp-block-list">
<li><code><em>location /</em> {</code> : Specifies the URL path or pattern that should be handled by this server block (in this case, requests made to <code>/</code>).</li>



<li><code><em>proxy_pass http://192.168.2.8:9080;</em></code>: Forwards incoming traffic to a service located at <code>http://192.168.2.8:9080</code>.</li>



<li><code><em>client_max_body_size 800M;</em></code>: Sets the maximum body size that can be transferred from the client to 800 megabytes. This can be any value, I usually set it to at least a few MB. </li>
</ul>



<h2 class="wp-block-heading"><strong>Proxy Header Settings</strong></h2>



<p>These settings preserve and manipulate information about the original request:</p>



<ul class="wp-block-list">
<li><code><em>proxy_set_header Upgrade</em> <em>$http_upgrade</em>;</code> &amp; <code><em>proxy_set_header Connection "upgrade"</em>;</code>: Set up headers for WebSockets upgrades</li>



<li>Copying specific headers from the original request to the proxied server:
<ul class="wp-block-list">
<li><code>p<em>roxy_set_header Host $host;</em></code></li>



<li><code><em>proxy_set_header X-Real-IP $remote_addr;</em></code></li>



<li><code><em>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</em></code></li>



<li><code><em>proxy_set_header X-Forwarded-Proto $scheme;</em></code></li>



<li><code><em>proxy_set_header X-Forwarded-Host $host;</em></code></li>



<li><code><em>proxy_set_header X-Forwarded-Port $server_port;</em></code></li>
</ul>
</li>
</ul>



<p>After creating the configuration file, you have to link it into the sites-enabled folder. You can do this with &#8220;ln -s&#8221; to create a soft link, as shown below. This is a common way of implementing configuration files, as it allows you to update a file in one spot and be reflected in multiple spots, or otherwise unlink a file without deleting it. I use a script to link all .com and similar website configuration files in one go. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="157" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040551-1024x157.png" alt="" class="wp-image-164" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040551-1024x157.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040551-300x46.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040551-768x118.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040551.png 1107w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>After that let&#8217;s restart Nginx with systemctl restart nginx</p>



<figure class="wp-block-image size-full"><img decoding="async" width="698" height="44" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040719.png" alt="" class="wp-image-167" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040719.png 698w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040719-300x19.png 300w" sizes="(max-width: 698px) 100vw, 698px" /></figure>



<p>Now NGINX is listening and will pass traffic to the target server! We can test this internally by adding &#8220;demo.aadsit.com&#8221; to our hosts file, as shown (in Windows):</p>



<figure class="wp-block-image size-full"><img decoding="async" width="549" height="231" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040900.png" alt="" class="wp-image-168" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040900.png 549w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040900-300x126.png 300w" sizes="(max-width: 549px) 100vw, 549px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="465" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040911-1024x465.png" alt="" class="wp-image-170" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040911-1024x465.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040911-300x136.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040911-768x349.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-040911.png 1202w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>&#8220;You might realize now that your reverse proxy is only reachable internally. That may be a good stopping point for some people, but our goal is to make this externally available! If you&#8217;re just setting up an internal-only reverse proxy and don&#8217;t need public HTTPS encryption, you can consider it complete. However, if you want publicly signed certificates for your website (for HTTPS encryption), the easiest way that we&#8217;ve already set ourselves up for is to use Let&#8217;s Encrypt via Certbot!</p>



<p>Note: Alternatively, if this is an internal-only reverse proxy, visitors can use a certificate signed by a private certificate authority instead.<a href="https://aadsit.com/uncategorized/103/"> Installing the certificate authority on their computer </a>will allow them to see the website as trusted.</p>



<p>I already have DNS in place for demo.aadsit.com to reach my external IP address: </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="346" height="144" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041107.png" alt="" class="wp-image-171" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041107.png 346w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041107-300x125.png 300w" sizes="(max-width: 346px) 100vw, 346px" /></figure></div>


<p>The next step is to set up SNAT or Port Forwarding on my firewall to direct traffic to the server. In my case, I use Aliases as much as possible, and have an alias &#8220;WebTraffic_Ports&#8221; with port 80 and 443, HTTP and HTTPS respectively. Both are important to have! Your specific situation may vary, and if you do not have a public IP address you will not be able to do this. (Note: if you also use PfSense or other more-capable firewalls, you may need to find and enable the settings for &#8220;NAT Reflection&#8221; to reach websites internally. )</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="62" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041300-1024x62.png" alt="" class="wp-image-173" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041300-1024x62.png 1024w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041300-300x18.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041300-768x46.png 768w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041300.png 1256w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Once we have external access to our website set up, let&#8217;s get some certificates generated! On our demo server we will run &#8220;certbot &#8211;nginx&#8221; </p>



<figure class="wp-block-image size-full"><img decoding="async" width="756" height="479" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041904.png" alt="" class="wp-image-177" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041904.png 756w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-041904-300x190.png 300w" sizes="(max-width: 756px) 100vw, 756px" /></figure>



<p>You will be prompted to answer several questions, and then given a list of server names found in your configuration files. If you have multiple sites being hosted, you can submit a request for all of them in one go. It will then provide a single certificate with all sites included as &#8220;subject alternative names&#8221;. </p>



<p>The next step is to set up SNAT or Port Forwarding on your firewall to direct traffic to the server. However, this step may fail if port 80 is not forwarded to your server correctly! You may also encounter issues if you have geo-blocking or other restrictions in place, which can prevent the Automated Certificate Management Environment (ACME) protocol used by Certbot from completing.</p>



<p>If everything goes well, Certbot will automatically generate the certificate with LetsEncrypt and update your configuration file!</p>



<figure class="wp-block-image size-full"><img decoding="async" width="920" height="240" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042310.png" alt="" class="wp-image-183" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042310.png 920w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042310-300x78.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042310-768x200.png 768w" sizes="(max-width: 920px) 100vw, 920px" /></figure>



<p>You can see that now we have a section listening to port 80 which replies with a redirect to our site with HTTPS, and now it listens at 443 with the letsencrypt certificate! </p>



<figure class="wp-block-image size-full"><img decoding="async" width="902" height="667" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042244.png" alt="" class="wp-image-181" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042244.png 902w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042244-300x222.png 300w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042244-768x568.png 768w" sizes="(max-width: 902px) 100vw, 902px" /></figure>



<p>Finally, try going to your site (ensure you&#8217;ve removed the hosts file entry or local dns if you tried it!) and ensure that you are redirected to HTTPS. In this case, DEMO.AADSIT.COM is failing to load images resources as they are actually at AADSIT.COM, which is offline while I do this demonstration. <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<figure class="wp-block-image size-full"><img decoding="async" width="550" height="363" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042430.png" alt="" class="wp-image-184" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042430.png 550w, https://aadsit.com/wp-content/uploads/2025/01/image-20250120-042430-300x198.png 300w" sizes="(max-width: 550px) 100vw, 550px" /></figure>



<p>In this article, we&#8217;ve covered the basics of setting up a Nginx reverse proxy server on an LXC container using Proxmox as our virtualization platform. We walked through the process of obtaining free SSL certificates from Let&#8217;s Encrypt using Certbot, setting up a basic Nginx configuration to proxy requests to the target server, and configuring the target server to receive traffic.</p>



<p>And that&#8217;s it! With these steps, you should now have a functional reverse proxy setup using Nginx on an LXC container running on Proxmox. This is just the tip of the iceberg &#8211; there are many ways to customize and optimize your reverse proxy setup for your specific needs.</p>



<p>Thanks for reading, and happy self-hosting! </p>



<p>Created with my co-editor Llama3.1 8b running on an Nvidia P4, which was a lot of fun! </p>



<p></p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/selfhosting/143/">Nginx Reverse Proxy Guide for Self-Hosted Services</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/selfhosting/143/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Subnetting Like a Pro in Your Homelab</title>
		<link>https://aadsit.com/homelab/202/</link>
					<comments>https://aadsit.com/homelab/202/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Mon, 18 Nov 2024 23:37:00 +0000</pubDate>
				<category><![CDATA[Homelab]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=202</guid>

					<description><![CDATA[<p>As a new homelabber or someone looking to level up their networking game, understanding subnetting is crucial. In this [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/202/">Subnetting Like a Pro in Your Homelab</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p id="block-da634b2c-780d-45d9-9960-284a4b75175a"></p>



<p id="block-5bf12bc1-f7b3-469a-83b3-f7144421ef7a">As a new homelabber or someone looking to level up their networking game, understanding subnetting is crucial. In this guide, we&#8217;ll break down the basics, provide some hands-on examples, and give you a solid foundation for tackling more complex network configurations.</p>



<p id="block-254004cd-e9ce-4737-8e23-5f0929942a36"><strong>Outline:</strong></p>



<ol start="1" id="block-5d3dace2-dd27-4209-b4ed-1e51daca59cb" class="wp-block-list">
<li><strong>What is Subnetting?</strong></li>



<li><strong>Why Bother with Subnetting?</strong></li>



<li><strong>Understanding IP Addresses and Subnets</strong></li>



<li><strong>Step-by-Step Subnetting Process</strong></li>



<li><strong>Practical Examples in Your Homelab</strong></li>



<li><strong>Troubleshooting Common Issues</strong></li>
</ol>



<h3 class="wp-block-heading" id="block-dffea67e-cf8e-4abc-8725-d104de8a8890">What is Subnetting?</h3>



<p id="block-45c3faa8-c676-4ca4-899d-f0b3418efdb9">Subnetting, also known as IP subnetting, is the process of dividing an IP network into smaller, more manageable sub-networks (subnets) to improve network organization and efficiency.</p>



<p id="block-068f3f3e-fd7d-49fc-87aa-9ea94f1d5196">Think of it like a city: a big city has many neighborhoods, each with its own unique identity. Similarly, your network can be divided into subnets, making it easier to manage traffic, security, and other network-related tasks.</p>



<h3 class="wp-block-heading" id="block-b0334b4f-6184-4c33-985c-00fe29ed5cb2">Why Bother with Subnetting?</h3>



<p id="block-e7ff4771-4d2f-43c6-b7e2-6861763c7cba">Subnetting offers several benefits:</p>



<ul id="block-1646a57d-c34f-4cb2-9698-3e6970330ceb" class="wp-block-list">
<li><strong>Improved Security </strong>: By dividing the network into smaller subnets, you can implement more targeted security measures.</li>



<li><strong>Enhanced Network Organization </strong>: Subnetting helps keep your network tidy by grouping devices based on department, location, or function.</li>



<li><strong>Better Traffic Management </strong>: Subnetting enables you to control and prioritize traffic flow between different parts of the network.</li>
</ul>



<h3 class="wp-block-heading" id="block-04ebd64c-2cef-40d3-8f41-678d907ba668">Understanding IP Addresses and Subnets</h3>



<p id="block-94f12d7d-fb80-452a-9c1c-f25f36fe885e">To subnet, you need a solid grasp of IP addresses and subnet masks. Don&#8217;t worry; it&#8217;s not as scary as it sounds!</p>



<p id="block-0fbb155f-0444-4125-ae62-07f0eed86756">An IP address consists of:</p>



<ul id="block-e26d7e50-2baf-4730-a22f-9833202ebd16" class="wp-block-list">
<li><strong>Network ID </strong>(first part)</li>



<li><strong>Host ID </strong>(second part)</li>
</ul>



<p id="block-e03d8d26-08eb-49e0-82cc-87ea960e88b9">A subnet mask is used to identify the network and host parts of an IP address.</p>



<p id="block-bba6f139-d613-49db-9615-9b32a6ae86d7">For example: IP Address: 192.168.1.100 Subnet Mask: 255.255.255.0</p>



<p id="block-47e91337-4448-46b5-938d-1ebbe3555d39">In this example, the first three parts (192.168.1) represent the network ID, while the last part (100) represents the host ID.</p>



<h3 class="wp-block-heading" id="block-80e296e6-2998-450c-9efd-cdbf54e2df7d">Subnet Masks vs CIDR Notation: What&#8217;s the Difference?</h3>



<p id="block-e42acbd7-576a-4db2-b69d-596e699673b4">You might have noticed that subnet masks can be expressed in two different ways: as a series of dotted decimal numbers (e.g., 255.255.255.0) or as a single number, known as CIDR notation (Classless Inter-Domain Routing).</p>



<p id="block-bf5f507e-9291-4457-a480-9e8b30866f37">CIDR notation is a shorthand way to express the subnet mask, and it&#8217;s used extensively in modern networking. The CIDR notation uses an &#8220;X&#8221; (where X is a number from 0-32) after the IP address to indicate the number of bits that are set in the subnet mask.</p>



<p id="block-9cfc7e26-3686-4d41-92f4-f8a93c816982">For example:</p>



<ul id="block-58e13625-930b-4237-872b-dd85be5859ec" class="wp-block-list">
<li><strong>255.255.255.0 </strong>translates to: /24</li>



<li><strong>192.168.1.100/24</strong></li>
</ul>



<p id="block-2baabbf5-26f7-4c20-960e-bcff06dfe588">Note: When you see /32, this means it is a single address, not a network!</p>



<p id="block-33a4fc30-7b6e-4cf6-83b2-b1e227eddad9">In CIDR notation, the &#8220;/24&#8221; means that the first 24 bits (or three parts/octets) of the IP address are used for the network ID, and the remaining 8 bits (or last part) are used for the host ID.</p>



<p id="block-42e1a43f-6097-4a53-92b9-8f6c72fb80ca">When to use subnet masks vs CIDR notation?</p>



<ul id="block-00dd5b46-c068-4d8a-988b-5ac22e960d3a" class="wp-block-list">
<li>Use traditional subnet masks when working with older operating systems or legacy equipment that don&#8217;t support CIDR notation.</li>



<li>Use CIDR notation in modern networking environments, as it&#8217;s more concise and easier to read. Many network management tools and configuration files also prefer CIDR notation.</li>
</ul>



<p id="block-6299fe31-5fbb-4f3a-9f8f-e713a7cf5463">By understanding the basics of IP addresses, subnet masks, and CIDR notation, you&#8217;ll be well on your way to mastering subnets and configuring networks like a pro!</p>



<h2 class="wp-block-heading">What does it mean? </h2>



<p id="block-bc3f7a4d-019c-47a9-8a04-adaa3f178cee">In essence, a subnet mask is a 32-bit number (or 128 bits for IPv6) that helps your switch or router figure out which devices on the network are part of the same subnet as you. Think of it like a filter: the ones in the bit positions where the subnet mask has a &#8216;1&#8217; correspond to the network part, and those with a &#8216;0&#8217; represent the host part. For example, if we use the common subnet mask 255.255.255.0 (binary 11111111.11111111.11111111.00000000), any IP address that shares these first three sets of ones will be considered to be on the same network as you.</p>



<p id="block-bc3f7a4d-019c-47a9-8a04-adaa3f178cee">Now, let&#8217;s dive into binary for a sec &#8211; it might look like hieroglyphics at first, but trust me, it&#8217;s actually pretty straightforward once you get the hang of it. In subnet masking, we use binary numbers to represent IP addresses and their corresponding bits. For instance, when we say an IP address is &#8216;192.168.1.100&#8217;, in binary, that looks like 11000000.10101000.00000001.01100100 &#8211; breaking down each octet (or group of eight bits) to see which are part of the network and which represent individual hosts.</p>



<h3 class="wp-block-heading" id="block-50f64ff5-b8d4-4423-9edc-bc5226bffbf5">Step-by-Step Subnetting Process</h3>



<p id="block-b1bd38df-fc45-4858-b789-fd52ee70de7a">Here&#8217;s a simplified step-by-step process to subnet:</p>



<ol start="1" id="block-492d1c96-34e8-4e8c-a54a-7613e59a1f47" class="wp-block-list">
<li><strong>Determine the IP Address Range </strong>: Decide on the IP address range for your subnet.</li>



<li><strong>Calculate the Number of Available Hosts </strong>: Use the following formula: (2^h) &#8211; 2 (where h is the number of host bits).
<ul class="wp-block-list">
<li>The &#8220;-2&#8221; part subtracts 2 from the total number of bits in the host portion, because the first and last bit is always reserved for the network ID and last for Broadcast, leaving you with a smaller set of bits to work with.</li>
</ul>
</li>



<li><strong>Determine the Subnet Mask </strong>: Based on the calculated number of available hosts, choose a subnet mask that will fit your needs. For example, if you need 254 host addresses you can use 255.255.255.0 (because 0-255 = 256, and you will lose two for the network and broadcast IPs). If you need 355 addresses you could use 255.255.128.0 (or 11111111.11111111.11111110.00000000 in binary), which would give you (2^9)-2 or 510 usable IP addresses!</li>



<li><strong>Assign IP Addresses and Subnet Masks </strong>: Assign IP addresses to devices within your subnet.</li>
</ol>



<h3 class="wp-block-heading" id="block-8cff2e43-ffe7-4fc2-bbc5-de376e450dc4">Practical Examples in Your Homelab</h3>



<p id="block-a0f2f52e-a44a-4c4a-8e18-2290495f38c3">Let&#8217;s put subnetting into practice using our trusty homelab!</p>



<p id="block-24289e5a-bbcb-4fc2-a877-9325e00c7803"><strong>Example 1: Simple Subnet</strong></p>



<p id="block-f14b70bd-f438-4e32-a9e1-99ab17ef1a78">Suppose you have a home network with 10 devices, and you want to create a simple subnet for all of them. You can assign the following:</p>



<ul id="block-90bcf711-0115-473e-89ca-aeab5969c101" class="wp-block-list">
<li><strong>IP Address </strong>: 192.168.0.0</li>



<li><strong>Subnet Mask </strong>: 255.255.255.0</li>
</ul>



<p id="block-1f412407-1ae0-4578-aef9-76ae4b0a9add">This will give you a single subnet with 254 available hosts (2^h-2), where h is 8).</p>



<p id="block-8a76f03b-a0f3-40ca-9f90-c6699802f332"><strong>Example 2: More Complex Subnet</strong></p>



<p id="block-1111ec89-7f9b-4fd7-ba68-b78023f6fd99">Imagine you have multiple subnets for different departments within your company. The following is in CIDR notation, a more efficient method to convey the same information.</p>



<ul id="block-086cd7c8-b361-45be-a835-2b0bd97f7fa3" class="wp-block-list">
<li><strong>Sales Department </strong>: 192.168.1.0/24
<ul class="wp-block-list">
<li>(this is the same as 255.255.255.0)</li>
</ul>
</li>



<li><strong>Marketing Department </strong>: 192.168.2.0/25
<ul class="wp-block-list">
<li>(this is the same as 255.255.255.1)</li>
</ul>
</li>



<li><strong>IT Department </strong>: 192.168.3.0/16
<ul class="wp-block-list">
<li>(this is the same as 255.255.0.0)</li>
</ul>
</li>
</ul>



<p id="block-0c9bf79a-0aad-4b7f-9e16-f71066c69d9e">In this example, you&#8217;ve created three separate subnets for different departments using different subnet masks. Devices on these subnets can &#8220;speak&#8221; to each other directly, but to reach other subnets they must go through a router and any relevant firewalls. For example, the IT Department may need ALLOW rules to remotely manage computers in the Sales department, but the Sales Department computers should not need to interact with the Marketing Department computers.</p>



<h3 class="wp-block-heading" id="block-b9dd6579-ceea-406a-8503-74bfacbc0615">VLANs vs Subnets: Understanding the Basics</h3>



<p id="block-91f8f7f4-a7bf-45b4-81e3-8fefc16159f1">When it comes to network organization, two popular methods are often confused with each other: VLANs (Virtual Local Area Networks) and subnets. While they share some similarities, they serve different purposes and have distinct characteristics.</p>



<p id="block-41666ac7-f29d-452b-9d35-56f549f0d70f"><strong>VLANs:</strong></p>



<ul id="block-b9f30655-8d69-49b9-ab3e-221f28030005" class="wp-block-list">
<li><strong>Network isolation </strong>: VLANs use VLAN tagging on switches and routers to isolate the network into separate virtual networks. The hardware must support this feature though.</li>



<li><strong>Traffic separation </strong>: Devices in different VLANs do not communicate with each other by default, reducing the risk of unauthorized access or data breaches.</li>



<li><strong>Flexibility </strong>: VLANs can be created, modified, or deleted as needed.</li>



<li><strong>DHCP: </strong>One major reason that a person may choose VLANs over just simple subnets is that when there is no VLAN usage, all layer 2 broadcast requests go to the same place. A DHCP server will provide addresses to any DHCP request it receives, and so without VLANs isolating the frames on the network you can only have one DHCP server (there are exceptions, but this would not be considered best practice).</li>
</ul>



<p id="block-3d4af04a-2827-48f3-b880-e3a17697420b"><strong>Subnets:</strong></p>



<ul id="block-f43041bb-3612-4fa0-981f-edcca2d92e70" class="wp-block-list">
<li><strong>IP address configuration </strong>: Subnets are a logical grouping of IP addresses within an IPv4 network.</li>



<li><strong>Routing efficiency </strong>: Devices on different subnets can communicate with each other through routers, reducing traffic congestion and improving overall network performance.</li>



<li><strong>Scalability </strong>: Subnets can be easily created or modified as needed.</li>



<li><strong>Security:</strong> There is no security on individual subnets as traffic does not go through a router to get to other hosts on the same subnet. A user may change their subnet at any time with relevant privileges, however without a router to handle traffic outside of the subnet there may be no internet.</li>
</ul>



<h3 class="wp-block-heading" id="block-ceb38644-725e-4660-bb34-8e404d85b413">Troubleshooting Common Issues</h3>



<p id="block-c4376e8d-99d9-4e8e-8f02-aa443e8e1c0e">When working with subnetting, you might encounter some common issues. Here are a few tips to help you troubleshoot:</p>



<ul id="block-03833eb2-57cb-48e9-82c6-789e2aa3eb9b" class="wp-block-list">
<li><strong>Incorrect Subnet Mask </strong>: Double-check your subnet mask calculations and ensure it&#8217;s correctly applied.</li>



<li><strong>IP Address Conflicts </strong>: Verify that each device has a unique IP address within its respective subnet.</li>



<li><strong>Network Disruptions </strong>: Identify the source of network disruptions, such as faulty devices or misconfigured subnets.</li>
</ul>



<p id="block-b726ad4f-4a6d-4203-9176-ea7af0609536"><strong>Summary:</strong></p>



<p id="block-ed24086b-6d69-4cb4-815e-47dc7a9f00fd">In this guide, we&#8217;ve explored the basics of subnetting, including what it is, why you need it, and how to implement it in your homelab. We&#8217;ve also provided practical examples to help solidify your understanding.</p>



<p id="block-f50ad9e4-4235-4124-9809-05872288ebcb">Remember, subnetting is a crucial aspect of network management. By mastering subnetting, you&#8217;ll be able to:</p>



<ul id="block-c57b2f88-ef13-4f8b-92f7-4bc7d2148c54" class="wp-block-list">
<li><strong>Improve Network Organization </strong>: Subnetting helps keep your network tidy by grouping devices based on department, location, or function.</li>



<li><strong>Enhance Security </strong>: By dividing the network into smaller subnets, you can implement more targeted security measures.</li>



<li><strong>Better Traffic Management </strong>: Subnetting enables you to control and prioritize traffic flow between different parts of the network.</li>
</ul>



<p id="block-c8569f48-f788-4dea-a4a1-29d191b6543d"><strong>Homelab Practice:</strong></p>



<p id="block-8e3364b2-d3ec-47bf-a1f8-8cb9dd16d333">Now that you&#8217;ve got a solid understanding of subnetting, it&#8217;s time to put your skills to practice! Set up your own homelab and experiment with subnetting. Use online tools or calculators to help with calculations.</p>



<p id="block-30dff810-f159-4fdf-888b-a0516839a340"><strong>Resources:</strong></p>



<p id="block-b8a5a683-2537-424e-92e6-b4ccd3e201b6">For further learning, check out these resources:</p>



<ul id="block-f2853be2-48c3-410e-8380-e234884d8bf5" class="wp-block-list">
<li><strong><a href="https://datatracker.ietf.org/doc/html/rfc1812#:~:text=RFC%201812%20%2D%20Requirements%20for%20IP%20Version%204%20Routers" target="_blank" rel="noopener">RFC 1812</a> </strong>: A comprehensive guide to IP subnetting.</li>



<li><strong><a href="https://www.calculator.net/ip-subnet-calculator.html" target="_blank" rel="noopener">Calculator.net </a></strong>: An online subnet calculator for easy calculations.</li>
</ul>



<p id="block-72400ab1-1bbe-4db3-aa17-b2e2a2fb243c">That&#8217;s it! I hope this guide has helped you become more comfortable with subnetting. Remember, practice makes perfect – so get out there and subnet like a pro!</p>



<p id="block-c84a60c2-0a46-4d87-b08d-f311173f0675">Made with my co-editor, Llama 3.1 8B <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/202/">Subnetting Like a Pro in Your Homelab</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/homelab/202/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Setting Up Your Homelab: Best Practices to Get You Started</title>
		<link>https://aadsit.com/homelab/237/</link>
					<comments>https://aadsit.com/homelab/237/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Tue, 13 Aug 2024 04:51:40 +0000</pubDate>
				<category><![CDATA[Homelab]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=237</guid>

					<description><![CDATA[<p>As a fellow homelab enthusiast, I&#8217;m sure you&#8217;re excited to start building your own IT playground. But before we [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/237/">Setting Up Your Homelab: Best Practices to Get You Started</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>As a fellow homelab enthusiast, I&#8217;m sure you&#8217;re excited to start building your own IT playground. But before we dive into the nitty-gritty details, let&#8217;s take a step back and talk about some best practices that will make your journey smoother, safer, and more enjoyable.</p>



<p><strong>Introduction</strong></p>



<p>Having a home lab is not just about throwing together some hardware and software – it&#8217;s an opportunity to learn, experiment, and push the boundaries of what&#8217;s possible. But with great power comes great responsibility. In this blog post, we&#8217;ll cover some essential best practices that will help you set up your homelab safely, efficiently, and effectively.</p>



<p><strong>Outline</strong></p>



<ol start="1" class="wp-block-list">
<li><strong>Plan Before You Build </strong>: Don&#8217;t just start buying hardware without a clear idea of what you want to achieve. Take the time to research, plan, and design your homelab before making any purchases.</li>



<li><strong>Power Management is Key </strong>: Make sure you have a solid power management strategy in place to prevent overloading, overheating, or electrical shock. This includes using surge protectors, UPS units, and monitoring systems.</li>



<li><strong>Cable Management is Crucial </strong>: Keep your cables organized, labeled, and secure to avoid damage, tangling, or even fires. Use cable ties, zip ties, or cable management boxes to keep your workspace tidy.</li>



<li><strong>Storage </strong>: Invest in sturdy storage and shelving units to keep your equipment, tools, and supplies within easy reach. This will save you time, reduce clutter, and prevent losses due to misplaced items.</li>



<li><strong>Monitor and Maintain Your Equipment </strong>: Regularly check your hardware for signs of wear and tear, dust buildup, or overheating. Keep your software up-to-date, and run regular backups to ensure your data is safe.</li>



<li><strong>Join a Community and Learn from Others </strong>: Connect with fellow homelab enthusiasts through online forums (like reddit.com/r/homelab), social media groups, or local meetups. Share knowledge, ask questions, and learn from others&#8217; experiences.</li>
</ol>



<p><strong>Plan Before You Build </strong></p>



<p>Planning is key when it comes to building a successful homelab. Don&#8217;t make the mistake of buying hardware without a clear idea of what you want to achieve. Take the time to research, plan, and design your homelab before making any purchases. This will save you from costly mistakes, wasted resources, and unnecessary expenses in the long run.</p>



<p><strong>Key Considerations Before Building Your Homelab</strong></p>



<ul class="wp-block-list">
<li><strong>Define your goals </strong>: What do you want to learn or experiment with? (e.g., virtualization, containerization, cloud computing)</li>



<li><strong>Identify your requirements </strong>: Hardware, software, networking, power, and cooling needs</li>



<li><strong>Research popular homelab configurations </strong>: Explore examples online or in books to get a good starting point for planning your own setup</li>



<li><strong>Create a budget </strong>: Determine how much you&#8217;re willing to spend on equipment, software, and other resources</li>



<li><strong>Document your plan </strong>: Write down your plan, including details about hardware, software, networking, and storage</li>
</ul>



<p>By taking the time to plan before building, you&#8217;ll be well-prepared to set up a homelab that meets your specific needs and goals.</p>



<p><strong>Power Management is Key </strong></p>



<p>A solid power management strategy is crucial to prevent overloading, overheating, or electrical shock. Here are some key considerations:</p>



<ul class="wp-block-list">
<li><strong>Surge Protectors </strong>: Use surge protectors to safeguard against voltage spikes and surges that can damage your equipment.</li>



<li><strong>UPS Units </strong>: Install an Uninterruptible Power Supply (UPS) unit to provide a stable power source in case of outages or fluctuations.</li>



<li><strong>Monitoring Systems </strong>: Implement monitoring systems, such as sensors or software, to track temperature, humidity, and power consumption levels.</li>
</ul>



<p>By implementing these measures, you can ensure that your homelab runs smoothly, efficiently, and safely. Remember, a well-managed power system is essential for maintaining the integrity of your equipment and preventing costly downtime.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://aadsit.com/wp-content/uploads/2025/01/cable-1024x683.jpg" alt="" class="wp-image-241" srcset="https://aadsit.com/wp-content/uploads/2025/01/cable-1024x683.jpg 1024w, https://aadsit.com/wp-content/uploads/2025/01/cable-300x200.jpg 300w, https://aadsit.com/wp-content/uploads/2025/01/cable-768x512.jpg 768w, https://aadsit.com/wp-content/uploads/2025/01/cable-1536x1024.jpg 1536w, https://aadsit.com/wp-content/uploads/2025/01/cable-2048x1365.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Cable Management is Crucial </strong></p>



<p>Cable management is a crucial aspect of setting up an efficient and safe homelab. Inadequate cable management can lead to equipment damage, overheating, and safety hazards such as tripping or electrical shock.</p>



<p>To ensure effective cable management, consider the following strategies:</p>



<ul class="wp-block-list">
<li><strong>Use Velcro/ hook and loop instead of zip ties </strong>: This material is more flexible and easier to use than zip ties. It also provides a secure hold without damaging cables.</li>



<li><strong>Label your cables </strong>: Label each cable with its purpose and location to make it easier to identify which cable goes where.</li>



<li><strong>Route cables correctly </strong>: Route cables away from high-traffic areas and keep them away from any moving parts that could damage them.</li>



<li><strong>Use cable management boxes </strong>: Use cable management boxes to keep cables organized and secure. These can be especially useful for longer cables or those that need to be routed through tight spaces.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="500" height="334" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050012.jpg" alt="" class="wp-image-329" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050012.jpg 500w, https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050012-300x200.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></figure></div>


<p><strong>Storage  </strong></p>



<p>When setting up your home lab environment, investing in a solid storage and shelving system can help keep your workspace organized and efficient. However, this might be less of an issue for homelab enthusiasts who utilize a server rack or network cabinet to house their equipment.</p>



<p>For those with a server rack or network cabinet, the focus should shift towards optimizing the space within these units. This includes:</p>



<ul class="wp-block-list">
<li><strong>Labeling cables </strong>: Use cable ties and labels to keep track of which cables connect which devices.</li>



<li><strong>Cable management </strong>: Route excess cables through cable management systems or zip ties to prevent clutter and damage.</li>



<li><strong>Equipment organization </strong>: Store frequently used equipment, such as servers or network devices, in easy-to-reach locations.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="500" height="334" src="https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050040.jpg" alt="" class="wp-image-331" srcset="https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050040.jpg 500w, https://aadsit.com/wp-content/uploads/2025/01/image-20250201-050040-300x200.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></figure></div>


<p><strong>Monitor and Maintain Your Equipment </strong></p>



<p>As you continue to build and operate your homelab, it&#8217;s essential to monitor and maintain the environment to ensure optimal performance and longevity of your equipment. Here are some key considerations:</p>



<p><strong>Temperature Monitoring</strong></p>



<ul class="wp-block-list">
<li>Install temperature sensors in strategic locations throughout your lab to track ambient temperatures.</li>



<li>Set up alerts or notifications for when temperatures exceed safe thresholds (e.g., 75°F/24°C) to prevent overheating.</li>



<li>Consider investing in a climate-controlled enclosure or using portable air conditioning units to maintain a stable environment.</li>
</ul>



<p><strong>Power Consumption Monitoring</strong></p>



<ul class="wp-block-list">
<li>Install power monitoring software or use a network-connected UPS to track power consumption patterns.</li>



<li>Set up alerts for when power consumption exceeds expected thresholds, indicating potential inefficiencies or equipment issues.</li>



<li>Consider upgrading to energy-efficient hardware or optimizing your system configuration to reduce power consumption.</li>
</ul>



<p><strong>Regular Maintenance Schedules</strong></p>



<ul class="wp-block-list">
<li>Establish a regular maintenance schedule (e.g., weekly, monthly) to inspect and clean equipment, update software, and perform routine checks on temperature and power levels.</li>



<li>Keep detailed records of maintenance activities to track any issues or trends that may arise.</li>
</ul>



<p>By implementing these monitoring and maintenance practices, you&#8217;ll be able to:</p>



<ol start="1" class="wp-block-list">
<li>Prevent overheating or other environmental stressors from damaging your equipment.</li>



<li>Optimize system performance by identifying and addressing inefficiencies.</li>



<li>Extend the lifespan of your hardware and components through proper care and maintenance.</li>
</ol>



<p>Keep in mind that installing temperature sensors may be out of scope for a homelab on a budget, as this would require additional hardware or software investments. However, tracking power consumption is generally more accessible and cost-effective.</p>



<p><strong>Join a Community and Learn from Others </strong></p>



<p>Joining a community of fellow homelab enthusiasts can be incredibly beneficial in making the journey smoother, safer, and more enjoyable.</p>



<p>Some benefits of joining a community include:</p>



<ul class="wp-block-list">
<li>Getting valuable insights and advice on various aspects of homelab setup and maintenance</li>



<li>Staying updated on the latest trends, technologies, and best practices in the field</li>



<li>Finding support and encouragement when facing difficulties or setbacks</li>
</ul>



<p>However, it&#8217;s essential to note that you may encounter differing points of view within the community. This is a natural part of any online or offline gathering, where individuals bring their unique experiences and perspectives.</p>



<p>When encountering differing opinions, always remember that information and opinions can quickly become outdated. A good homelabber should always do their research and try to understand the issue they are trying to resolve.</p>



<p>By joining the community, you can tap into a wealth of knowledge, experience, and camaraderie that will help make your journey as a homelab enthusiast more enjoyable, productive, and rewarding.</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/237/">Setting Up Your Homelab: Best Practices to Get You Started</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/homelab/237/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weighing the Benefits of Hardware RAID and Software RAID for Your Homelab</title>
		<link>https://aadsit.com/homelab/196/</link>
					<comments>https://aadsit.com/homelab/196/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Thu, 22 Feb 2024 14:23:50 +0000</pubDate>
				<category><![CDATA[Homelab]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=196</guid>

					<description><![CDATA[<p>What is RAID? Here&#8217;s the updated section: RAID Levels: A Closer Look RAID is a way to combine multiple [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/196/">Weighing the Benefits of Hardware RAID and Software RAID for Your Homelab</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>What is RAID?</strong></p>



<p>Here&#8217;s the updated section:</p>



<p><strong>RAID Levels: A Closer Look</strong></p>



<p>RAID is a way to combine multiple physical disks into a single logical unit. It provides redundancy, performance, and capacity benefits over using a single drive. There are several levels of RAID (0-6), each with its own strengths and weaknesses.</p>



<h3 class="wp-block-heading"><strong>RAID 0: The Performance Boost</strong></h3>



<p><strong>Striped data across multiple drives for increased performance.</strong><br><strong>Example:</strong> Suppose you have four 1TB hard drives connected to your computer. By configuring them in a RAID 0 setup, you can create a single 4TB drive that offers blazing-fast read and write speeds. This is ideal for applications like video editing or 3D modeling where large files need to be accessed quickly.</p>



<h3 class="wp-block-heading"><strong>RAID 1: Redundancy for Peace of Mind</strong></h3>



<p><strong>Mirrored data across two or more drives for redundancy.</strong><br><strong>Example:</strong> Imagine you&#8217;re a photographer who needs to store thousands of high-resolution photos. By setting up your system with RAID 1, you can duplicate all your photos on two separate hard drives. This ensures that if one drive fails, the other will take over instantly, preserving all your precious memories.</p>



<h3 class="wp-block-heading"><strong>RAID 5: The Balanced Approach</strong></h3>



<p><strong>Striping with parity information to provide both performance and redundancy.</strong><br><strong>Example:</strong> Picture this: You&#8217;re a video producer who needs to store hours of footage on multiple hard drives. A RAID 5 configuration would stripe data across three or more drives while using one drive as a parity block. This setup offers the best balance between performance, capacity, and reliability – ideal for applications where large files need to be accessed quickly, yet security is still paramount.</p>



<h3 class="wp-block-heading"><strong>RAID 6: The Ultimate in Reliability</strong></h3>



<p><strong>Similar to RAID 5, but with an additional parity block to improve reliability.</strong><br><strong>Example:</strong> Suppose you&#8217;re a company that needs to store sensitive data, such as financial records or customer information. A RAID 6 setup would provide the highest level of redundancy – with two parity blocks for added protection against disk failures. This configuration ensures that even if two drives fail, your data will remain accessible, offering unparalleled peace of mind.</p>



<p>Note: Always remember to consider factors like cost, performance requirements, and potential failure scenarios when choosing a RAID level for your specific needs.</p>



<p>Here&#8217;s the updated section:</p>



<p><strong>What is ZFS?</strong></p>



<p>ZFS (Zettabyte File System) is a powerful file system designed to handle multiple disks with ease. Unlike traditional RAID configurations, which focus on storage layout and redundancy, ZFS takes a holistic approach to managing your entire storage infrastructure.</p>



<p><strong>A Closer Look at ZFS Features</strong></p>



<p>One of the most significant advantages of using ZFS lies in its robust feature set:</p>



<ul class="wp-block-list">
<li><strong>Data Integrity</strong>: ZFS ensures that data is accurate and complete through its checksum-based system. This means you can trust your files to be intact, even after experiencing power failures or hardware crashes.</li>



<li><strong>Snapshots</strong>: With ZFS, taking snapshots becomes a seamless process. Snapshots are point-in-time copies of your data, allowing you to roll back to previous versions in case something goes wrong. This feature is particularly useful for backup and recovery purposes, as well as tracking changes over time.</li>



<li><strong>Clones</strong>: ZFS enables the creation of identical copies of your data for testing, development, or disaster recovery scenarios. Clones are essentially read-only copies of your original data, ensuring that you can experiment without risking any damage to your primary files.</li>
</ul>



<p><strong>ZFS in Action: Proxmox and High Availability</strong></p>



<p>Proxmox is a popular hypervisor that leverages ZFS to provide enterprise-grade storage solutions. By utilizing ZFS&#8217;s advanced features, Proxmox enables replication and high availability configurations that ensure business continuity even in the event of hardware failures or other disruptions.</p>



<p><strong>The Power of Replication</strong></p>



<p>In a replicated setup, data is mirrored across multiple disks, providing a safeguard against data loss due to single-point-of-failure events. This ensures that your systems remain operational, even if one disk fails.</p>



<p><strong>High Availability with ZFS</strong></p>



<p>ZFS&#8217;s snapshot and cloning features make it an ideal choice for high-availability configurations. By creating snapshots or clones of your critical data, you can ensure that your systems can be quickly recovered in case of a disaster.</p>



<p>By combining the robustness of ZFS with the versatility of Proxmox, you can create powerful storage solutions that cater to your business needs.</p>



<p><strong>Hardware RAID vs. Software RAID (with ZFS)</strong></p>



<p>Now that we&#8217;ve covered the basics, let&#8217;s compare hardware RAID with software RAID using ZFS:</p>



<h3 class="wp-block-heading">Hardware RAID</h3>



<p>Pros:</p>



<ul class="wp-block-list">
<li><strong>Native support </strong>: Most operating systems and BIOS/UEFI have native support for hardware RAID.</li>



<li><strong>Low overhead </strong>: The CPU doesn&#8217;t need to handle the RAID calculations.</li>
</ul>



<p>Cons:</p>



<ul class="wp-block-list">
<li><strong>Limited flexibility </strong>: Once configured, changing the RAID setup can be difficult or impossible.</li>



<li><strong>Hardware dependence </strong>: If your RAID controller fails, you&#8217;ll need to replace it (and potentially lose data).</li>
</ul>



<p><a href="https://www.dell.com/support/kbdoc/en-us/000132392/how-to-configure-raid-on-a-dell-pc" target="_blank" rel="noopener">Even many Dell Optiplex workstations have support for RAID these days! </a></p>



<h3 class="wp-block-heading">Software RAID (with ZFS)</h3>



<p>Pros:</p>



<ul class="wp-block-list">
<li><strong>Flexibility </strong>: Easily modify or change the storage configuration without affecting performance.</li>



<li><strong>Scalability </strong>: Add or remove disks as needed to scale your storage resources.</li>



<li><strong>Memory efficiency </strong>: ZFS can utilize available memory (RAM) to improve performance, especially for larger datasets. This is known as the &#8220;ARC&#8221; (Adaptive Replacement Cache), which helps reduce I/O operations and increase throughput.</li>
</ul>



<p>Cons:</p>



<ul class="wp-block-list">
<li><strong>CPU overhead </strong>: The system needs to calculate and manage the RAID setup, which can impact performance.</li>



<li><strong>Complexity </strong>: ZFS requires a good understanding of its features and settings to get the most out of it.</li>
</ul>



<p><strong>Other Solutions</strong></p>



<p>If hardware RAID and ZFS don&#8217;t fit your needs, there are other options to consider.</p>



<h3 class="wp-block-heading"><strong>mdadm: A Software RAID Solution</strong></h3>



<p><code>mdadm</code>, or Multiple Disk Administrate, is a software RAID solution for Linux systems. It allows you to create and manage software RAID arrays, providing features like redundancy, performance enhancement, and capacity expansion. While its popularity has waned somewhat in favor of other solutions, <code>mdadm</code> is still widely used and supported by the Linux community.</p>



<h3 class="wp-block-heading"><strong>Bitrot File System (Btrfs)</strong></h3>



<p>Btrfs, or B-tree file system, is a copy-on-write (CoW) file system designed for Linux. It provides redundancy features through its CoW mechanism, where changes are written to new locations on disk rather than overwriting the original data. This allows Btrfs to maintain previous versions of files, reducing the risk of bitrot.</p>



<p>While not as widely used as ZFS or XFS, Btrfs is still an actively maintained file system with some notable features:</p>



<ul class="wp-block-list">
<li><strong>High reliability </strong>: Btrfs uses CoW and checksums to ensure data integrity.</li>



<li><strong>Efficient use of space </strong>: Btrfs can reclaim unused disk space by merging CoWs.</li>



<li><strong>Self-healing </strong>: Btrfs can recover from errors using its built-in repair mechanisms.</li>
</ul>



<p>These alternatives can provide effective solutions for specific use cases, so be sure to consider them when choosing a storage setup that suits your needs.</p>



<p><strong>Summary</strong></p>



<p>In conclusion, both RAID and ZFS are powerful tools for managing storage resources in your homelab. Hardware RAID offers native support and low overhead but is limited in flexibility and dependent on hardware. Software RAID with ZFS provides flexibility, scalability, and data integrity features, but requires more CPU power and a good understanding of its configuration.</p>



<p>Ultimately, the choice between hardware RAID and software RAID (with ZFS) depends on your specific needs and preferences. If you value ease of use and don&#8217;t mind sacrificing some flexibility, hardware RAID might be the way to go. But if you&#8217;re willing to invest time in learning about ZFS and want a more flexible storage solution, then software RAID with ZFS is definitely worth considering.</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/homelab/196/">Weighing the Benefits of Hardware RAID and Software RAID for Your Homelab</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/homelab/196/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installing Trusted Certificate Authority with JumpCloud</title>
		<link>https://aadsit.com/selfhosting/103/</link>
					<comments>https://aadsit.com/selfhosting/103/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 00:19:29 +0000</pubDate>
				<category><![CDATA[Selfhosting]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=103</guid>

					<description><![CDATA[<p>JumpCloud is an up and coming Cloud based user and computer management system, providing online LDAP and RADIUS authentication [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/selfhosting/103/">Installing Trusted Certificate Authority with JumpCloud</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p>JumpCloud is an up and coming Cloud based user and computer management system, providing online LDAP and RADIUS authentication with bits of RMM and SSO. While JumpCloud has it&#8217;s quirks and can only manage local accounts, it can be an appropriate solution for small decentralized businesses that don&#8217;t have the need for a more traditional Active Directory domain. Additionally, as long as the machine has internet access, MFA, BitLocker, and remote wipe functionality can all help keep company or family data secure. </p>



<p>While it&#8217;s uncommon to see a need for a private Certificate Authority to be installed on a decentralized work force, there may still be the occasion where you have internal resources that you want to have a valid SSL certificate on but do not want to, or cannot, use a Let&#8217;s Encrypt certificate from the web. </p>



<p></p>



<p>In my case it makes my life a tiny bit easier to use pfSense to manage certificates and create a wildcard certificate for my local domain, giving me an easy to install option for local services not running through my web-accessible reverse proxy. For example, we use Paperless-NGX for document management and I would rather keep that as far away from the internet as possible. </p>



<p>In JumpCloud, every two hours the following command runs: </p>



<pre class="wp-block-code has-cyan-bluish-gray-background-color has-background"><code>::https://learn.microsoft.com/en-us/powershell/module/pki/import-certificate?view=windowsserver2022-ps

Import-Certificate -FilePath "C:\Windows\Temp\AADSIT-SUB1-CA.crt" -CertStoreLocation Cert:\LocalMachine\Root
</code></pre>



<p><sub>You might notice, I make it a habit to start code with comments linking to any reference material used in case I need it again <s>and Microsoft hasn&#8217;t broken the link yet.</s> </sub></p>



<p>This is configured as so, applied to all relevant device groups for my home: </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="468" src="https://aadsit.com/wp-content/uploads/2023/03/image-33-1024x468.png" alt="" class="wp-image-104" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-33-1024x468.png 1024w, https://aadsit.com/wp-content/uploads/2023/03/image-33-300x137.png 300w, https://aadsit.com/wp-content/uploads/2023/03/image-33-768x351.png 768w, https://aadsit.com/wp-content/uploads/2023/03/image-33.png 1113w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>JumpCloud allows you to upload files &lt;1MB in size, a .crt is an easy task for this. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="822" height="217" src="https://aadsit.com/wp-content/uploads/2023/03/image-34.png" alt="" class="wp-image-105" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-34.png 822w, https://aadsit.com/wp-content/uploads/2023/03/image-34-300x79.png 300w, https://aadsit.com/wp-content/uploads/2023/03/image-34-768x203.png 768w" sizes="(max-width: 822px) 100vw, 822px" /></figure>



<p>After manually running, we can check the results to confirm that the certificate installation exited with Powershell Code 0, or successful completion: </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="86" src="https://aadsit.com/wp-content/uploads/2023/03/image-35-1024x86.png" alt="" class="wp-image-106" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-35-1024x86.png 1024w, https://aadsit.com/wp-content/uploads/2023/03/image-35-300x25.png 300w, https://aadsit.com/wp-content/uploads/2023/03/image-35-768x64.png 768w, https://aadsit.com/wp-content/uploads/2023/03/image-35.png 1315w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>And indeed we can see this certificate authority is now in the Machine Certificates:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="984" height="133" src="https://aadsit.com/wp-content/uploads/2023/03/image-36.png" alt="" class="wp-image-107" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-36.png 984w, https://aadsit.com/wp-content/uploads/2023/03/image-36-300x41.png 300w, https://aadsit.com/wp-content/uploads/2023/03/image-36-768x104.png 768w" sizes="(max-width: 984px) 100vw, 984px" /></figure>



<p>Now so long as we reach a server through DNS at the correct port we will have a valid certificate and no warning for our users: </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="347" height="269" src="https://aadsit.com/wp-content/uploads/2023/03/image-38.png" alt="" class="wp-image-109" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-38.png 347w, https://aadsit.com/wp-content/uploads/2023/03/image-38-300x233.png 300w" sizes="(max-width: 347px) 100vw, 347px" /></figure></div>


<p>If you&#8217;re pretty new to certificates and stumbled your way into here, please note that the DNS part is pretty important. If the server certificate says &#8220;I am xyz.local&#8221; but your browser is looking for &#8220;192.168.0.1&#8221;, they won&#8217;t match and you will get an warning unless the certificate has a matching Subject Alternative Name. </p>



<p>If you are interested but haven&#8217;t learned how to set up a certificate authority yet, there are a plenty of videos on YouTube that discuss the process. Find one that closely matches your setup; if you have an AD server then AD Certificate Services may be best for you, or if you have pfSense or opnSense you can use that. I believe you can also install the Certificate Services function in regular Windows 10 so there&#8217;s no hurdle too difficult to get over to start learning.</p>



<p></p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/selfhosting/103/">Installing Trusted Certificate Authority with JumpCloud</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/selfhosting/103/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>LED Storm Cloud</title>
		<link>https://aadsit.com/designs/58/</link>
					<comments>https://aadsit.com/designs/58/#respond</comments>
		
		<dc:creator><![CDATA[AADSIT]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 19:14:52 +0000</pubDate>
				<category><![CDATA[Designs]]></category>
		<category><![CDATA[esphome]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[homelab]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=58</guid>

					<description><![CDATA[<p>I often find projects opportunities that I say are &#8220;for my wife&#8221; but really are just an excuse to [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/designs/58/">LED Storm Cloud</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p>I often find projects opportunities that I say are &#8220;for my wife&#8221; but really are just an excuse to have fun making something. In this case I have been intersted in making an LED storm cloud for a while, and decided it was time to go for it. </p>



<p>I had seen Youtube videos of people glueing LEDs to their ceiling or jammed inside paper lanterns, gluing cotton all over it, and calling it good. The effects can be pretty nice but I wanted something smarter. While I&#8217;m pretty happy with the end result of this project, if I was to do this again I would design 3D printed spheres instead of using paper lanterns to simplify things. </p>



<p>Hardware:</p>



<ul class="wp-block-list">
<li>WS2811 12v LED Strip (2-3 meters, prices vary)</li>



<li>ESP8266 ( $3-$5 on AliExpress, I usually use D1 Minis) (1/18/2025: I&#8217;ve almost exclusively switched to ESP32s with enough RAM for OTA updates. HomeAssistant allows ESP32s to host a Bluetooth proxy which makes coverage significantly better)
<ul class="wp-block-list">
<li>Any ESP32 or ESP-01 will also work, but ESP-01 will not usually have enough memory for OTA updates. </li>
</ul>
</li>



<li>1x 12v Power Supply with standard size Barrel Plug</li>



<li>Others:
<ul class="wp-block-list">
<li>A 12v to 5v adapter </li>



<li>12v female barrel plug</li>



<li>5v+ capacitor </li>



<li>6&#8243; paper lanterns (I got a 10 pack on Amazon for under 10 dollars). </li>
</ul>
</li>
</ul>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-4 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="990" height="491" src="https://aadsit.com/wp-content/uploads/2023/03/image-16.jpg" alt="" class="wp-image-61" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-16.jpg 990w, https://aadsit.com/wp-content/uploads/2023/03/image-16-300x149.jpg 300w, https://aadsit.com/wp-content/uploads/2023/03/image-16-768x381.jpg 768w" sizes="(max-width: 990px) 100vw, 990px" /><figcaption class="wp-element-caption">WS2811 LEDs come in various lengths, waterproof ratings, densities. </figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="594" height="400" src="https://aadsit.com/wp-content/uploads/2023/03/image-17.jpg" alt="" class="wp-image-62" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-17.jpg 594w, https://aadsit.com/wp-content/uploads/2023/03/image-17-300x202.jpg 300w" sizes="(max-width: 594px) 100vw, 594px" /><figcaption class="wp-element-caption">ESP8266</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="398" height="280" src="https://aadsit.com/wp-content/uploads/2023/03/image-18.jpg" alt="" class="wp-image-63" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-18.jpg 398w, https://aadsit.com/wp-content/uploads/2023/03/image-18-300x211.jpg 300w" sizes="(max-width: 398px) 100vw, 398px" /><figcaption class="wp-element-caption">A generic step down regulator; 10 for $4 on AliExpress. </figcaption></figure>
</div>
</div>



<p><strong>Printables:</strong></p>



<p>There are two main components in my design: The interlocking mount that holds the paper lanterns and LEDs, and the controller box. The ZIP has two different lids for the controller box as I like to make my designs modular. </p>



<p></p>



<div class="wp-block-file"><a id="wp-block-file--media-e2cda334-ef9d-412e-a4f9-462c4e756b70" href="https://aadsit.com/wp-content/uploads/2023/03/LED-Cloud-Base.zip">LED Cloud Base</a><a href="https://aadsit.com/wp-content/uploads/2023/03/LED-Cloud-Base.zip" class="wp-block-file__button wp-element-button" aria-describedby="wp-block-file--media-e2cda334-ef9d-412e-a4f9-462c4e756b70" download><strong>Download STL Files</strong></a></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="613" height="410" src="https://aadsit.com/wp-content/uploads/2023/03/image-19.jpg" alt="" class="wp-image-68" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-19.jpg 613w, https://aadsit.com/wp-content/uploads/2023/03/image-19-300x201.jpg 300w" sizes="(max-width: 613px) 100vw, 613px" /><figcaption class="wp-element-caption">As usual I recommend using custom support settings and making the infill as light as possible. There are a lot of supports around the center structure. </figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="412" height="269" src="https://aadsit.com/wp-content/uploads/2023/03/image-20.jpg" alt="" class="wp-image-69" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-20.jpg 412w, https://aadsit.com/wp-content/uploads/2023/03/image-20-300x196.jpg 300w" sizes="(max-width: 412px) 100vw, 412px" /></figure>
</div>
</div>



<p><strong>Construction:</strong></p>



<p>After printing 5 of the mounts and making adjustments as I went I set to screwing, and later gluing, them together. This created a fairly sturdy structure to mount everything to before attaching the paper lanterns to the mount&#8217;s hooks and running LEDs throughout. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="935" height="463" src="https://aadsit.com/wp-content/uploads/2023/03/image-22.jpg" alt="" class="wp-image-76" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-22.jpg 935w, https://aadsit.com/wp-content/uploads/2023/03/image-22-300x149.jpg 300w, https://aadsit.com/wp-content/uploads/2023/03/image-22-768x380.jpg 768w" sizes="(max-width: 935px) 100vw, 935px" /><figcaption class="wp-element-caption">You can see the first two prints had issues with tabs, resulting in breakages. </figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="848" height="512" src="https://aadsit.com/wp-content/uploads/2023/03/image-23.jpg" alt="" class="wp-image-78" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-23.jpg 848w, https://aadsit.com/wp-content/uploads/2023/03/image-23-300x181.jpg 300w, https://aadsit.com/wp-content/uploads/2023/03/image-23-768x464.jpg 768w" sizes="(max-width: 848px) 100vw, 848px" /></figure>



<p>My workspace is limited, so I chose to use an old painting to protect our mini fridge.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="893" height="435" src="https://aadsit.com/wp-content/uploads/2023/03/image-24.jpg" alt="" class="wp-image-79" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-24.jpg 893w, https://aadsit.com/wp-content/uploads/2023/03/image-24-300x146.jpg 300w, https://aadsit.com/wp-content/uploads/2023/03/image-24-768x374.jpg 768w" sizes="(max-width: 893px) 100vw, 893px" /><figcaption class="wp-element-caption">Top View; I did not bother taking photos of the gluing process. </figcaption></figure>
</div>
</div>



<p>At this point I spent some time working on the controller; I had pieces on order but had to wait for the right power adapters to come in. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="526" height="585" src="https://aadsit.com/wp-content/uploads/2023/03/image-26.jpg" alt="" class="wp-image-81" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-26.jpg 526w, https://aadsit.com/wp-content/uploads/2023/03/image-26-270x300.jpg 270w" sizes="(max-width: 526px) 100vw, 526px" /><figcaption class="wp-element-caption">While not necessary, I chose to use a PCB to add header pins to the power supply for easy changes and addition. </figcaption></figure>



<p></p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="565" height="419" src="https://aadsit.com/wp-content/uploads/2023/03/image-27.jpg" alt="" class="wp-image-82" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-27.jpg 565w, https://aadsit.com/wp-content/uploads/2023/03/image-27-300x222.jpg 300w" sizes="(max-width: 565px) 100vw, 565px" /><figcaption class="wp-element-caption">The controller box was mounted on the back side of the cloud. </figcaption></figure>



<p>You might notice that the controller box is bright blue; it turns out that Pin 4 on this board controls the status LED and should NOT be used for the LED strip pin if you sleep in the same room. </p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="698" height="309" src="https://aadsit.com/wp-content/uploads/2023/03/image-28.jpg" alt="" class="wp-image-83" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-28.jpg 698w, https://aadsit.com/wp-content/uploads/2023/03/image-28-300x133.jpg 300w" sizes="(max-width: 698px) 100vw, 698px" /></figure>



<p>Shot of a &#8220;strike&#8221;. </p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="643" height="627" src="https://aadsit.com/wp-content/uploads/2023/03/image-30.jpg" alt="" class="wp-image-86" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-30.jpg 643w, https://aadsit.com/wp-content/uploads/2023/03/image-30-300x293.jpg 300w" sizes="(max-width: 643px) 100vw, 643px" /><figcaption class="wp-element-caption">A white power cable extension tidies up the look.</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="757" height="486" src="https://aadsit.com/wp-content/uploads/2023/03/image-31.jpg" alt="" class="wp-image-87" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-31.jpg 757w, https://aadsit.com/wp-content/uploads/2023/03/image-31-300x193.jpg 300w" sizes="(max-width: 757px) 100vw, 757px" /></figure>
</div>
</div>



<p><strong>Code:</strong></p>



<p>Right now I am getting the best effect out of Twinkle and Fireworks, but it&#8217;s my intention to write several Node-Red automations that will randomly change the color to regular lightning colors during the flashes, as well as set brightness and color for normal bedroom ambiance throughout the day. </p>



<p></p>



<pre class="wp-block-code has-cyan-bluish-gray-background-color has-background"><code>esphome:
  name: "ledcloud"

esp8266:
  board: d1_mini

# Enable Home Assistant API
api:
  encryption:
    key: "123456789123456789123456789123456789123456789"

ota:
  password: "1234567891423456789123456789"

wifi:
  ssid: !secret wifi_ssid5
  password: !secret wifi_password5

# Enable logging
logger:

status_led:
  pin:
    number: D0
    inverted: true

light:
  - platform: neopixelbus
    type: BRG
    variant: WS2812
    pin: D3
    num_leds: 60
    name: "LED Cloud"
    effects:
      - addressable_color_wipe:
      - addressable_color_wipe:
          name: Color Wipe Effect With Custom Values
          colors:
            - red: 100%
              green: 100%
              blue: 100%
              num_leds: 1
            - red: 0%
              green: 0%
              blue: 0%
              num_leds: 1
          add_led_interval: 100ms
          reverse: false
      - addressable_twinkle:
      - addressable_twinkle:
          name: Twinkle Effect With Custom Values
          twinkle_probability: 5%
          progress_interval: 4ms
      - pulse:
      - pulse:
          name: "Fast Pulse"
          transition_length: 0.5s
          update_interval: 0.5s
      - pulse:
          name: "Slow Pulse"
          # transition_length: 1s      # defaults to 1s
          update_interval: 2s
      - flicker:
      - flicker:
          name: Flicker Effect With Custom Values
          alpha: 95%
          intensity: 1.5%
      - addressable_fireworks:
      - addressable_fireworks:
          name: Fireworks Effect With Custom Values
          update_interval: 32ms
          spark_probability: 10%
          use_random_color: false
          fade_out_rate: 120</code></pre>



<p><strong>Coming up in Part 2:</strong></p>



<p>One of my intentions with this project was to include a real lightning detector; this would be a great addition to my unnecessary HomeAssistant sensors and create the potential for real-time lightning strike simulations during storms; something I know my wife would enjoy. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="481" height="452" src="https://aadsit.com/wp-content/uploads/2023/03/image-32.jpg" alt="" class="wp-image-88" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-32.jpg 481w, https://aadsit.com/wp-content/uploads/2023/03/image-32-300x282.jpg 300w" sizes="(max-width: 481px) 100vw, 481px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>I purchased a JMCU AS3935 Lighting Sensor and configured it for I2C communication, per ESPHome&#8217;s documentation and other online resources. Unfortunately I either have a faulty unit, or the I2C protocol on this device (as reported by some online) is not following the standard and is unreliable; the same setup worked with another I2C device so it&#8217;s hard to tell. </p>



<p></p>
</div>
</div>



<p><s>I intend to sort out the issues with the live lightning detector as well as add my own automations for part 2, and complete the writeup with several example videos.</s> </p>



<p>1/18/2025: We ended up moving before this could be revisited as we needed more space for our growing family, and while this project gave us a very unique and enjoyable bit of color we ultimately put this in the garage before scrapping the project. The best effects we found were to use the Fireworks mode with a yellowish tint, with Node-Red randomly switching to Blue or even Red for a split second to provide some extra flair. I hope to revisit this someday, maybe even on a larger scale for our daughter! </p>



<p></p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/designs/58/">LED Storm Cloud</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/designs/58/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HomeAssistant Aquarium Temperature Sensor</title>
		<link>https://aadsit.com/designs/7/</link>
					<comments>https://aadsit.com/designs/7/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Johnson]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 18:08:00 +0000</pubDate>
				<category><![CDATA[Designs]]></category>
		<category><![CDATA[aquarium]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[esphome]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[sensor]]></category>
		<category><![CDATA[temperature]]></category>
		<guid isPermaLink="false">https://aadsit.com/?p=7</guid>

					<description><![CDATA[<p>If you&#8217;re like me and love collecting data for automation, and also love filling your home with fish and [&#8230;]</p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/designs/7/">HomeAssistant Aquarium Temperature Sensor</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></description>
										<content:encoded><![CDATA[
<p>If you&#8217;re like me and love collecting data for automation, and also love filling your home with fish and plants, you&#8217;ve likely wondered if there is a way to connect your aquarium to HomeAssistant. </p>



<p>In this case we use ESPHome and some basic hardware with a 3D printed case to create an aquarium friendly sensor and set up some notifications. This assumes you have ESPHome set up and know the basics for creating custom devices and are able to solder; the case requires access to a 3D Printer or creativity and duct tape. </p>



<p><strong>Hardware List:</strong></p>



<ul class="wp-block-list">
<li>ESP8266 (~$3-$5 on AliExpress) 
<ul class="wp-block-list">
<li><sub>You can use an ESP8266, ESP32, or ESP-01 but this case design is for the ESP8266 on the Wemos D1 Mini board, and the ESP-01 usually does not have enough memory for OTA updates and requires an external programmer.</sub></li>
</ul>
</li>



<li>DS18B20 Temperature Sensor Kit (~$3 on AliExpress) </li>
</ul>



<p></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-10 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://aadsit.com/wp-content/uploads/2023/03/image.jpg" alt="" class="wp-image-8" width="224" height="259"/><figcaption class="wp-element-caption"> The DS18B20 kit includes an adapter board, dupont cables, and various lengths of lead for the sensor.</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="396" height="279" src="https://aadsit.com/wp-content/uploads/2023/03/image-14.jpg" alt="" class="wp-image-48" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-14.jpg 396w, https://aadsit.com/wp-content/uploads/2023/03/image-14-300x211.jpg 300w" sizes="(max-width: 396px) 100vw, 396px" /><figcaption class="wp-element-caption">The Wemos D1 Mini without headers.</figcaption></figure>



<p></p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-11 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p></p>



<p><strong>Code:</strong></p>



<pre class="wp-block-code"><code>#Sources: 
# https://esphome.io/components/sensor/dallas.html
esphome:
  name: "30gallon-aquarium-sensor"

esp8266:
  board: d1_mini

# Enable logging
logger:

# Example configuration entry
dallas:
  - pin: D3

# Individual sensors
sensor:
  - platform: dallas
    address: 0x85000000161dee28
    name: "30G.HOB.Sensor"

# Enable Home Assistant API
api:
  encryption:
    key: "123456789123456789123456789123456789123456789"

ota:
  password: "123456789123456789123456789"

wifi:
  ssid: !secret wifi_ssid5
  password: !secret wifi_password5
</code></pre>



<p>This uses the Dallas sensor component in ESPHome. You will likely see a different sensor address at first, which will require reprogramming. I highly recommend using the ESP8266 or ESP32 with enough memory for OTA updates because of this; it just makes life easier. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="335" height="222" src="https://aadsit.com/wp-content/uploads/2023/03/image-7.png" alt="" class="wp-image-25" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-7.png 335w, https://aadsit.com/wp-content/uploads/2023/03/image-7-300x199.png 300w" sizes="(max-width: 335px) 100vw, 335px" /><figcaption class="wp-element-caption">The logs should show the found sensor addresses as long as the Pin is set correctly and the physical connections are correct. Use this for your sensor address. </figcaption></figure></div>


<p><strong>Case:</strong></p>



<p>I created this model in Fusion 360. The gap is large enough to fit over the lip of a normal rimmed aquarium, at least up to 30 Gallons. Larger aquariums with thicker rims may need adjustment or some reshaping with heat. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="425" height="543" src="https://aadsit.com/wp-content/uploads/2023/03/image-8.jpg" alt="" class="wp-image-27" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-8.jpg 425w, https://aadsit.com/wp-content/uploads/2023/03/image-8-235x300.jpg 235w" sizes="(max-width: 425px) 100vw, 425px" /></figure></div></div>
</div>



<p></p>



<div class="wp-block-file"><a href="https://aadsit.com/wp-content/uploads/2023/03/Aquarium-Sensor.zip" class="wp-block-file__button wp-element-button" download>DOWNLOAD Aquarium Sensor Case STLs</a></div>



<p>I use a Creality Ender 3 Pro, a budget friendly printer which does decently with PLA but not great with ABS without a cover of some sort. My cases were all printed with regular PLA. </p>



<p>I recommend orienting the base face down and reducing the support settings; in Cura you can open Settings Visibility and enable more Support options, reducing the density for example. Because of the weird angles this has been the best printing option I have found without cutting off the sensor neck. Every printer is different though so it may take some adjustments to get the best result for you.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="687" src="https://aadsit.com/wp-content/uploads/2023/03/image-9-1024x687.jpg" alt="" class="wp-image-29" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-9-1024x687.jpg 1024w, https://aadsit.com/wp-content/uploads/2023/03/image-9-300x201.jpg 300w, https://aadsit.com/wp-content/uploads/2023/03/image-9-768x515.jpg 768w, https://aadsit.com/wp-content/uploads/2023/03/image-9.jpg 1026w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p><strong>Putting It Together</strong></p>



<p>Once you have the hardware and case ready, remove the supports, slide the sensor up the case neck, trim the cables, and wire everything up. I chose to dip my sensor/neck in liquid silicone to water proof things. Once everything is jammed in there you the USB port should line up with the opening, providing enough space for a USB cable to power the device. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-12 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="301" height="432" src="https://aadsit.com/wp-content/uploads/2023/03/image-1.jpg" alt="" class="wp-image-36" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-1.jpg 301w, https://aadsit.com/wp-content/uploads/2023/03/image-1-209x300.jpg 209w" sizes="(max-width: 301px) 100vw, 301px" /><figcaption class="wp-element-caption">The ESP8266 fits snuggly in the bottom section while the sensor connection board fits in the top. Custom dupont cables would cleanup this look if you have the tools to make them. </figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="671" height="710" src="https://aadsit.com/wp-content/uploads/2023/03/image-15.jpg" alt="" class="wp-image-52" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-15.jpg 671w, https://aadsit.com/wp-content/uploads/2023/03/image-15-284x300.jpg 284w" sizes="(max-width: 671px) 100vw, 671px" /><figcaption class="wp-element-caption">This silver test version makes it easier to see the black silicone-coated tip, reducing the chances of moisture making it&#8217;s way up to the electronics. <br>Also a snail. </figcaption></figure>



<p></p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-13 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="355" height="427" src="https://aadsit.com/wp-content/uploads/2023/03/image-4.jpg" alt="" class="wp-image-39" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-4.jpg 355w, https://aadsit.com/wp-content/uploads/2023/03/image-4-249x300.jpg 249w" sizes="(max-width: 355px) 100vw, 355px" /><figcaption class="wp-element-caption">At first I had a name on the front; it rarely printed clearly so I removed it. </figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="410" height="414" src="https://aadsit.com/wp-content/uploads/2023/03/image-3.jpg" alt="" class="wp-image-38" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-3.jpg 410w, https://aadsit.com/wp-content/uploads/2023/03/image-3-297x300.jpg 297w, https://aadsit.com/wp-content/uploads/2023/03/image-3-150x150.jpg 150w" sizes="(max-width: 410px) 100vw, 410px" /><figcaption class="wp-element-caption">&#8220;Temp-Thing&#8221; in action. </figcaption></figure>
</div>
</div>



<p><strong>Home Assistant</strong></p>



<p>At this point you should be able to connect it to HomeAssistant, add it to your dashboards, whatever you will do. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="456" height="336" src="https://aadsit.com/wp-content/uploads/2023/03/image-6.jpg" alt="" class="wp-image-41" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-6.jpg 456w, https://aadsit.com/wp-content/uploads/2023/03/image-6-300x221.jpg 300w" sizes="(max-width: 456px) 100vw, 456px" /></figure></div>


<p>I also set up a warning notification if the temperatures in my tanks go out of range. I use Node-Red like this:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="958" height="117" src="https://aadsit.com/wp-content/uploads/2023/03/image-10.png" alt="" class="wp-image-42" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-10.png 958w, https://aadsit.com/wp-content/uploads/2023/03/image-10-300x37.png 300w, https://aadsit.com/wp-content/uploads/2023/03/image-10-768x94.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></figure>



<p>I have a maintenance button that will turn off notification checks for an hour and a half; if I&#8217;m doing water changes I don&#8217;t want notifications. </p>



<pre class="wp-block-code"><code>var states = global.get('homeassistant.homeAssistant.states');
var temp5G = states&#91;"sensor.5g_hob_sensor_2"].state;
var temp10G = states&#91;"sensor.10g_hob_sensor"].state;
var temp30G = states&#91;"sensor.30g_hob_sensor"].state;
//Values
var warningHighTemp = 80.5;
var warningLowTemp = 75;
var emergencyHighTemp = 82;
var emergencyLowTemp = 72;
msg.payload = "";

//temp10G = 40; //override test


if (temp5G &lt; emergencyLowTemp || temp5G &gt; emergencyHighTemp) {
    msg.payload = msg.payload + "Emergency, 5 Gallon aquarium is out of range! " + temp5G + " degrees!";
} else if (temp10G &lt; emergencyLowTemp || temp10G &gt; emergencyHighTemp) {
    msg.payload = msg.payload + "Emergency, 10 Gallon aquarium is out of range! " + temp10G + " degrees!";
} else if (temp30G &lt; emergencyLowTemp || temp30G &gt; emergencyHighTemp) {
    msg.payload = msg.payload + "Emergency, 30 Gallon aquarium is out of range! " + temp30G + " degrees!";
} else if (temp5G &lt; warningLowTemp || temp5G &gt; warningHighTemp) {
    msg.payload = msg.payload + "Warning, 5 Gallon aquarium is out of range! " + temp5G + " degrees!";
} else if (temp10G &lt; warningLowTemp || temp10G &gt; warningHighTemp) {
    msg.payload = msg.payload + "Warning, 10 Gallon aquarium is out of range! " + temp10G + " degrees!";
} else if (temp30G &lt; warningLowTemp || temp30G &gt; warningHighTemp) {
    msg.payload = msg.payload + "Warning, 30 Gallon aquarium is out of range! " + temp30G + " degrees!";
} else
    msg.payload = "All good!"

return msg;
</code></pre>



<p>I haven&#8217;t taken a coding class in over a decade and learning to optimize my functions hasn&#8217;t been a priority, so don&#8217;t judge. The long story short is that every few minutes (if Maintenance is off) the JavaScript function checks each tank&#8217;s temperature against the lows and highs I have set with the above code. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-14 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="401" height="148" src="https://aadsit.com/wp-content/uploads/2023/03/image-12.png" alt="" class="wp-image-45" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-12.png 401w, https://aadsit.com/wp-content/uploads/2023/03/image-12-300x111.png 300w" sizes="(max-width: 401px) 100vw, 401px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="369" height="266" src="https://aadsit.com/wp-content/uploads/2023/03/image-13.png" alt="" class="wp-image-46" srcset="https://aadsit.com/wp-content/uploads/2023/03/image-13.png 369w, https://aadsit.com/wp-content/uploads/2023/03/image-13-300x216.png 300w" sizes="(max-width: 369px) 100vw, 369px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>It passes the results to a switch which ignores the &#8220;All good!&#8221; message, directs warnings to a Push notification link, and Emergencies to a Push notification link as well as a function that will pass the message to the Google Nest Minis we have in every room that has detected occupancy, ensuring that emergencies will wake us up or other. TTS will announce exactly what tank and temperature set off the warning. Triggers prevent the notifications from occurring constantly once activated.</p>
</div>
</div>



<p></p>



<p>If you haven&#8217;t switched to Node Red yet, I highly recommend it; the ability to link automations alone is worth it. </p>



<p>That&#8217;s really all there is to it. Please do not take this design and and try to sell it online, STLs are protected by copyright and eventually I&#8217;ll figure out the right disclaimer to add. </p>
<p>&lt;p&gt;The post <a rel="nofollow" href="https://aadsit.com/designs/7/">HomeAssistant Aquarium Temperature Sensor</a> first appeared on <a rel="nofollow" href="https://aadsit.com">AADSIT.COM</a>.&lt;/p&gt;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aadsit.com/designs/7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
