<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[KenBinLab - Homelab and Life's Journey]]></title><description><![CDATA[Thoughts, stories and shares about homelab, tech, and life's journey]]></description><link>https://kenbinlab.com/</link><image><url>https://kenbinlab.com/favicon.png</url><title>KenBinLab - Homelab and Life&apos;s Journey</title><link>https://kenbinlab.com/</link></image><generator>Ghost 5.85</generator><lastBuildDate>Wed, 15 Apr 2026 03:01:07 GMT</lastBuildDate><atom:link href="https://kenbinlab.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Unlock AI Power: Run DeepSeek Locally on OpenMediaVault with Docker Compose]]></title><description><![CDATA[This guide walks you through running DeepSeek on OMV using Docker Compose, Ollama (for local AI management), and Open WebUI (a user-friendly interface)]]></description><link>https://kenbinlab.com/unlock-ai-power-run-deepseek-locally-on-openmediavault-with-docker-compose/</link><guid isPermaLink="false">679f3d92efdeef00016d2a1f</guid><category><![CDATA[Exploring AI]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Minos]]></dc:creator><pubDate>Wed, 05 Feb 2025 09:53:18 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1738052380822-3dfcd949a53f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGRlZXBzZWVrfGVufDB8fHx8MTczODQ4MTIxM3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1738052380822-3dfcd949a53f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGRlZXBzZWVrfGVufDB8fHx8MTczODQ4MTIxM3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Unlock AI Power: Run DeepSeek Locally on OpenMediaVault with Docker Compose"><p><strong>Introduction</strong><br>OpenMediaVault (OMV) is a versatile, open-source NAS platform perfect for self-hosted workflows. By combining it with Docker, you can deploy powerful tools like <strong>DeepSeek</strong>&#x2014;a state-of-the-art AI model optimized for coding, mathematics, and logical tasks&#x2014;directly on your hardware. This guide walks you through running DeepSeek on OMV using Docker Compose, Ollama (for local AI management), and Open WebUI (a user-friendly interface), bypassing cloud dependencies and keeping your data private.</p><hr><h3 id="why-host-deepseek-on-your-omv-server"><strong>Why Host DeepSeek on Your OMV Server?</strong></h3><ol><li><strong>Full Data Control</strong>:<br>Avoid sending sensitive code, financial data, or proprietary information to third-party servers.</li><li><strong>Offline Accessibility</strong>:<br>Use DeepSeek even without an internet connection&#x2014;ideal for labs or remote workspaces.</li><li><strong>Hardware Flexibility</strong>:<br>Scale resources based on your needs. Run smaller models on modest hardware or leverage GPU acceleration for complex tasks.</li></ol><hr><h3 id="step-by-step-installation-guide"><strong>Step-by-Step Installation Guide</strong></h3><h4 id="prerequisites"><strong>Prerequisites</strong></h4><ul><li>OpenMediaVault (v6.x+) <strong>with OMV-Extras and Docker installed</strong>.</li><li>A shared folder for Docker data (e.g., <code>docker</code>).</li><li>At least 8GB of RAM (16GB+ recommended for larger models).</li></ul><hr><h4 id="step-1-prepare-docker-directories"><strong>Step 1: Prepare Docker Directories</strong></h4><ol><li>In the OMV web interface, go to <strong>Storage &gt; Shared Folders</strong>.</li><li>Create subfolders for Ollama and Open WebUI under your existing Docker shared folder:<ul><li><code>ollama</code> (to store AI models)</li><li><code>open-webui</code> (to store UI settings and chat history)</li></ul></li></ol><hr><h4 id="step-2-create-the-docker-compose-file"><strong>Step 2: Create the Docker Compose File</strong></h4><ol><li>Navigate to <strong>Services &gt; Compose &gt; Files</strong> in the OMV interface.</li><li>Click <strong>Create</strong>, name the file <code>deepseek.yml</code>, and paste the following configuration:</li></ol><pre><code class="language-yaml">version: &quot;3.8&quot;
services:
  ollama:
    image: ollama/ollama
    ports:
      - &quot;11434:11434&quot;
    volumes:
      - /sharedfolders/docker/ollama:/root/.ollama  # Use your shared folder path
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - &quot;8080:8080&quot;
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - /sharedfolders/docker/open-webui:/app/backend/data
    depends_on:
      - ollama
    restart: unless-stopped
</code></pre><p><strong>Notes</strong>:</p><ul><li>Replace <code>/sharedfolders/docker</code> with your actual Docker shared folder path (visible under <strong>Storage &gt; Shared Folders</strong>).</li><li>The <code>ollama</code> service hosts the AI models, while <code>open-webui</code> provides the chat interface.</li></ul><hr><h4 id="step-3-deploy-the-stack"><strong>Step 3: Deploy the Stack</strong></h4><ol><li>In the OMV Compose plugin interface, select the <code>deepseek.yml</code> file.</li><li>Click <strong>Up</strong> to start the containers.</li><li>Verify the status under <strong>Services &gt; Compose &gt; Containers</strong>&#x2014;both <code>ollama</code> and <code>open-webui</code> should show as &#x201C;Running.&#x201D;</li></ol><hr><h4 id="step-4-access-open-webui"><strong>Step 4: Access Open WebUI</strong></h4><ol><li>Open <code>http://&lt;your-omv-ip&gt;:8080</code> in a browser.</li><li>Create an admin account (disable public sign-ups later via <strong>Settings &gt; Authentication</strong>).</li></ol><hr><h4 id="step-5-download-the-deepseek-model"><strong>Step 5: Download the DeepSeek Model</strong></h4><ol><li><strong>Option 2: Via Open WebUI</strong>:<ul><li>Go to the <strong>Models</strong> tab.</li><li>Search for <code>deepseek-coder:33b</code> and click <strong>Download</strong>.</li></ul></li></ol><p><strong>Option 1: Via OMV&#x2019;s CLI</strong> (SSH or <strong>Services &gt; SSH &gt; Terminal</strong>):</p><pre><code class="language-bash">docker exec -it ollama ollama pull deepseek-coder:33b
</code></pre><hr><h4 id="step-6-start-using-deepseek"><strong>Step 6: Start Using DeepSeek</strong></h4><p>Select the <code>deepseek-coder:33b</code> model from the dropdown and ask questions like:</p><ul><li><em>&#x201C;Write a script to back up my OMV shared folders to an external drive.&#x201D;</em></li><li><em>&#x201C;Optimize this Python code for memory efficiency.&#x201D;</em></li></ul><hr><h3 id="conclusion-pro-tips"><strong>Conclusion &amp; Pro Tips</strong></h3><p>You&#x2019;ve now transformed your OpenMediaVault server into a private AI workstation. To optimize your setup:</p><ol><li><strong>Integrate with OMV Workflows</strong>:<br>Use Ollama&#x2019;s API (port <code>11434</code>) to connect DeepSeek to automation scripts or cron jobs.</li><li><strong>Monitor Resource Usage</strong>:<br>Check OMV&#x2019;s <strong>System &gt; Performance Statistics</strong> to ensure RAM/CPU stays within limits.</li><li><strong>Update Containers</strong>:<br>Periodically refresh your Docker images via the Compose plugin:<ul><li>Click <strong>Pull</strong> for the <code>deepseek.yml</code> stack, then <strong>Down</strong> and <strong>Up</strong> to restart.</li></ul></li><li><strong>Experiment with Models</strong>:<br>Try smaller models like <code>deepseek-coder:6.7b</code> for faster responses or quantized versions for lower RAM usage.</li></ol><hr><p><strong>Final Checklist</strong>:</p><ul><li>[ ] Verify shared folder permissions match Docker&#x2019;s requirements.</li><li>[ ] Set up OMV&#x2019;s firewall (<strong>Network &gt; Firewall</strong>) to restrict external access to port <code>8080</code> if needed.</li><li>[ ] Explore Open WebUI&#x2019;s prompt templates for coding or math-specific tasks.</li></ul><p>With DeepSeek running locally on OMV, you&#x2019;re equipped to tackle complex challenges while maintaining full ownership of your data. Happy coding!</p>]]></content:encoded></item><item><title><![CDATA[Exploring the Best Free AI Apps for Your Phone]]></title><description><![CDATA[Some of the best free AI apps available for your phone, based on personal experiences and user feedback.]]></description><link>https://kenbinlab.com/exploring-the-best-free-ai-apps-for-your-phone/</link><guid isPermaLink="false">679de905efdeef00016d2a05</guid><category><![CDATA[Exploring AI]]></category><category><![CDATA[Mobile]]></category><dc:creator><![CDATA[Minos]]></dc:creator><pubDate>Sat, 01 Feb 2025 09:33:25 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1712002641088-9d76f9080889?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGNoYXRncHR8ZW58MHx8fHwxNzM4NDAyMzE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1712002641088-9d76f9080889?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGNoYXRncHR8ZW58MHx8fHwxNzM4NDAyMzE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Exploring the Best Free AI Apps for Your Phone"><p>In today&apos;s fast-paced world, artificial intelligence (AI) has become an integral part of our daily lives. From enhancing productivity to providing entertainment, AI apps are revolutionizing the way we interact with technology. In this blog post, we&apos;ll explore some of the best free AI apps available for your phone, based on personal experiences and user feedback.</p><h3 id="chatgpt-the-versatile-ai"><a href="https://www.openai.com/chatgpt?ref=kenbinlab.com">ChatGPT</a>: The Versatile AI</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://images.unsplash.com/photo-1679403766665-67ed6cd2df30?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIwfHxjaGF0Z3B0fGVufDB8fHx8MTczODQwMjMxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" class="kg-image" alt="Exploring the Best Free AI Apps for Your Phone" loading="lazy" width="5724" height="3816" srcset="https://images.unsplash.com/photo-1679403766665-67ed6cd2df30?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIwfHxjaGF0Z3B0fGVufDB8fHx8MTczODQwMjMxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=600 600w, https://images.unsplash.com/photo-1679403766665-67ed6cd2df30?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIwfHxjaGF0Z3B0fGVufDB8fHx8MTczODQwMjMxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1000 1000w, https://images.unsplash.com/photo-1679403766665-67ed6cd2df30?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIwfHxjaGF0Z3B0fGVufDB8fHx8MTczODQwMjMxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1600 1600w, https://images.unsplash.com/photo-1679403766665-67ed6cd2df30?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIwfHxjaGF0Z3B0fGVufDB8fHx8MTczODQwMjMxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2400 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Photo by </span><a href="https://unsplash.com/@andrewtneel?ref=kenbinlab.com"><span style="white-space: pre-wrap;">Andrew Neel</span></a><span style="white-space: pre-wrap;"> / </span><a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit"><span style="white-space: pre-wrap;">Unsplash</span></a></figcaption></figure><p>ChatGPT is a multi-functional AI app that has gained popularity for its versatility. With the addition of the o3-mini model to the free package, ChatGPT has become a must-have app. It can assist with various tasks, from answering questions to generating creative content. Users appreciate its ability to provide accurate and relevant information, making it a valuable tool for both personal and professional use.</p><h3 id="deepseek-a-strong-contender"><a href="https://www.deepseek.com/?ref=kenbinlab.com">DeepSeek</a>: A Strong Contender</h3><p>DeepSeek is another free AI app that rivals ChatGPT Plus in terms of functionality. It offers a range of features that make it a top choice for users concerned about security. While there are some concerns about data privacy, DeepSeek&apos;s capabilities make it a strong contender in the AI app market. Its ability to perform complex tasks and provide insightful responses has earned it a loyal user base.</p><h3 id="perplexity-the-google-replacement"><a href="https://www.perplexity.ai/?ref=kenbinlab.com">Perplexity</a>: The Google Replacement</h3><p>Perplexity is an AI app that aims to replace traditional search engines like Google. It offers intelligent and free search capabilities, making it a convenient tool for finding information quickly. Users have expressed a desire for a shortcut to access Perplexity on their phones, highlighting its popularity and usefulness. Whether you&apos;re looking for quick answers or in-depth research, Perplexity is a reliable choice.</p><h3 id="notion-ai-basic-note-management"><a href="https://www.notion.so/?ref=kenbinlab.com">Notion AI</a>: Basic Note Management</h3><p>Notion AI is designed for basic note management and synchronization across different platforms, including Apple and Windows devices. It helps users organize their thoughts and tasks efficiently, making it a valuable tool for productivity. While it may not have all the advanced features of other AI apps, its simplicity and ease of use make it a favorite among users who need a straightforward note-taking solution.</p><h3 id="meta-ai-the-facebook-specialist"><a href="https://www.facebook.com/">Meta AI</a>: The Facebook Specialist</h3><p>Meta AI, integrated into the Messenger app, provides free AI assistance for Facebook-related queries. Although it may not be as advanced as other AI apps, it excels in providing accurate information about Facebook. Users find it particularly useful for navigating the platform and getting quick answers to their questions. If you&apos;re an avid Facebook user, Meta AI is a handy tool to have.</p><h3 id="monica-ai-the-multi-purpose-assistant"><a href="https://www.monica.ai/?ref=kenbinlab.com">Monica AI</a>: The Multi-Purpose Assistant</h3><p>Monica AI is a versatile and easy-to-use AI app that offers 40 free tokens daily. It can assist with a wide range of tasks, from answering questions to providing recommendations. Users appreciate its user-friendly interface and the variety of functions it offers. Whether you need help with daily tasks or want to explore new ideas, Monica AI is a reliable companion.</p><h3 id="copilot-the-all-rounder"><a href="https://www.microsoft.com/?ref=kenbinlab.com">Copilot</a>: The All-Rounder</h3><p>Copilot is a free AI app that, despite its limitations, can perform a variety of tasks. Users have found it to be a helpful tool for different purposes, from generating content to providing support. While it may not be the most advanced AI app, its ability to handle multiple tasks makes it a valuable addition to your phone.</p><h3 id="gemini-the-compact-powerhouse"><a href="https://www.gemini.com/?ref=kenbinlab.com">Gemini</a>: The Compact Powerhouse</h3><p>Gemini is a small but powerful AI app that offers a range of features. Despite its compact size, it provides a comprehensive set of tools for users. From answering questions to providing recommendations, Gemini is a reliable and efficient AI app. Its ability to deliver results quickly and accurately makes it a favorite among users who need a compact yet powerful AI assistant.</p><h3 id="conclusion">Conclusion</h3><p>AI apps have become essential tools in our daily lives, offering a range of functionalities that enhance productivity and provide entertainment. Whether you&apos;re looking for a versatile assistant like ChatGPT or a specialized tool like Meta AI, there&apos;s an AI app out there to meet your needs. Explore these free AI apps and discover how they can make your life easier and more efficient.</p>]]></content:encoded></item><item><title><![CDATA[How to Install Home Assistant on Proxmox]]></title><description><![CDATA[This guide will walk you through the process of setting up Home Assistant - a powerful open-source platform for smart home automation on Proxmox.]]></description><link>https://kenbinlab.com/how-to-install-home-assistant-on-proxmox/</link><guid isPermaLink="false">6726d1c26493c00001336303</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Home Automation]]></category><category><![CDATA[Proxmox]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Sun, 03 Nov 2024 02:38:33 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1707733260992-73ff6dbed163?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGhvbWUlMjBhdXRvbWF0aW9ufGVufDB8fHx8MTczMDYwMTA0MXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1707733260992-73ff6dbed163?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGhvbWUlMjBhdXRvbWF0aW9ufGVufDB8fHx8MTczMDYwMTA0MXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="How to Install Home Assistant on Proxmox"><p>Home Assistant is a powerful open-source platform for smart home automation. Running it on <a href="https://kenbinlab.com/tag/proxmox/" rel="noreferrer">Proxmox VE</a>, a robust virtualization environment, offers flexibility and efficiency. This guide will walk you through the process of setting up Home Assistant on Proxmox VE.</p><h3 id="1-creating-and-setting-up-a-virtual-machine-vm">1. Creating and Setting Up a Virtual Machine (VM)</h3><p>First, let&apos;s create a new VM specifically for Home Assistant:</p><ul><li><strong>CPU</strong>: Allocate at least 2 cores.</li><li><strong>RAM</strong>: Assign a minimum of 2GB.</li><li><strong>Storage</strong>: Allocate at least 32GB of storage.</li><li><strong>Network</strong>: Use the default network settings.</li></ul><p>Steps:</p><p>Log in to your Proxmox VE web interface. Click on &quot;<strong>Create VM</strong>&quot; in the top right corner and fill in the VM details (e.g., VM ID, Name).</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-2.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="896" height="673" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-2.png 600w, https://kenbinlab.com/content/images/2024/11/image-2.png 896w" sizes="(min-width: 720px) 720px"></figure><p>On the <strong>OS </strong>tab, choose &quot;<em>Do not use any media</em>&quot;.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-3.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="900" height="673" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-3.png 600w, https://kenbinlab.com/content/images/2024/11/image-3.png 900w" sizes="(min-width: 720px) 720px"></figure><p>On the System tab, choose <strong>OVMF (UEFI)</strong> for the <em>BIOS</em>, <strong>local-lvm</strong> for <em>EFI Storage</em> and <strong>Uncheck</strong> the <em>Pre-Enroll keys</em>.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-4.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="896" height="672" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-4.png 600w, https://kenbinlab.com/content/images/2024/11/image-4.png 896w" sizes="(min-width: 720px) 720px"></figure><p>On the <strong>Disks </strong>tab, <strong>delete the default one</strong>:</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-5.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="896" height="671" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-5.png 600w, https://kenbinlab.com/content/images/2024/11/image-5.png 896w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/11/image-6.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="898" height="674" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-6.png 600w, https://kenbinlab.com/content/images/2024/11/image-6.png 898w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">No disk for the Home Assistant VM</span></figcaption></figure><p>Configure the settings of <strong>CPU </strong>to <em>2 cores</em>, and <strong>Memory to </strong>2048 MB<strong> </strong>as recommended.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-7.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="898" height="674" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-7.png 600w, https://kenbinlab.com/content/images/2024/11/image-7.png 898w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-8.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="899" height="672" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-8.png 600w, https://kenbinlab.com/content/images/2024/11/image-8.png 899w" sizes="(min-width: 720px) 720px"></figure><p>Under the &quot;<strong>Network</strong>&quot; tab, choose <em>vmbr0 </em>(depend on your network system).</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-9.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="895" height="674" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-9.png 600w, https://kenbinlab.com/content/images/2024/11/image-9.png 895w" sizes="(min-width: 720px) 720px"></figure><p>Then click <strong>Next</strong>, and click <strong>Finish</strong>.</p><h3 id="2-download-home-assistant-os-image-and-attach-to-homeassistant-vm">2. Download Home Assistant OS image and attach to HomeAssistant VM</h3><p>First, download the Home Assistant OS image to your Proxmox server:</p><p>Go to the Home Assistant OS image from the official <a href="https://www.home-assistant.io/installation/alternative?ref=kenbinlab.com" rel="noreferrer">Home Assistant website</a>. <em>Right click</em> on the <strong>KVM/Proxmox</strong> and <em>Copy link</em>.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="1570" height="857" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/11/image.png 1000w, https://kenbinlab.com/content/images/2024/11/image.png 1570w" sizes="(min-width: 720px) 720px"></figure><p>In the Proxmox web interface, click on the <strong>pve </strong>and open <strong>Shell</strong>, then type in <strong>wget</strong> &lt;space&gt; &lt;paste copied link&gt;, then hit Enter.</p><pre><code class="language-bash">wget https://github.com/home-assistant/operating-system/releases/download/13.2/haos_ova-13.2.qcow2.xz</code></pre><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-1.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="1425" height="1003" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-1.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/11/image-1.png 1000w, https://kenbinlab.com/content/images/2024/11/image-1.png 1425w" sizes="(min-width: 720px) 720px"></figure><p>Wait a litte time for the downloading to finish. After that, type &quot;ls&quot; to list the file. Use your mouse to select and copy filename (<strong>haos_ova-13.2.qcow2.xz</strong>). After that, run this command to unzip it:</p><pre><code class="language-bash">unxz haos_ova-13.2.qcow2.xz</code></pre><p>Wait a moment for the command completed and list the file using &quot;ls&quot; command again, you will see the file <strong>haos_ova-13.2.qcow2</strong>. </p><p>Now import the qcow2 image to Home Assistant VM as a disk using the command: <code>qm importdisk &lt;HA VM id&gt; haos_ova-13.2.qcow2 local-lvm</code></p><pre><code class="language-bash">qm importdisk 104 haos_ova-13.2.qcow2 local-lvm</code></pre><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-10.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="1070" height="690" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-10.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/11/image-10.png 1000w, https://kenbinlab.com/content/images/2024/11/image-10.png 1070w" sizes="(min-width: 720px) 720px"></figure><p>Wait for the command finish, head back to Proxmox interface and you will see <em>Unused Disk 0</em> under <em>Hardware</em> tab of the <em>Home Assistant VM</em>.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-11.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="1266" height="536" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-11.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/11/image-11.png 1000w, https://kenbinlab.com/content/images/2024/11/image-11.png 1266w" sizes="(min-width: 720px) 720px"></figure><p>Click on <strong>Edit </strong>button, and because my disk is a SSD so I <strong>check </strong>on <strong>Discard </strong>check box, if you run a a HDD then just leave it unchecked. </p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-12.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="1311" height="698" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-12.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/11/image-12.png 1000w, https://kenbinlab.com/content/images/2024/11/image-12.png 1311w" sizes="(min-width: 720px) 720px"></figure><p>Then click Add, and this will create a <strong>Hard Disk (scsi0)</strong></p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-13.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="903" height="534" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-13.png 600w, https://kenbinlab.com/content/images/2024/11/image-13.png 903w" sizes="(min-width: 720px) 720px"></figure><h3 id="3-configuring-the-vm-for-home-assistant">3. Configuring the VM for Home Assistant</h3><p>Now, let&apos;s configure the VM to ensure compatibility with Home Assistant:</p><p>Head to <strong>Option </strong>tab, double click on the &quot;<strong>Boot Order</strong>&quot; to open it, <strong>uncheck </strong><em>ide2 cdrom, net0</em>, and <strong>check </strong><em>scsi0</em> disk the prioritize the Home Assistant OS disk to boot from. Then click <strong>OK </strong>to save setting.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-14.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="965" height="649" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-14.png 600w, https://kenbinlab.com/content/images/2024/11/image-14.png 965w" sizes="(min-width: 720px) 720px"></figure><p>Under &quot;Options&quot;, enable &quot;QEMU Guest Agent&quot;.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-15.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="957" height="636" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-15.png 600w, https://kenbinlab.com/content/images/2024/11/image-15.png 957w" sizes="(min-width: 720px) 720px"></figure><h3 id="4-installing-home-assistant-os-on-proxmox">4. Installing Home Assistant OS on Proxmox</h3><p>With the VM configured, it&apos;s time to install Home Assistant OS. Start the VM and open the console. Wait for Home Assistant OS installtion finish and you can see IP and port to access Home Assistant on the screen.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-16.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="831" height="627" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-16.png 600w, https://kenbinlab.com/content/images/2024/11/image-16.png 831w" sizes="(min-width: 720px) 720px"></figure><h3 id="5-accessing-and-setting-up-home-assistant">5. Accessing and Setting Up Home Assistant</h3><p>Once the installation is complete, access the Home Assistant UI by open a web browser and navigate to <code>http://&lt;your_vm_ip&gt;:8123</code>. You may need to wait about 20 minutes for preparing Home Assistant.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-17.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="828" height="723" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-17.png 600w, https://kenbinlab.com/content/images/2024/11/image-17.png 828w" sizes="(min-width: 720px) 720px"></figure><p>After the preparing process finish, now you can complete the initial setup by click on &quot;Create My Smart Home&quot; button to start creating an account and configuring your home. </p><p>You also may need to secure your Home Assistant instance by setting up SSL and enabling two-factor authentication.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/11/image-18.png" class="kg-image" alt="How to Install Home Assistant on Proxmox" loading="lazy" width="908" height="755" srcset="https://kenbinlab.com/content/images/size/w600/2024/11/image-18.png 600w, https://kenbinlab.com/content/images/2024/11/image-18.png 908w" sizes="(min-width: 720px) 720px"></figure><h3 id="6-additional-tips">6. Additional Tips</h3><p>To optimize your Home Assistant setup, consider the following tips:</p><ul><li><strong>Automated Backups</strong>: Set up <a href="https://kenbinlab.com/backup-strategy-for-homelab/" rel="noreferrer">automated backups</a> to ensure your data is safe.</li><li><strong>Adjusting VM Resources</strong>: Monitor and adjust the VM resources as needed for optimal performance.</li><li><strong>Adding Integrations</strong>: Explore and add integrations for various smart devices to enhance your smart home experience.</li></ul><h3 id="conclusion">Conclusion</h3><p>Running Home Assistant on Proxmox VE provides a flexible and efficient way to manage your smart home. With this setup, you can easily scale resources and take advantage of Proxmox&apos;s powerful features. For more advanced configurations, check out the <a href="https://www.home-assistant.io/docs/?ref=kenbinlab.com" rel="noreferrer">Home Assistant documentation</a> and the <a href="https://pve.proxmox.com/wiki/Main_Page?ref=kenbinlab.com" rel="noreferrer">Proxmox VE wiki</a>.</p><p>I hope this helps! If you have any questions or need further assistance, feel free to ask.</p>]]></content:encoded></item><item><title><![CDATA[To be a friend with your children]]></title><description><![CDATA[A sweet and lovely "work date" between a mother and her child that telling us what  it means to be friend with your children.]]></description><link>https://kenbinlab.com/to-be-a-friend-with-your-children/</link><guid isPermaLink="false">6715ae64425faf0001281278</guid><category><![CDATA[Life's Journey]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Mon, 21 Oct 2024 01:52:57 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1519682577862-22b62b24e493?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDcyfHxjb2ZmZWUlMjBsZWFybmluZyUyMHdpdGglMjBraWRzfGVufDB8fHx8MTcyOTQ3NDQzM3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1519682577862-22b62b24e493?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDcyfHxjb2ZmZWUlMjBsZWFybmluZyUyMHdpdGglMjBraWRzfGVufDB8fHx8MTcyOTQ3NDQzM3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="To be a friend with your children"><p>Today, I grabbed my laptop and a book and headed to a cafe. It&apos;s been a while since I&apos;ve felt like going to a cafe alone, and as usual, I encountered some really sweet people and heartwarming moments that made my day.</p><p>I met a woman and her 5-6 year old daughter at the cafe. The woman took out her laptop and some books for her daughter and set them up on the table. She guided her daughter on which exercise to do, how many pages to write, and pointed out the difficult words first. Once they were done, she said to her daughter: &quot;<em>Now, let&apos;s each do our own thing.</em>&quot;</p><p>And so, mother and daughter sat there working for over a few hours. Every now and then, the little girl would look up and ask her mom if she had written a word correctly, then she would go back to writing diligently.</p><p>Near the end, the mom asked:</p><ul><li>Would you like to eat vegetarian food?</li><li>Yes, please.</li><li>Okay, let&apos;s go to our usual place.</li><li>Yes, mom.</li></ul><p>Then, the mother and daughter moved to sit outside and read for a while before going home. </p><p>Wow, it was the first time I&apos;ve seen a <strong>&apos;work date&apos;</strong> between a mother and her child. Now I understand what it means to be friend with your children. Seeing their deep connection, I longed to be the kind of mother who could sit side-by-side with my child, exploring new things together, and feeling the warmth of family.</p>]]></content:encoded></item><item><title><![CDATA[How to Use Cloudflare DDNS with Docker]]></title><description><![CDATA[In this guide, we'll walk you through setting up Cloudflare DDNS using Docker]]></description><link>https://kenbinlab.com/cloudflare-ddns-with-docker/</link><guid isPermaLink="false">670b3b4d425faf0001281224</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Sun, 13 Oct 2024 04:15:33 GMT</pubDate><content:encoded><![CDATA[<p>Are&#xA0;you&#xA0;tired&#xA0;of&#xA0;dealing&#xA0;with&#xA0;dynamic&#xA0;IP&#xA0;addresses&#xA0;and&#xA0;want&#xA0;a&#xA0;reliable&#xA0;way to access your&#xA0;home&#xA0;server&#xA0;or&#xA0;services&#xA0;remotely?&#xA0;Cloudflare&#xA0;DDNS&#xA0;(Dynamic&#xA0;DNS)&#xA0;is a great solution!</p><p>In&#xA0;this&#xA0;guide,&#xA0;we&apos;ll&#xA0;walk&#xA0;you&#xA0;through&#xA0;setting&#xA0;up&#xA0;Cloudflare&#xA0;DDNS&#xA0;using&#xA0;Docker.</p><h3 id="step-by-step-guide">Step-by-Step&#xA0;Guide</h3><p><strong>Step 1: Create&#xA0;a&#xA0;Domain&#xA0;on&#xA0;Cloudflare</strong>:</p><ol><ul><li>Sign&#xA0;up&#xA0;for&#xA0;a&#xA0;Cloudflare&#xA0;account&#xA0;if&#xA0;you&#xA0;don&apos;t&#xA0;already&#xA0;have&#xA0;one.</li><li>Add&#xA0;your&#xA0;domain&#xA0;to&#xA0;Cloudflare&#xA0;and&#xA0;choose&#xA0;the&#xA0;free&#xA0;plan.</li><li>Change&#xA0;your&#xA0;domain&apos;s&#xA0;name&#xA0;servers&#xA0;to&#xA0;Cloudflare&apos;s&#xA0;name&#xA0;servers.</li></ul></ol><p><strong>Step 2: </strong>Log&#xA0;in&#xA0;to&#xA0;your&#xA0;Cloudflare&#xA0;account, navigate to API Token page: <a href="https://dash.cloudflare.com/profile/api-tokens?ref=kenbinlab.com">https://dash.cloudflare.com/profile/api-tokens</a></p><p><strong>Step 3: </strong>Scroll down to the bottom of the page and click on &quot;<strong>Get started</strong>&quot; button in the <strong>Custom token </strong>section. </p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/10/image-1.png" class="kg-image" alt loading="lazy" width="1329" height="730" srcset="https://kenbinlab.com/content/images/size/w600/2024/10/image-1.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/10/image-1.png 1000w, https://kenbinlab.com/content/images/2024/10/image-1.png 1329w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 4: </strong>Config the parameters as below, then click <strong>Continue to summary</strong></p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/10/image-2.png" class="kg-image" alt loading="lazy" width="1564" height="847" srcset="https://kenbinlab.com/content/images/size/w600/2024/10/image-2.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/10/image-2.png 1000w, https://kenbinlab.com/content/images/2024/10/image-2.png 1564w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 5: </strong>Click on <strong>Create Token</strong> on the next screen, the <strong>Copy and Save</strong> the Token:</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/10/image-3.png" class="kg-image" alt loading="lazy" width="1363" height="536" srcset="https://kenbinlab.com/content/images/size/w600/2024/10/image-3.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/10/image-3.png 1000w, https://kenbinlab.com/content/images/2024/10/image-3.png 1363w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 6: </strong>Deploy&#xA0;the&#xA0;Cloudflare&#xA0;DDNS&#xA0;Docker&#xA0;Container using Portainer Stack or Docker Compose. </p><ul><li>Set PROXIED=false if you use DDNS for DNS only.</li><li>Set PROXIED=true if you use DDNS for other services such as web...</li></ul><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/10/image-4.png" class="kg-image" alt loading="lazy" width="1902" height="714" srcset="https://kenbinlab.com/content/images/size/w600/2024/10/image-4.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/10/image-4.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/10/image-4.png 1600w, https://kenbinlab.com/content/images/2024/10/image-4.png 1902w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-yaml">version: &apos;2&apos;
services:
  cloudflare-ddns:
    image: oznu/cloudflare-ddns:latest
    restart: always
    environment:
      - API_KEY=xxxxxxx #Paste your API token here
      - ZONE=example.com # Your main domain
      - SUBDOMAIN=subdomain # Only subdomain here if any (do not include main domain)
      - PROXIED=false # False For DNS only; true for web</code></pre><p><strong>Step 7: Verify&#xA0;the&#xA0;Setup</strong>:</p><ol><ul><li>Check&#xA0;the&#xA0;logs&#xA0;of&#xA0;the&#xA0;Docker&#xA0;container&#xA0;to&#xA0;ensure&#xA0;it&apos;s&#xA0;running&#xA0;and&#xA0;updating the&#xA0;DNS&#xA0;records&#xA0;every&#xA0;few&#xA0;minutes.</li><li>You&#xA0;can&#xA0;view&#xA0;the&#xA0;logs&#xA0;with&#xA0;the&#xA0;command:&#xA0;<code>docker&#xA0;logs&#xA0;&lt;container_id&gt;</code>.</li></ul></ol><p><strong>Step 8: Access&#xA0;Your&#xA0;Services</strong>:</p><p>Use&#xA0;your&#xA0;domain&#xA0;name&#xA0;(e.g.,&#xA0;<code>your_subdomain.your_domain.com</code>)&#xA0;instead&#xA0;of&#xA0;your dynamic IP&#xA0;address&#xA0;to&#xA0;access&#xA0;your&#xA0;home&#xA0;server&#xA0;or&#xA0;services.</p><h3 id="conclusion">Conclusion</h3><p>Setting&#xA0;up&#xA0;Cloudflare&#xA0;DDNS&#xA0;with&#xA0;Docker&#xA0;is&#xA0;a&#xA0;straightforward&#xA0;process&#xA0;that&#xA0;can&#xA0;save&#xA0;you&#xA0;a&#xA0;lot&#xA0;of&#xA0;headaches&#xA0;with&#xA0;dynamic&#xA0;IP&#xA0;addresses.&#xA0;With&#xA0;this&#xA0;setup,&#xA0;you&apos;ll&#xA0;have&#xA0;a reliable way&#xA0;to&#xA0;access&#xA0;your&#xA0;home&#xA0;server&#xA0;or&#xA0;services&#xA0;from&#xA0;anywhere&#xA0;in&#xA0;the&#xA0;world.</p><p>Feel&#xA0;free&#xA0;to&#xA0;ask&#xA0;if&#xA0;you&#xA0;have&#xA0;any&#xA0;questions&#xA0;or&#xA0;need&#xA0;further&#xA0;assistance!</p>]]></content:encoded></item><item><title><![CDATA[Using a USB Flash Drive as an OS Drive for OpenMediaVault: Considerations and Recommendations]]></title><description><![CDATA[Practical tips for setting up and maintaining a USB flash drive as an operating system (OS) drive for OpenMediaVault.]]></description><link>https://kenbinlab.com/usb-as-os-drive-for-openmediavault/</link><guid isPermaLink="false">6704a524425faf0001281217</guid><category><![CDATA[NAS]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Tue, 08 Oct 2024 03:24:34 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1477949331575-2763034b5fb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDh8fHVzYiUyMHxlbnwwfHx8fDE3MjgzNTc2OTl8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1477949331575-2763034b5fb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDh8fHVzYiUyMHxlbnwwfHx8fDE3MjgzNTc2OTl8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Using a USB Flash Drive as an OS Drive for OpenMediaVault: Considerations and Recommendations"><p>Installing OpenMediaVault (OMV) on a USB flash drive might seem unconventional at first, but it&apos;s a practice that&apos;s not only possible but also offers several advantages, especially for home server setups. Many professional-level servers boot from USB drives, and OMV is no exception. This article explores the key considerations, recommendations, and practical tips for setting up and maintaining a USB flash drive as an operating system (OS) drive for OpenMediaVault, covering important aspects like plugins, storage size, performance, and backup strategies.</p><h3 id="1-choosing-the-right-usb-drive">1. <strong>Choosing the Right USB Drive</strong></h3><p>When using a USB flash drive for OMV, selecting the right drive is crucial for long-term stability and performance. Here are the main factors to consider:</p><h4 id="storage-size"><strong>Storage Size</strong></h4><p>While it&#x2019;s technically possible to install OMV on an 8GB flash drive, this is not recommended. Although some users might try it, the limited space can quickly lead to problems, such as running out of storage for system updates or configurations. Users in forums often report issues when using 8GB flash drives for OMV installations, with many recommending a minimum of 16GB to avoid these problems. Ideally, a 32GB flash drive is a safe bet, providing ample room for the system and future updates without causing space constraints. Some experienced users even suggest going as large as 64GB, though this might be overkill unless you plan to run a large number of services directly from the USB drive.</p><h4 id="usb-version"><strong>USB Version</strong></h4><p>The speed of your USB drive has a direct impact on the performance of OMV. Using USB 2.0 can result in sluggish performance, particularly when it comes to system responsiveness and boot times. For optimal performance, you should use at least USB 3.0 or higher. USB 3.0 offers significantly faster read and write speeds compared to USB 2.0, which is critical when the operating system is being loaded and run directly from the drive. If you have access to USB 3.2, even better&#x2014;though in most setups, USB 3.0 is more than sufficient.</p><h3 id="2-essential-plugins-flash-memory-plugin">2. <strong>Essential Plugins: Flash Memory Plugin</strong></h3><p>One of the key concerns when using a USB flash drive as the OS drive is the potential for excessive wear due to constant read/write operations. Flash drives have a limited number of write cycles, and frequent writes can degrade the drive over time, shortening its lifespan. To mitigate this risk, it is highly recommended to install the <strong>openmediavault-flashmemory plugin</strong>.</p><p>This plugin optimizes how data is written to the flash drive, minimizing wear by shifting frequently written data to RAM, thereby reducing the number of writes to the USB drive. This can significantly extend the lifespan of the flash drive while maintaining system performance. Without this plugin, you run the risk of prematurely wearing out the USB drive, which could lead to data loss or the need for a costly replacement.</p><h3 id="3-performance-considerations">3. <strong>Performance Considerations</strong></h3><p>Running OpenMediaVault from a USB drive, particularly with the right hardware, does not significantly impact system speed, as much of the data is handled in RAM. However, the performance of USB storage drives&#x2014;especially older models&#x2014;can vary widely. USB 3.0 or higher versions, as mentioned earlier, are essential for smooth operation. Many users report that their OMV setups, even when running from a USB flash drive, perform comparably to setups running on SSDs.</p><p>Moreover, if you plan to run <strong>Docker containers</strong> on OMV, it&#x2019;s wise to use the USB flash drive for the OS while storing Docker data on a faster SSD or NVMe drive. This setup helps separate system operations from resource-intensive storage tasks, ensuring better overall performance.</p><h3 id="4-setting-up-omv-on-a-usb-drive">4. <strong>Setting Up OMV on a USB Drive</strong></h3><p>Setting up OMV on a USB flash drive is relatively straightforward. Once you have your USB drive (preferably 16GB or larger) and the necessary plugins installed, you can proceed with the installation. Here&#x2019;s a general outline of the process:</p><ul><li><strong>Install OMV on the USB drive</strong>: You can use tools like <strong>Raspberry Pi Imager</strong> or <strong>Etcher</strong> to create a bootable OMV image on your USB drive.</li><li><strong>Configure the system</strong>: Once OMV is installed, boot from the USB and begin configuring your system.</li><li><strong>Install the flashmemory plugin</strong>: After setting up OMV, make sure to install the <strong>flashmemory</strong> plugin immediately to prevent unnecessary writes to the USB drive. This will optimize performance and prolong the life of your drive.</li><li><strong>Transfer OMV Configuration</strong>: If you have an existing OMV installation, you can use the <code>omv-regen</code> tool to move your configuration to the new USB setup, making migration simple and hassle-free.</li></ul><h3 id="5-backup-and-maintenance">5. <strong>Backup and Maintenance</strong></h3><p>One of the biggest advantages of using a USB flash drive for OMV is ease of backup and restoration. Since the entire OS is contained on a single USB drive, it&#x2019;s incredibly easy to back up or clone. A tool like <strong>usbimager</strong> can be used to create an exact image of the drive, allowing for quick restoration in the event of a failure.</p><h4 id="backup-tips"><strong>Backup Tips</strong>:</h4><ul><li><strong>Regular Backups</strong>: Periodically create an image of your USB drive to ensure you can quickly restore OMV to its previous state if necessary. It&#x2019;s also a good idea to store backups in multiple locations (e.g., an external hard drive or cloud storage) for added security.</li><li><strong>Monitoring Drive Health</strong>: Keep an eye on the health of your USB flash drive. Some utilities can monitor the wear level of flash storage and alert you when the drive is nearing its limits.</li></ul><h3 id="6-practical-considerations-for-long-term-use">6. <strong>Practical Considerations for Long-Term Use</strong></h3><p>Using a USB drive for OMV is a practical solution for home servers or small-scale deployments, but it&#x2019;s important to keep in mind a few long-term considerations:</p><ul><li><strong>Physical Placement</strong>: If your server case has limited USB ports, ensure the flash drive is securely fastened to avoid accidental disconnection. Some users recommend using adapters or zip ties to ensure the drive stays in place.</li><li><strong>Keep It Cool</strong>: USB drives can heat up, especially when under load. Ensure your case has adequate ventilation, or consider using a USB extension cable to place the drive in a cooler spot.</li></ul><h3 id="conclusion">Conclusion</h3><p>Using a USB flash drive as an OS drive for OpenMediaVault can offer excellent performance and convenience when set up properly. By choosing the right drive size, ensuring you&#x2019;re using a USB 3.0 or higher, installing the flashmemory plugin, and maintaining regular backups, you can enjoy a stable and efficient system without the need for expensive SSDs or NVMe drives. This setup is ideal for users seeking an affordable, easily maintained, and flexible storage solution for their OMV-based home server.</p>]]></content:encoded></item><item><title><![CDATA[How to install Komga in OpenMediaVault Using Docker Compose]]></title><description><![CDATA[This article provides a concise guide on how to install Komga in OpenMediaVault (OMV) using Docker Compose.]]></description><link>https://kenbinlab.com/how-to-install-komga-in-openmediavault/</link><guid isPermaLink="false">66d5a2a5ce8a56000145635a</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Wed, 18 Sep 2024 12:13:46 GMT</pubDate><media:content url="https://kenbinlab.com/content/images/2024/09/komga.JPG" medium="image"/><content:encoded><![CDATA[<img src="https://kenbinlab.com/content/images/2024/09/komga.JPG" alt="How to install Komga in OpenMediaVault Using Docker Compose"><p><a href="https://komga.org/?ref=kenbinlab.com" rel="noreferrer">Komga</a> is a free and open-source media server for your comics, manga, magazines, and books. It supports comic book archives such as&#xA0;<em>CBZ</em>&#xA0;and&#xA0;<em>CBR</em>&#xA0;(except solid archives, for RAR5 see below); eBooks in&#xA0;<em>EPUB</em>&#xA0;format; and <em>PDF</em>&#xA0;files.</p><p>This article provides a concise guide on how to install Komga in OpenMediaVault (OMV) using <a href="https://kenbinlab.com/how-to-install-docker-and-docker-compose/" rel="noreferrer">Docker Compose</a>.</p><h3 id="prerequisites">Prerequisites</h3><ul><li><a href="https://kenbinlab.com/install-openmediavault-on-proxmox-and-enable-smb-share/" rel="noreferrer">OpenMediaVault installed</a> and running</li><li>Docker and Docker Compose installed on OMV</li><li>Basic knowledge of using the OMV web interface</li></ul><h3 id="step-by-step-guide">Step-by-Step Guide</h3><h4 id="1-create-necessary-folders">1. Create Necessary Folders</h4><ol><li>Go to <strong>Storage</strong> &gt; <strong>Shared Folders</strong>.</li><li>Create another folder named <code>komga</code> for Komga&#x2019;s configuration and data.</li></ol><h4 id="2-create-docker-compose-file">2. Create Docker Compose File</h4><p>Navigate to <strong>Services</strong> &gt; <strong>Compose</strong> &gt; <strong>Files</strong> and add the following content to the file:</p><pre><code class="language-yaml">version: &apos;3.3&apos;
services:
  komga:
    image: gotson/komga
    container_name: komga
    volumes:
      - /path/to/komga/config:/config
      - /path/to/komga/data:/data
    ports:
      - 25600:25600
    restart: unless-stopped
</code></pre><p>Remeber to replace <code>/path/to/komga/config</code> and <code>/path/to/komga/data</code> with the actual paths to your <code>komga</code> folder.</p><p>In my case, because I have already add global environment file for OpenMediaVault docker, so my compose file is simple as the picture below:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/09/image-1.png" class="kg-image" alt="How to install Komga in OpenMediaVault Using Docker Compose" loading="lazy" width="1886" height="855" srcset="https://kenbinlab.com/content/images/size/w600/2024/09/image-1.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/09/image-1.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/09/image-1.png 1600w, https://kenbinlab.com/content/images/2024/09/image-1.png 1886w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">My compose file for Komga in OpenMediaVault</span></figcaption></figure><p>After carefully finish editing all the parameters, <strong>Save</strong> the compose file and <em>click</em> <strong>Up</strong> button to deploy Komga container.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/09/image.png" class="kg-image" alt="How to install Komga in OpenMediaVault Using Docker Compose" loading="lazy" width="1864" height="752" srcset="https://kenbinlab.com/content/images/size/w600/2024/09/image.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/09/image.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/09/image.png 1600w, https://kenbinlab.com/content/images/2024/09/image.png 1864w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Deloy the Komga container in OpenMediaVault</span></figcaption></figure><h4 id="3-initial-login-and-setup">3. Initial login and setup</h4><p>Open your web browser and starting to use Komga. At this time, Komga should now be running and accessible at <code>http://&lt;your-OMV-IP&gt;:25600</code>.</p><p>At the first step, Komga will ask you to <strong>create a user account</strong>. Choose an <strong>email</strong> and <strong>password</strong>, then click on <strong>Create User Account</strong> and start using Komga.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/09/image-2.png" class="kg-image" alt="How to install Komga in OpenMediaVault Using Docker Compose" loading="lazy" width="1901" height="896" srcset="https://kenbinlab.com/content/images/size/w600/2024/09/image-2.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/09/image-2.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/09/image-2.png 1600w, https://kenbinlab.com/content/images/2024/09/image-2.png 1901w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Komga overview</span></figcaption></figure><h3 id="conclusion">Conclusion</h3><p>You have successfully installed Komga on OpenMediaVault using Docker Compose. You can now start adding your comics, manga, and books to Komga and enjoy your media library.</p>]]></content:encoded></item><item><title><![CDATA[Installing qBittorrent on openmediavault Using Docker Compose]]></title><description><![CDATA[This article goes through step-by-step to install qBittorrent on OpenMediaVault using Docker Compose, as well as some initial setting for it.]]></description><link>https://kenbinlab.com/installing-qbittorrent-on-openmediavault-using-docker-compose/</link><guid isPermaLink="false">66d326f72c4df0000160d409</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Sun, 15 Sep 2024 15:44:17 GMT</pubDate><media:content url="https://kenbinlab.com/content/images/2024/08/qb_banner.webp" medium="image"/><content:encoded><![CDATA[<img src="https://kenbinlab.com/content/images/2024/08/qb_banner.webp" alt="Installing qBittorrent on openmediavault Using Docker Compose"><p><a href="https://www.qbittorrent.org/?ref=kenbinlab.com" rel="noreferrer">qBittorrent</a> is a popular, open-source BitTorrent client that offers a clean interface and a wide range of features. It is designed to be a lightweight alternative to other BitTorrent clients while providing the same level of functionality. With qBittorrent, users can manage their torrent downloads efficiently, thanks to features like an integrated search engine, RSS feed support, and remote control via a web user interface. In this blog post, we will go through step-by-step to install qBittorrent on <a href="https://kenbinlab.com/install-openmediavault-on-proxmox-and-enable-smb-share/" rel="noreferrer">OpenMediaVault</a> using Docker Compose, as well as some initial setting for it.</p><h4 id="step-by-step-guide-to-install-qbittorrent-on-openmediavault-using-docker-compose">Step-by-Step Guide to Install qBittorrent on openmediavault Using Docker Compose</h4><p><strong>Prerequisites:</strong></p><ul><li><a href="https://kenbinlab.com/installing-omv-extras-on-openmediavault-a-comprehensive-guide/" rel="noreferrer">openmediavault installed</a> and running</li><li>OpenMediaVault Extras installed. You can find the <a href="https://kenbinlab.com/installing-omv-extras-on-openmediavault-a-comprehensive-guide/" rel="noreferrer">full guide to install omv-extras here</a>.</li></ul><p><strong>Step 1: Prepare Your Environment</strong></p><ol><li><strong>Log in to openmediavault</strong>: Access your openmediavault web interface.</li><li><strong>Enable Docker Repo</strong>: Navigate to&#xA0;<code>System</code>&#xA0;&gt;&#xA0;<code>omv-extras</code>&#xA0;and enable the Docker repository. Click&#xA0;<code>Save</code>&#xA0;and then&#xA0;<code>Apply</code>.</li><li><strong>Install Docker and Docker Compose</strong>: Go to&#xA0;<code>System</code>&#xA0;&gt;&#xA0;<code>Plugins</code>, search for&#xA0;<code>docker</code>&#xA0;and&#xA0;<code>openmediavault-compose</code>, and install both plugins.</li></ol><p><strong>Step 2: Create a Docker Compose File</strong></p><p>Go to Services -&gt; Compose -&gt; Files, then click New to create new docker-compose.yaml file for qBittorrent.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-33.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="1891" height="847" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-33.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-33.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-33.png 1600w, https://kenbinlab.com/content/images/2024/08/image-33.png 1891w" sizes="(min-width: 720px) 720px"></figure><p>For me, I use the docker-compose content from linuxserver: <a href="https://hub.docker.com/r/linuxserver/qbittorrent?ref=kenbinlab.com">https://hub.docker.com/r/linuxserver/qbittorrent</a></p><pre><code class="language-docker-compose.yaml">---
services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - WEBUI_PORT=8080
      - TORRENTING_PORT=6881
    volumes:
      - /path/to/qbittorrent/appdata:/config
      - /path/to/downloads:/downloads #optional
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped
</code></pre><p>Paste the above content to Remember to change the parameters according to your system. Then click Save.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-34.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="1891" height="847" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-34.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-34.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-34.png 1600w, https://kenbinlab.com/content/images/2024/08/image-34.png 1891w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 3: Deploy the qBittorrent Container</strong></p><p>Click &quot;Up&quot; button to pull the docker image and deploy the container. Wait for it&apos;s status change to &quot;Up&quot;.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-35.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="1891" height="847" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-35.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-35.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-35.png 1600w, https://kenbinlab.com/content/images/2024/08/image-35.png 1891w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 4: Access the qBittorrent Web Interface</strong></p><ol><li><strong>Open Your Browser</strong>: Navigate to&#xA0;<code>http://&lt;your-server-ip&gt;:8080</code>&#xA0;to access the qBittorrent web interface.</li><li><strong>Login</strong>: The default username is&#xA0;<code>admin</code>&#xA0;and the default password is automatically generated. You can get the password by SSH into OpenMediaVault and run the following command to read to qBittorrent container log and get the password there.</li></ol><pre><code class="language-bash">docker logs qbittorrent</code></pre><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-36.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="983" height="939" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-36.png 600w, https://kenbinlab.com/content/images/2024/08/image-36.png 983w" sizes="(min-width: 720px) 720px"></figure><p>Make sure to change these credentials after your first login for security reasons.</p><h4 id="recommended-first-time-settings-for-qbittorrent">Recommended First-Time Settings for qBittorrent</h4><p><strong>Change Default Credentials</strong>: Go to&#xA0;<code>Options</code>&#xA0;&gt;&#xA0;<code>Web UI</code>&#xA0;and change the default username and password.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-38.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="1891" height="893" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-38.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-38.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-38.png 1600w, https://kenbinlab.com/content/images/2024/08/image-38.png 1891w" sizes="(min-width: 720px) 720px"></figure><p><strong>Set Download Locations</strong>: Configure your download locations under&#xA0;<code>Downloads</code>&#xA0;to ensure your files are saved in the correct directories. For me I also config other settings as below:</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-39.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="872" height="843" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-39.png 600w, https://kenbinlab.com/content/images/2024/08/image-39.png 872w" sizes="(min-width: 720px) 720px"></figure><p><strong>Config OpenTracker</strong>: udp://tracker.opentrackr.org:1337/announce</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-40.png" class="kg-image" alt="Installing qBittorrent on openmediavault Using Docker Compose" loading="lazy" width="873" height="841" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-40.png 600w, https://kenbinlab.com/content/images/2024/08/image-40.png 873w" sizes="(min-width: 720px) 720px"></figure><p><strong>Configure Bandwidth Limits</strong>: Set appropriate upload and download speed limits under&#xA0;<code>Speed</code>&#xA0;to manage your network usage.</p><p><strong>Enable IP Filtering</strong>: For added security, enable IP filtering under&#xA0;<code>Connection</code>.</p><p>By following these steps, you should have a fully functional qBittorrent setup on your openmediavault server using Docker Compose. Enjoy your efficient and powerful torrent management system!</p>]]></content:encoded></item><item><title><![CDATA[How to Install Docker, Docker Compose, and Portainer on OpenMediaVault Using OMV-Extras]]></title><description><![CDATA[This guide will walk you through the steps to get Docker, Docker Compose, and Portainer set up on OpenMediaVault]]></description><link>https://kenbinlab.com/install-docker-portainer-on-omv/</link><guid isPermaLink="false">66c169d0bdda740001bd1a16</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Thu, 12 Sep 2024 06:44:55 GMT</pubDate><content:encoded><![CDATA[<p>OpenMediaVault (OMV) is a powerful and flexible NAS (Network Attached Storage) solution based on Debian Linux. By leveraging OMV-Extras, you can easily install Docker, Docker Compose, and Portainer to manage your containers efficiently. This guide will walk you through the steps to get everything set up.</p><h4 id="prerequisites">Prerequisites</h4><ul><li>A running instance of OpenMediaVault (preferably version 6 or later).</li><li>Basic knowledge of SSH and command-line operations.</li><li>Internet access to download necessary packages.</li></ul><h4 id="step-1-install-omv-extras">Step 1: Install OMV-Extras</h4><p>OMV-Extras is a plugin that extends the functionality of OpenMediaVault by adding additional repositories and plugins.</p><p><strong>SSH into your OMV server</strong>: Open a terminal and connect to your OMV server using SSH.</p><pre><code class="language-bash">ssh your-username@your-omv-ip
</code></pre><p><strong>Install OMV-Extras</strong>: Run the following commands to download and install OMV-Extras.</p><pre><code class="language-bash">wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
</code></pre><h4 id="step-3-enable-docker-repository">Step 3: Enable Docker Repository</h4><ol><li><strong>Access OMV Web Interface</strong>: Open your web browser and navigate to the OMV web interface (usually <code>http://your-omv-ip</code>).</li><li><strong>Enable Docker Repo</strong>: Go to <code>System</code> &gt; <code>OMV-Extras</code> and enable the Docker repository. Click <code>Save</code> and then <code>Apply</code>.</li></ol><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-10.png" class="kg-image" alt loading="lazy" width="1908" height="859" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-10.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-10.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-10.png 1600w, https://kenbinlab.com/content/images/2024/08/image-10.png 1908w" sizes="(min-width: 720px) 720px"></figure><h4 id="step-3-install-docker-compose">Step 3: Install Docker Compose</h4><p><strong>Docker Compose</strong> is now part of the <code>openmediavault-compose</code> plugin. Search for <code>openmediavault-compose</code> in the plugins section, select it and click on <strong>Install </strong>button, <strong>check </strong>the <em>Confirm box</em> and click <strong>Yes</strong> to install it.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-11.png" class="kg-image" alt loading="lazy" width="1881" height="847" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-11.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-11.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-11.png 1600w, https://kenbinlab.com/content/images/2024/08/image-11.png 1881w" sizes="(min-width: 720px) 720px"></figure><p>Wait for the OpenMediaVault Compose plugin installation complete, then press Close.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-12.png" class="kg-image" alt loading="lazy" width="1422" height="537" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-12.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-12.png 1000w, https://kenbinlab.com/content/images/2024/08/image-12.png 1422w" sizes="(min-width: 720px) 720px"></figure><p>Now the Compose section should appear under Plugin menu:</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-13.png" class="kg-image" alt loading="lazy" width="1893" height="867" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-13.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-13.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-13.png 1600w, https://kenbinlab.com/content/images/2024/08/image-13.png 1893w" sizes="(min-width: 720px) 720px"></figure><h4 id="step-4-create-user-for-docker">Step 4: Create user for docker</h4><p>Go to <code>Users -&gt; Users</code> &gt; <code>Create User</code> to create a new user call <code>appuser</code>. For the <strong>Shell </strong>scetion, we don&apos;t need this account using terminal so choose <code>usr/sbin/nologin</code>. For <strong>Groups</strong>, choose <code>users</code>. Then click <strong>Save</strong>, and <strong>Apply</strong>.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-14.png" class="kg-image" alt loading="lazy" width="861" height="851" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-14.png 600w, https://kenbinlab.com/content/images/2024/08/image-14.png 861w" sizes="(min-width: 720px) 720px"></figure><h4 id="step-5-configure-docker">Step 5: Configure Docker</h4><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-15.png" class="kg-image" alt loading="lazy" width="1905" height="887" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-15.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-15.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-15.png 1600w, https://kenbinlab.com/content/images/2024/08/image-15.png 1905w" sizes="(min-width: 720px) 720px"></figure><ol><li><strong>Create a Shared Folder for Docker</strong>: Go to <code>Storage</code> &gt; <code>Shared Folders</code> and create a new shared folder named <code>dockerdata</code> on your desired volume.</li><li>Create a shared folder for compose file: <code>dockerdata/appdata</code><strong> </strong>as shown in the pictures above.</li><li>Similarly, create a shared folder for compose file: <code>dockerdata/backup_compose</code>.</li><li>Create a shared folder for docker file: <code>dockerdata/docker</code></li><li>Create a shared folder for data file in the main HDD (to define a path to a shared folder using the CHANGE_TO_COMPOSE_DATA_PATH variable): <code>data</code></li><li><strong>Set Docker Storage Path</strong>: Go to <code>Services</code> &gt; <code>Docker</code> &gt; <code>Settings</code>. Set the Docker storage path to the shared folders you have created. Click <code>Save</code> and then <code>Apply</code>.</li></ol><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/dockeromv7-6.png" class="kg-image" alt loading="lazy" width="1275" height="951" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/dockeromv7-6.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/dockeromv7-6.png 1000w, https://kenbinlab.com/content/images/2024/08/dockeromv7-6.png 1275w" sizes="(min-width: 720px) 720px"></figure><h4 id="step-5-install-portainer">Step 5: Install Portainer</h4><p>Portainer is a lightweight management UI that allows you to easily manage your Docker environments.</p><ol><li><strong>Install Portainer</strong>: Go to <code>Services</code> &gt; <code>Compose</code> &gt; <code>Files</code>. Click on <code>Add from example</code> and select <code>portainer</code>. Name it <code>portainer</code> and click <code>Save</code>.</li><li><strong>Deploy Portainer</strong>: In the same <code>Compose</code> section, click on the <code>Up</code> arrow to deploy Portainer. This will download and start the Portainer container.</li><li><strong>Access Portainer</strong>: Open your web browser and navigate to <code>http://your-omv-ip:9000</code>. Follow the setup instructions to configure Portainer.</li></ol><h4 id="conclusion">Conclusion</h4><p>By following these steps, you should have Docker, Docker Compose, and Portainer up and running on your OpenMediaVault server. This setup allows you to manage your containers efficiently and take full advantage of the powerful features OMV offers.</p>]]></content:encoded></item><item><title><![CDATA[Reverse Proxy vs. Cloudflare Tunnel: Choosing the Right Solution for Exposing Homelab Services to the Internet]]></title><description><![CDATA[It is essential to understand differences between Reverse Proxies and Cloudflare Tunnels, their own advantages and drawbacks to choose the most suitable one for your homelab setup]]></description><link>https://kenbinlab.com/reverse-proxy-vs-cloudflare-tunnel-choosing-the-right-solution-for-exposing-homelab-services-to-the-internet/</link><guid isPermaLink="false">66c2ad287511e800017bdfd1</guid><category><![CDATA[Homelab]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Mon, 09 Sep 2024 02:45:40 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1564760290292-23341e4df6ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGludGVybmV0fGVufDB8fHx8MTcyNDAzNDY0NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1564760290292-23341e4df6ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGludGVybmV0fGVufDB8fHx8MTcyNDAzNDY0NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Reverse Proxy vs. Cloudflare Tunnel: Choosing the Right Solution for Exposing Homelab Services to the Internet"><p><a href="https://kenbinlab.com/tag/homelab/" rel="noreferrer">Homelab</a> enthusiasts often face the challenge of securely exposing their services to the internet. Whether it&apos;s a self-hosted website, a personal media server, or an automation system, making these services accessible from outside your local network requires careful consideration. Two popular solutions for this are <strong>Reverse Proxies</strong> and <strong>Cloudflare Tunnels</strong>. Each has its own advantages and drawbacks, making it essential to understand their differences to choose the most suitable one for your homelab setup.</p><h4 id="introduction-to-reverse-proxy">Introduction to Reverse Proxy</h4><p>A <a href="https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/?ref=kenbinlab.com" rel="noreferrer"><strong>reverse proxy</strong></a> is a server that sits between the client and your web server, forwarding client requests to the appropriate server and returning the server&apos;s response to the client. This setup is commonly used to balance the load across multiple servers, provide caching, enhance security, and simplify access to internal resources.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/reverse_proxy_flow.png" class="kg-image" alt="Reverse Proxy vs. Cloudflare Tunnel: Choosing the Right Solution for Exposing Homelab Services to the Internet" loading="lazy" width="2000" height="1000" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/reverse_proxy_flow.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/reverse_proxy_flow.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/reverse_proxy_flow.png 1600w, https://kenbinlab.com/content/images/size/w2400/2024/08/reverse_proxy_flow.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Reverse Proxy Flow (image by Cloudflare)</span></figcaption></figure><p>When setting up a homelab, reverse proxies play a crucial role in managing and securing web traffic. Several popular reverse proxies are widely used in the homelab community due to their versatility and powerful features:</p><ol><li><strong>NGINX</strong>: Known for its performance and scalability, NGINX is a popular choice for both web servers and reverse proxies. It&apos;s highly configurable, supports load balancing, SSL termination, and caching, making it ideal for complex homelab setups.</li><li><strong>Apache HTTP Server</strong>: As one of the oldest and most reliable web servers, Apache also functions as a robust reverse proxy. It offers extensive modules for various functionalities, including security, URL rewriting, and content delivery, making it a flexible option.</li><li><strong>Traefik</strong>: Traefik is a modern reverse proxy designed specifically for dynamic environments. It integrates seamlessly with containerized services, such as Docker and Kubernetes, automatically managing routes and SSL certificates, making it perfect for homelabs that rely on microservices.</li><li><strong>Caddy</strong>: Caddy is known for its simplicity and automatic HTTPS management. It&#x2019;s a user-friendly reverse proxy that requires minimal configuration, making it an excellent choice for beginners or those looking for a straightforward setup with secure defaults.</li></ol><p>These reverse proxies cater to different needs, offering a range of features that can enhance the performance, security, and manageability of your homelab services.</p><h5 id="pros-of-reverse-proxy">Pros of Reverse Proxy</h5><ul><li><strong>Increased Control</strong>: With a reverse proxy, you have complete control over your configuration, including SSL certificates, access rules, and load balancing.</li><li><strong>Flexibility</strong>: Reverse proxies can handle complex setups, allowing you to route different subdomains or paths to specific services.</li><li><strong>Performance Optimization</strong>: By caching content and compressing data, reverse proxies can improve performance and reduce bandwidth usage.</li></ul><h5 id="cons-of-reverse-proxy">Cons of Reverse Proxy</h5><ul><li><strong>Complex Setup</strong>: Configuring a reverse proxy requires knowledge of networking and server management. You&apos;ll need to manage DNS records, SSL certificates, and firewall settings.</li><li><strong>Security Risks</strong>: Exposing a reverse proxy to the internet can introduce security vulnerabilities if not properly configured and maintained.</li><li><strong>Maintenance</strong>: Regular updates and monitoring are required to keep the reverse proxy secure and functional.</li><li><strong>Can not expose</strong> your services if your network is <em>behind Carrier-Grade NAT (CGNAT).</em> </li></ul><h4 id="introduction-to-cloudflare-tunnel">Introduction to Cloudflare Tunnel</h4><p><a href="https://blog.cloudflare.com/getting-cloudflare-tunnels-to-connect-to-the-cloudflare-network-with-quic?ref=kenbinlab.com" rel="noreferrer"><strong>Cloudflare Tunnel</strong></a> is a service provided by Cloudflare that creates a secure tunnel between your local network and Cloudflare&apos;s network, allowing you to expose your services to the internet <strong>without opening any ports</strong> on your router. This is achieved by installing a small client on your local machine that maintains a persistent connection to Cloudflare, which then routes incoming traffic to your services.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/2-17.png" class="kg-image" alt="Reverse Proxy vs. Cloudflare Tunnel: Choosing the Right Solution for Exposing Homelab Services to the Internet" loading="lazy" width="1600" height="866" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/2-17.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/2-17.png 1000w, https://kenbinlab.com/content/images/2024/08/2-17.png 1600w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">How does Cloudflare Tunnel work (image by Cloudflare)</span></figcaption></figure><h5 id="pros-of-cloudflare-tunnel">Pros of Cloudflare Tunnel</h5><ul><li><strong>Simplicity</strong>: Cloudflare Tunnel requires minimal setup. There&apos;s no need to configure DNS, manage SSL certificates, or open ports on your router.</li><li><strong>Security</strong>: Since the tunnel is initiated from within your network, there&#x2019;s no need to expose your network to the internet, reducing potential attack vectors.</li><li><strong>Global CDN and DDoS Protection</strong>: Cloudflare provides additional benefits like DDoS protection and content delivery network (CDN) integration, which can enhance the security and performance of your services.</li><li>When your network is <strong>behind Carrier-Grade NAT (CGNAT)</strong>, Cloudflare Tunnel <strong><em>offers a significant advantage</em></strong> over a reverse proxy. With CGNAT, it&apos;s often impossible to directly expose your services to the internet because you don&apos;t have a public IP address. Cloudflare Tunnel bypasses this limitation by establishing an outbound connection from your network to Cloudflare&apos;s servers, allowing you to securely expose your services without needing to configure port forwarding or deal with the complexities of CGNAT. This makes Cloudflare Tunnel a seamless and hassle-free solution for users in CGNAT environments.</li></ul><h5 id="cons-of-cloudflare-tunnel">Cons of Cloudflare Tunnel</h5><ul><li><strong>Limited Control</strong>: While Cloudflare simplifies setup, it also limits the amount of control you have over your configuration. Custom routing and advanced features may require a higher-tier plan or may not be available at all.</li><li><strong>Dependency on Cloudflare</strong>: Your service&#x2019;s availability becomes dependent on Cloudflare&#x2019;s infrastructure. If Cloudflare experiences downtime or issues, your services may be affected.</li><li><strong>Potential Costs</strong>: While Cloudflare Tunnel is free for many use cases, certain features or high-traffic scenarios may incur costs, especially if you need advanced functionality.</li></ul><h4 id="how-to-choose-the-right-solution-for-your-homelab">How to Choose the Right Solution for Your Homelab</h4><p>When deciding between a reverse proxy and Cloudflare Tunnel for your homelab, consider the following factors:</p><ol><li><strong>Technical Expertise</strong>:<ul><li>If you have experience with server management, networking, and DNS, a reverse proxy might be the better option for you. It offers more control and flexibility but requires more hands-on work.</li><li>If you prefer a simpler solution that requires minimal configuration, Cloudflare Tunnel is a great choice. It&#x2019;s easier to set up and manage, especially if you&#x2019;re not comfortable with advanced networking concepts.</li></ul></li><li><strong>Security Considerations</strong>:<ul><li>If security is a top priority and you want to avoid exposing your network to the internet, Cloudflare Tunnel is the safer option. It minimizes the attack surface by not requiring open ports.</li><li>However, if you&#x2019;re confident in your ability to secure a reverse proxy (e.g., through regular updates, SSL certificates, and strict firewall rules), a reverse proxy can be just as secure, with the added benefit of more granular control.</li></ul></li><li><strong>Cost and Resources</strong>:<ul><li>Cloudflare Tunnel is cost-effective for most small-scale homelab projects, but if your usage scales up or you need premium features, costs can add up.</li><li>A reverse proxy, on the other hand, typically only involves the cost of running your server (e.g., electricity, domain name, etc.), but you&#x2019;ll need to invest more time and effort in maintenance.</li></ul></li><li><strong>Performance Needs</strong>:<ul><li>If you need global CDN support and DDoS protection, Cloudflare Tunnel provides these out of the box, which can be beneficial for publicly accessible services.</li><li>A reverse proxy can also be optimized for performance, but it requires more manual configuration and management.</li></ul></li></ol><h4 id="my-personal-setup-combining-cloudflare-tunnel-and-wireguard-vpn">My Personal Setup: Combining Cloudflare Tunnel and Wireguard VPN</h4><p>In my homelab, I use a combination of Cloudflare Tunnel and Wireguard VPN to manage access to my services. Cloudflare Tunnel handles the public-facing web services, offering a simple and secure way to expose these services without opening any ports on my router. This setup leverages Cloudflare&#x2019;s global network for performance and security, making it a robust choice for web services.</p><p>For accessing my local network services that I prefer to keep private, I use Wireguard VPN. This allows me to connect securely to my internal network from anywhere, accessing services like file shares, automation systems, and other resources that I don&#x2019;t want exposed to the broader internet. This hybrid approach provides both the security and simplicity I need while maintaining control over how my services are accessed.</p><h4 id="conclusion">Conclusion</h4><p>Choosing between a reverse proxy and Cloudflare Tunnel depends largely on your technical skill level, security needs, and the scale of your homelab project. A reverse proxy offers greater control and flexibility, making it ideal for those with technical expertise who want to customize their setup. In contrast, Cloudflare Tunnel provides simplicity and robust security features with minimal effort, making it a perfect fit for those who prefer a hassle-free solution.</p><p>Ultimately, both solutions are viable for exposing homelab services to the internet, and your choice should align with your specific requirements and comfort level. For those looking to balance security and ease of use, combining Cloudflare Tunnel for public services with a VPN like Wireguard for private network access could be the ideal approach.</p>]]></content:encoded></item><item><title><![CDATA[Docker Networking Tutorial: Bridge, None, Host, IPvlan, Macvlan, Overlay]]></title><description><![CDATA[This tutorial covers the different Docker network drivers and their specific use cases, along with commands to create each type of network.]]></description><link>https://kenbinlab.com/docker-networking-tutorial-bridge-none-host-ipvlan-macvlan-overlay/</link><guid isPermaLink="false">66cfe264035cc3000193fb11</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Wed, 04 Sep 2024 06:40:25 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1646627927863-19874c27316b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGRvY2tlcnxlbnwwfHx8fDE3MjQ4OTk5OTV8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1646627927863-19874c27316b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGRvY2tlcnxlbnwwfHx8fDE3MjQ4OTk5OTV8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Docker Networking Tutorial: Bridge, None, Host, IPvlan, Macvlan, Overlay"><p>Docker networking is a crucial aspect of containerization, enabling communication between containers and external applications. This tutorial covers the different Docker network drivers and their specific use cases, along with commands to create each type of network.</p><h3 id="bridge-network">Bridge Network</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/image-32.png" class="kg-image" alt="Docker Networking Tutorial: Bridge, None, Host, IPvlan, Macvlan, Overlay" loading="lazy" width="856" height="620" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-32.png 600w, https://kenbinlab.com/content/images/2024/08/image-32.png 856w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">docker bridge network</span></figcaption></figure><p>The default network mode, the bridge network, connects containers on the same host. It creates a virtual network allowing containers to communicate with each other using IP addresses. However, it has limitations, especially in production environments. Creating a <strong>user-defined bridge network</strong> allows for <em>DNS-based communication between containers, enhancing flexibility and ease of use</em>. These are <strong>the advantages of user-defined bridge network in docker</strong>:</p><ol><li><strong>Automatic DNS Resolution</strong>: Containers on a user-defined bridge network can resolve each other by name or alias, making it easier to manage and connect services.</li><li><strong>Better Isolation</strong>: User-defined bridges provide better isolation as only containers attached to the same user-defined network can communicate with each other.</li><li><strong>Attach/Detach Flexibility</strong>: Containers can be attached or detached from user-defined networks on the fly without needing to stop and recreate them.</li><li><strong>Configurable Settings</strong>: Each user-defined network creates a configurable bridge, allowing customization of settings like MTU and iptables rules.</li></ol><p><strong>Command to create a Bridge network:</strong></p><pre><code class="language-sh">docker network create --driver bridge my_bridge_network
</code></pre><h3 id="none-network">None Network</h3><p>The none network mode completely <strong>isolates the container</strong> from the host and other containers. Only the loopback interface is created, making it ideal for running batch jobs or data processing pipelines where network isolation is required.</p><p><strong>Command to create a None network:</strong></p><pre><code class="language-sh">docker network create --driver none my_none_network
</code></pre><h3 id="host-network">Host Network</h3><p>In host network mode, the container <strong>shares the host&#x2019;s networking namespace</strong>, appearing as a regular application on the host. This mode is used to optimize performance and is suitable for applications requiring high port usage. However, it lacks network isolation, which can be a drawback in certain scenarios.</p><p><strong>Command to create a Host network:</strong></p><pre><code class="language-sh">docker network create --driver host my_host_network
</code></pre><h3 id="ipvlan-network">IPvlan Network</h3><p>IPvlan is a lightweight network virtualization technique that <strong>assigns IP addresses from the same CIDR range as the host</strong>. It eliminates the need for port mappings, making it easier to provide access for external-facing services. This mode is beneficial for applications requiring direct network access without additional complexity.</p><p><strong>Command to create an IPvlan network:</strong></p><pre><code class="language-sh">docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_ipvlan_network
</code></pre><h3 id="macvlan-network">Macvlan Network</h3><p>Macvlan assigns a <strong>unique MAC address</strong> to each container&#x2019;s virtual network interface, making it appear as a physical network interface. This mode is suitable for legacy applications or those monitoring network traffic, providing direct connectivity to the physical network.</p><p><strong>Command to create a Macvlan network:</strong></p><pre><code class="language-sh">docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network
</code></pre><h3 id="overlay-network">Overlay Network</h3><p>The overlay network driver creates a distributed network among multiple Docker daemon hosts, allowing secure communication between containers on different hosts. It is commonly used with Docker Swarm but can also connect individual containers. This mode is ideal for managing containers at scale, especially in production environments.</p><p><strong>Command to create an Overlay network:</strong></p><pre><code class="language-sh">docker network create -d overlay my_overlay_network
</code></pre><h3 id="conclusion">Conclusion</h3><p>Understanding Docker networking modes is essential for optimizing container communication and performance. Each network driver has its unique advantages and use cases, making it crucial to choose the right one based on your application&#x2019;s requirements.</p>]]></content:encoded></item><item><title><![CDATA[How to Sync AdGuard Home Settings Across Multiple Instances]]></title><description><![CDATA[A comprehensive guide through the steps to sync AdGuard Home settings across multiple instances using Portainer]]></description><link>https://kenbinlab.com/syncing-adguard-home-settings-across-multiple-instnces/</link><guid isPermaLink="false">66c1f8d77511e800017bdfa7</guid><category><![CDATA[Homelab]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Sun, 01 Sep 2024 14:05:57 GMT</pubDate><media:content url="https://kenbinlab.com/content/images/2024/08/agh-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://kenbinlab.com/content/images/2024/08/agh-1.jpg" alt="How to Sync AdGuard Home Settings Across Multiple Instances"><p>AdGuard Home is a powerful tool for blocking ads and tracking across your network. If you manage multiple instances of AdGuard Home, keeping their settings synchronized can be challenging. Using Portainer and AdGuardHome-Sync, you can automate this process efficiently. In this blog post, we&#x2019;ll guide you through the steps to sync your AdGuard Home settings using a Portainer stack.</p><h4 id="prerequisites">Prerequisites</h4><p>Before we start, ensure you have the following:</p><ul><li>Multiple instances of AdGuard Home running.</li><li>Docker and Portainer installed on your system.</li><li>Basic understanding of Docker, Portainer, and YAML configuration files.</li></ul><h4 id="step-by-step-guide">Step-by-Step Guide</h4><p><strong>Step 1: Create a Portainer Stack for AdGuardHome-Sync</strong></p><p>AdGuardHome-Sync is a tool designed to synchronize settings between multiple AdGuard Home instances. To deploy it using a Portainer stack, follow these steps:</p><ol><ul><li>Open Portainer and navigate to the <strong>Stacks</strong> section.</li><li>Click on <strong>Add stack</strong> and name it <code>adguardhome-sync</code>.</li></ul></ol><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-28.png" class="kg-image" alt="How to Sync AdGuard Home Settings Across Multiple Instances" loading="lazy" width="1875" height="881" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-28.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-28.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-28.png 1600w, https://kenbinlab.com/content/images/2024/08/image-28.png 1875w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 2: Paste the docker-compose content to the Web Editor form</strong>, as below. Remember to change origin and destination IP, port, username and password accordingly to your actual system.</p><pre><code class="language-yaml">---
version: &quot;2.1&quot;
services:
  adguardhome-sync:
    image: quay.io/bakito/adguardhome-sync
    container_name: adguardhome-sync
    command: run
    environment:
      - ORIGIN_URL=http://192.168.1.26:3000 #Your origin Adguard Home instance -&gt; change as necessary
      - ORIGIN_USERNAME=username #change as necessary
      - ORIGIN_PASSWORD=password #change as necessary
      - REPLICA_URL=http://192.168.1.27 #Your destination Adguard Home instance change as necessary
      - REPLICA_USERNAME=dbtech #change as necessary
      - REPLICA_PASSWORD=password #change as necessary
      # Replicate to other instances if needed
      - REPLICA1_URL=http://192.168.1.4 #change as necessary
      - REPLICA1_USERNAME=username #change as necessary
      - REPLICA1_PASSWORD=password #change as necessary
      - CRON=*/1 * * * * # run every 1 minute
      - RUNONSTART=true
    ports:
      - 9876:8080 #change as necessary
    restart: unless-stopped    </code></pre><p><strong>Step 3: Deploy the Stack</strong></p><ol><ul><li>Click on <strong>Deploy the stack</strong> in Portainer.</li><li>This will start the AdGuardHome-Sync container with the specified configuration.</li></ul></ol><p><strong>Step 4: Verify Synchronization</strong> </p><p>Check the container logs to ensure that the synchronization is working correctly.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-29.png" class="kg-image" alt="How to Sync AdGuard Home Settings Across Multiple Instances" loading="lazy" width="1885" height="886" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-29.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-29.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-29.png 1600w, https://kenbinlab.com/content/images/2024/08/image-29.png 1885w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-30.png" class="kg-image" alt="How to Sync AdGuard Home Settings Across Multiple Instances" loading="lazy" width="1840" height="891" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-30.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-30.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-30.png 1600w, https://kenbinlab.com/content/images/2024/08/image-30.png 1840w" sizes="(min-width: 720px) 720px"></figure><h4 id="tips-and-tricks">Tips and Tricks</h4><ul><li><strong>Security:</strong> Ensure that your AdGuard Home instances are secured with strong passwords.</li><li><strong>Monitoring:</strong> Regularly check the logs to monitor the synchronization process.</li><li><strong>Updates:</strong> Keep your Docker images up to date to benefit from the latest features and security patches.</li></ul><p>By following these steps, you can easily keep your AdGuard Home instances synchronized, ensuring consistent ad-blocking and DNS filtering across your network. Happy syncing!</p>]]></content:encoded></item><item><title><![CDATA[How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose]]></title><description><![CDATA[In this guide, we’ll walk you through the steps to install AdGuard Home on OpenMediaVault (OMV) using openmediavault-compose.]]></description><link>https://kenbinlab.com/how-to-install-adguard-home-on-openmediavault/</link><guid isPermaLink="false">66c1e0f27511e800017bdf63</guid><category><![CDATA[Docker]]></category><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Thu, 29 Aug 2024 13:09:33 GMT</pubDate><media:content url="https://kenbinlab.com/content/images/2024/08/agh.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://kenbinlab.com/content/images/2024/08/agh.jpg" alt="How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose"><p>AdGuard Home is a comprehensive network-wide software that blocks ads and tracking services, enhancing privacy and security for all devices connected to a network. It operates as a DNS server, filtering out unwanted content before it reaches your devices, similar to a local version of a public DNS service like AdGuard DNS.</p><p>Here&apos;s a brief overview:</p><ol><li><strong>Ad-Blocking</strong>: AdGuard Home blocks ads across all devices on your network, including smartphones, tablets, and smart TVs. This is especially useful for devices where traditional ad blockers may not work as effectively.</li><li><strong>Privacy Protection</strong>: By blocking tracking scripts and analytics systems, AdGuard Home prevents third parties from collecting your data, offering a higher level of privacy.</li><li><strong>DNS-Based Filtering</strong>: As a DNS server, AdGuard Home filters requests at the network level. This means that ads and trackers are blocked before they even reach your devices, reducing the amount of data downloaded and speeding up your internet connection.</li><li><strong>Customizability</strong>: Users can create custom filters, blocklists, and allowlists to tailor the blocking to their needs. It also supports parental control features, allowing users to block access to adult content.</li><li><strong>Open Source</strong>: AdGuard Home is open-source, allowing users to inspect the code, contribute to its development, and ensure that it operates transparently.</li><li><strong>Cross-Platform</strong>: It can be installed on various devices, including Raspberry Pi, Linux, Windows, macOS, and even in Docker containers, making it highly versatile.</li></ol><p>In summary, AdGuard Home provides a robust, customizable, and privacy-focused solution for blocking ads and tracking across your entire home network.</p><p>In this guide, we&#x2019;ll walk you through the steps to install AdGuard Home on OpenMediaVault (OMV) using openmediavault-compose. This setup will help you manage your network&#x2019;s DNS and block ads efficiently.</p><h3 id="prerequisites">Prerequisites</h3><ul><li>OpenMediaVault installed and running</li><li>openmediavault-compose plugin installed</li><li>Basic understanding of Docker and networking</li></ul><h3 id="step-1-create-a-macvlan-network">Step 1: Create a MacVLAN Network</h3><p>First, we need to create a MacVLAN network for the AdGuard container. <em>This allows the container to have its own IP address, making it easier to manage ports</em>.</p><ol><li><strong>Access OMV Compose Plugin</strong>: Go to the OMV web interface and navigate to the openmediavault-compose plugin.</li><li><strong>Create Network</strong>: Under the &#x201C;Services -&gt; Compose -&gt; Networks&#x201D; tab, create a new network. Name it <code>local-network</code>.</li><li><strong>Configure Network</strong>:<ul><li><strong>Driver</strong>: select <strong>macvlan</strong>.</li><li><strong>Parent Network</strong>: Select your main network interface, in my case it is enp2s0.</li><li><strong>Subnet</strong>: Enter your subnet (e.g., <code>192.168.1.0/24</code>).</li><li><strong>Gateway</strong>: Enter your gateway (e.g., <code>192.168.1.1</code>).</li><li><strong>IP range</strong>: Enter your <em>expected IP for Adguard Home</em> (e.g., <code>192.168.1.200/32</code>).</li><li>Click <strong>Save</strong>.</li></ul></li></ol><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-27.png" class="kg-image" alt="How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose" loading="lazy" width="1910" height="861" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-27.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-27.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-27.png 1600w, https://kenbinlab.com/content/images/2024/08/image-27.png 1910w" sizes="(min-width: 720px) 720px"></figure><h3 id="step-2-create-docker-compose-file">Step 2: Create Docker Compose File</h3><p>Now, we&#x2019;ll create a Docker Compose file to configure and run the AdGuard Home container.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-24.png" class="kg-image" alt="How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose" loading="lazy" width="1324" height="835" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-24.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-24.png 1000w, https://kenbinlab.com/content/images/2024/08/image-24.png 1324w" sizes="(min-width: 720px) 720px"></figure><ol><li><strong>Create Compose File</strong>: Go to <em>Services -&gt; Compose -&gt; Files</em>, create a new compose file and name it <code>adguard</code>.</li><li><strong>Add Configuration</strong>: Paste the following configuration into the compose file. Remember to change the <code>ipv4_address</code> to match your network configuration. Then click <strong>Save</strong>.</li></ol><pre><code class="language-yaml">---
services:
    adguardhome:
        container_name: adguardhome
        image: adguard/adguardhome
        networks:
          adguardhome:
            ipv4_address: 192.168.1.200  #Change this to your ip address
        volumes:
            - CHANGE_TO_COMPOSE_DATA_PATH/adguardhome/workdir:/opt/adguardhome/work
            - CHANGE_TO_COMPOSE_DATA_PATH/adguardhome/confdir:/opt/adguardhome/conf
        restart: unless-stopped
        ports:
            - 53:53/tcp
            - 53:53/udp
            - 67:67/udp
            - 68:68/udp
            - 80:80/tcp
            - 443:443/tcp
            - 443:443/udp
            - 3000:3000/tcp
            - 853:853/tcp
            - 784:784/udp
            - 853:853/udp
            - 8853:8853/udp
            - 5443:5443/tcp
            - 5443:5443/udp
networks:
   adguardhome:
      name: local-network  #This is the name of our macvlan
      external: true</code></pre><h3 id="step-3-deploy-adguard-home">Step 3: Deploy AdGuard Home</h3><p>Deploy the AdGuard Home container using the compose file.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-25.png" class="kg-image" alt="How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose" loading="lazy" width="1902" height="665" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-25.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-25.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-25.png 1600w, https://kenbinlab.com/content/images/2024/08/image-25.png 1902w" sizes="(min-width: 720px) 720px"></figure><ol><li><strong>Deploy Container</strong>: In the openmediavault-compose plugin, select the <code>adguard</code> compose file and click &#x201C;Up&#x201D;.</li><li><strong>Verify Deployment</strong>: Ensure the container is running and accessible.</li></ol><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-26.png" class="kg-image" alt="How to Install AdGuard Home on OpenMediaVault Using openmediavault-compose" loading="lazy" width="1497" height="550" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-26.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-26.png 1000w, https://kenbinlab.com/content/images/2024/08/image-26.png 1497w" sizes="(min-width: 720px) 720px"></figure><h3 id="step-4-configure-adguard-home">Step 4: Configure AdGuard Home</h3><p>Finally, configure AdGuard Home through its web interface.</p><ol><li><strong>Access Web Interface</strong>: Open a web browser and go to <code>http://192.168.1.200:3000</code>.</li><li><strong>Initial Setup</strong>: Follow the on-screen instructions to complete the initial setup.</li><li><strong>Set DNS Server</strong>: Point your router&#x2019;s DNS settings to the AdGuard Home IP address (e.g., <code>192.168.1.200</code>).</li></ol><h3 id="conclusion">Conclusion</h3><p>Congratulations! You&#x2019;ve successfully installed and configured AdGuard Home on OpenMediaVault using openmediavault-compose. This setup will help you manage your network&#x2019;s DNS and block ads effectively.</p><p>Feel free to customize this blog post to better fit your style and audience! If you have any questions or need further assistance, let me know.</p>]]></content:encoded></item><item><title><![CDATA[Setting Up WireGuard Easy with Portainer: A Step-by-Step Guide]]></title><description><![CDATA[This guide will walk you through the process of setting up a WireGuard VPN using Portainer]]></description><link>https://kenbinlab.com/how-to-install-wireguard-vpn-using-portainer/</link><guid isPermaLink="false">66c1be967511e800017bdee9</guid><category><![CDATA[Homelab]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Mon, 26 Aug 2024 10:27:44 GMT</pubDate><content:encoded><![CDATA[<p>WireGuard Easy is a popular, user-friendly solution for setting up a WireGuard VPN. Combined with the power of Portainer, a container management platform, you can effortlessly deploy and manage your VPN. This guide will walk you through the process.</p><h2 id="prerequisites"><strong>Prerequisites</strong></h2><ul><li>A server running Docker and Portainer.</li><li>Basic understanding of Docker and Portainer.</li><li>A domain name (optional, but recommended for easy access).</li></ul><h2 id="step-by-step-guide-to-install-wireguard-vpn-using-portainer"><strong>Step-by-Step Guide to install Wireguard VPN using Portainer</strong></h2><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-16.png" class="kg-image" alt loading="lazy" width="1871" height="890" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-16.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-16.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-16.png 1600w, https://kenbinlab.com/content/images/2024/08/image-16.png 1871w" sizes="(min-width: 720px) 720px"></figure><p><strong>Step 1: </strong>Log in to your Portainer instance.</p><p><strong>Step 2: </strong>Create a New Stack:</p><ol><ul><li>Navigate to the &quot;Stacks&quot; section.</li><li>Click &quot;Add stack&quot;.</li><li>Give your stack a name (e.g., &quot;wireguard-easy&quot;).</li><li>Paste the Docker Compose file content to the Web editor form, using the content as below:</li></ul></ol><pre><code class="language-docker-compose.yml">volumes:
  etc_wireguard:

services:
  wg-easy:
    environment:
      # Change Language:
      # (Supports: en, ua, ru, tr, no, pl, fr, de, ca, es, ko, vi, nl, is, pt, chs, cht, it, th, hi)
      - LANG=de
      # &#x26A0;&#xFE0F; Required:
      # Change this to your host&apos;s public address
      - WG_HOST=raspberrypi.local

      # Optional:
      # - PASSWORD_HASH=$$2y$$10$$hBCoykrB95WSzuV4fafBzOHWKu9sbyVa34GJr8VV5R/pIelfEMYyG (needs double $$, hash of &apos;foobar123&apos;; see &quot;How_to_generate_an_bcrypt_hash.md&quot; for generate the hash)
      # - PORT=51821
      # - WG_PORT=51820
      # - WG_CONFIG_PORT=92820
      # - WG_DEFAULT_ADDRESS=10.8.0.x
      # - WG_DEFAULT_DNS=1.1.1.1
      # - WG_MTU=1420
      # - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
      # - WG_PERSISTENT_KEEPALIVE=25
      # - WG_PRE_UP=echo &quot;Pre Up&quot; &gt; /etc/wireguard/pre-up.txt
      # - WG_POST_UP=echo &quot;Post Up&quot; &gt; /etc/wireguard/post-up.txt
      # - WG_PRE_DOWN=echo &quot;Pre Down&quot; &gt; /etc/wireguard/pre-down.txt
      # - WG_POST_DOWN=echo &quot;Post Down&quot; &gt; /etc/wireguard/post-down.txt
      # - UI_TRAFFIC_STATS=true
      # - UI_CHART_TYPE=0 # (0 Charts disabled, 1 # Line chart, 2 # Area chart, 3 # Bar chart)
      # - UI_SHOW_LINKS=true
      # - UI_ENABLE_SORT_CLIENTS=true

    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    volumes:
      - etc_wireguard:/etc/wireguard
    ports:
      - &quot;51820:51820/udp&quot;
      - &quot;51821:51821/tcp&quot;
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
      # - NET_RAW # &#x26A0;&#xFE0F; Uncomment if using Podman
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1</code></pre><ul><li>Change <code>WG_HOST</code> to your server&apos;s public IP address or domain name.</li><li>For the <code>PASSWORD_HASH</code>, run this command in terminal to get yours. Remember to replace <code>foobar123</code> with <strong><em>your own password</em></strong></li></ul><pre><code class="language-bash">sudo docker run ghcr.io/wg-easy/wg-easy wgpw foobar123</code></pre><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-18.png" class="kg-image" alt loading="lazy" width="652" height="312" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-18.png 600w, https://kenbinlab.com/content/images/2024/08/image-18.png 652w"></figure><p>After this command, your will receive password hash.</p><p><strong>Important</strong>&#xA0;: Please don&apos;t wrap the generated hash password in single quotes when you use&#xA0;<code>docker-compose.yml</code>. Instead, replace each&#xA0;<code>$</code>&#xA0;symbol with two&#xA0;<code>$$</code>&#xA0;symbols. For example: </p><pre><code>- PASSWORD_HASH=$$2y$$10$$hBCoykrB95WSzuV4fafBzOHWKu9sbyVa34GJr8VV5R/pIelfEMYyG</code></pre><p><strong>Step 3: </strong>Click <strong>Deploy the Stack</strong> and wait for the deployment complete.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-22.png" class="kg-image" alt loading="lazy" width="1876" height="877" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-22.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-22.png 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/image-22.png 1600w, https://kenbinlab.com/content/images/2024/08/image-22.png 1876w" sizes="(min-width: 720px) 720px"></figure><h2 id="access-wireguard-easy"><strong>Access WireGuard Easy:</strong></h2><p>Once the deployment is complete and the container&apos;s State change to healthy, you can access the WireGuard Easy web interface at <code>http://your_server_ip:51821</code>. Use the password you have set before to login.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-17.png" class="kg-image" alt loading="lazy" width="710" height="603" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-17.png 600w, https://kenbinlab.com/content/images/2024/08/image-17.png 710w"></figure><h2 id="add-new-wireguard-client">Add new Wireguard Client</h2><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-20.png" class="kg-image" alt loading="lazy" width="993" height="545" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-20.png 600w, https://kenbinlab.com/content/images/2024/08/image-20.png 993w" sizes="(min-width: 720px) 720px"></figure><p>The Web UI for managing WireGuard is extremely user-friendly and easy to use.</p><ul><li>Click &apos;New&apos; to create a client.</li><li>Click the QR code icon to view the QR code used for setting up the WireGuard client on a phone.</li><li>Click the &apos;Download&apos; icon to download the configuration file, which is used to set up the WireGuard client on a computer.</li><li>Click the &apos;Trash&apos; icon to delete a client.</li></ul><h2 id="configuring-nat-port-for-wireguard">Configuring NAT Port for WireGuard</h2><p>To connect to the WireGuard VPN Server from outside, you need to configure port forwarding on your network router (if WireGuard is installed on a server at home) or configure the firewall if it&apos;s installed on a Cloud virtual machine. Configure port forwarding on the router with the following details:</p><ul><li>Protocol: UDP</li><li>Port: 51820</li><li>Address: IP of the machine running wg-easy</li></ul><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-21.png" class="kg-image" alt loading="lazy" width="1431" height="576" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-21.png 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/image-21.png 1000w, https://kenbinlab.com/content/images/2024/08/image-21.png 1431w" sizes="(min-width: 720px) 720px"></figure><h2 id="additional-tips"><strong>Additional Tips</strong></h2><ul><li>For enhanced security, consider using a strong password for the web UI.</li><li>Adjust <code>WG_ALLOWED_IPS</code> to control which traffic is allowed through the VPN.</li><li>Use a dynamic DNS service if your IP address changes frequently.</li><li>Refer to the WireGuard Easy documentation for more advanced configuration options.</li></ul><h2 id="conclusion"><strong>Conclusion</strong></h2><p>By following these steps, you&apos;ve successfully set up WireGuard Easy using Portainer. You can now manage your VPN and create client configurations with ease. Enjoy the benefits of secure and private internet access!</p><p><strong>Would you like to add more details to this blog post, such as configuring WireGuard clients or troubleshooting common issues?</strong></p>]]></content:encoded></item><item><title><![CDATA[Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide]]></title><description><![CDATA[A comprehensive guide to install OMV-Extras - a powerful plugin for OpenMediaVault (OMV) that significantly expands its capabilities.]]></description><link>https://kenbinlab.com/installing-omv-extras-on-openmediavault-a-comprehensive-guide/</link><guid isPermaLink="false">66c0ada7bdda740001bd19d5</guid><category><![CDATA[NAS]]></category><dc:creator><![CDATA[Ken Bin]]></dc:creator><pubDate>Fri, 23 Aug 2024 14:48:49 GMT</pubDate><media:content url="https://kenbinlab.com/content/images/2024/08/omvextras_logo3.jpg" medium="image"/><content:encoded><![CDATA[<ol><li><strong>What is OMV-Extras?</strong></li></ol><img src="https://kenbinlab.com/content/images/2024/08/omvextras_logo3.jpg" alt="Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide"><p>OMV-Extras is a powerful plugin for OpenMediaVault (OMV) that significantly expands its capabilities. It offers a range of additional features and tools, making your <a href="https://kenbinlab.com/tag/nas/" rel="noreferrer">NAS</a> more versatile and efficient.</p><ol start="2"><li><strong>Why Install OMV-Extras?</strong></li></ol><ul><li><strong>Expand OMV functionality:</strong> Access a wider range of plugins and applications.</li><li><strong>Simplify installation:</strong> Streamline the process of installing various software packages.</li><li><strong>Enhance performance:</strong> Optimize your NAS for specific tasks.</li></ul><ol start="3"><li><strong>Prerequisites:</strong></li></ol><ul><li>An OpenMediaVault server up and running. If you don&apos;t have one, you can find out <a href="https://kenbinlab.com/install-openmediavault-on-proxmox-and-enable-smb-share/" rel="noreferrer">how to install OpenMediaVault</a> in the box below.</li><li>Basic understanding of Linux command line (for command-line method).</li><li>SSH access to your OMV server (for command-line method).</li></ul><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kenbinlab.com/install-openmediavault-on-proxmox-and-enable-smb-share/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Step-by-Step Guide to Install OpenMediaVault on Proxmox and Enabling SMB Share</div><div class="kg-bookmark-description">A comprehensive guide for installing OpenMediaVault on Proxmox and setting up an SMB share for easy file sharing across your network</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kenbinlab.com/favicon.ico" alt="Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide"><span class="kg-bookmark-author">KenBin lab - Homelab and tech</span><span class="kg-bookmark-publisher">Ken Bin</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://kenbinlab.com/content/images/2024/07/omv.JPG" alt="Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide"></div></a></figure><ol start="4"><li><strong>Installation of OMV-Extras using command-line:</strong></li></ol><p><strong>Step1: </strong>Open a terminal window and SSH into your OMV server.</p><p><strong>Step2: </strong>Execute the following command:</p><pre><code class="language-bash">wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/1.jpg" class="kg-image" alt="Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide" loading="lazy" width="983" height="888" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/1.jpg 600w, https://kenbinlab.com/content/images/2024/08/1.jpg 983w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Install OMV-Extras in Openmediavault</span></figcaption></figure><p>Wait for the installation process to complete.</p><ol start="5"><li><strong>Verifying Installation:</strong></li></ol><p>Check if the <code>omv-extras</code> plugin is listed in the &quot;<em>System -&gt; Plugins</em>&quot; section of the OMV web interface to ensure OMV-Extras is installed correctly.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/2.jpg" class="kg-image" alt="Installing OMV-Extras on OpenMediaVault: A Comprehensive Guide" loading="lazy" width="1919" height="874" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/2.jpg 600w, https://kenbinlab.com/content/images/size/w1000/2024/08/2.jpg 1000w, https://kenbinlab.com/content/images/size/w1600/2024/08/2.jpg 1600w, https://kenbinlab.com/content/images/2024/08/2.jpg 1919w" sizes="(min-width: 720px) 720px"></figure><ol start="6"><li><strong>Additional Tips:</strong></li></ol><ul><li>Always back up your system before making significant changes.</li><li>Refer to the official OMV-Extras documentation for detailed instructions and troubleshooting.</li><li>Explore the available plugins and tools to maximize the benefits of OMV-Extras.</li></ul><p>By following these steps, you should have successfully installed OMV-Extras on your OpenMediaVault server. Enjoy the expanded capabilities and features it brings!</p>]]></content:encoded></item></channel></rss>