<?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[Docker - 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>Docker - KenBinLab - Homelab and Life&apos;s Journey</title><link>https://kenbinlab.com/</link></image><generator>Ghost 5.85</generator><lastBuildDate>Mon, 21 Sep 2026 17:00:52 GMT</lastBuildDate><atom:link href="https://kenbinlab.com/tag/docker/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">6aa4d00040a9e200012c5cc3</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[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">6aa4d00040a9e200012c5cbd</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></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[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">6aa4d00040a9e200012c5cbb</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></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">6aa4d00040a9e200012c5cba</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></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">6aa4d00040a9e200012c5cb4</guid><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></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[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">6aa4d00040a9e200012c5cb9</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></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 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">6aa4d00040a9e200012c5cb6</guid><category><![CDATA[Docker]]></category><category><![CDATA[Homelab]]></category><category><![CDATA[NAS]]></category><dc:creator><![CDATA[Ken]]></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[How to Install Docker and Docker Compose on Ubuntu Server using get-docker.sh Script]]></title><description><![CDATA[A simple method to install docker and docker compose on linux in just 3 commands.]]></description><link>https://kenbinlab.com/how-to-install-docker-and-docker-compose/</link><guid isPermaLink="false">6aa4d00040a9e200012c5cb2</guid><category><![CDATA[Homelab]]></category><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Ken]]></dc:creator><pubDate>Tue, 20 Aug 2024 14:07:02 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=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGRvY2tlcnxlbnwwfHx8fDE3MjM3MDk3MjB8MA&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=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGRvY2tlcnxlbnwwfHx8fDE3MjM3MDk3MjB8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="How to Install Docker and Docker Compose on Ubuntu Server using get-docker.sh Script"><p>Docker and Docker Compose are powerful tools for developers and system administrators alike. They enable you to run applications in isolated containers, promoting consistency, portability, and efficient resource management. Today, we&apos;ll explore how to effortlessly install both on your Ubuntu server using the official <code>get-docker.sh</code> script.</p><p><strong>Benefits of Using get-docker.sh:</strong></p><ul><li><strong>Simple and Efficient:</strong> This script automates the installation process, saving you time and effort compared to manual configuration.</li><li><strong>Official Source:</strong> Downloading from the official Docker repository ensures you&apos;re getting the latest stable version and reliable updates.</li><li><strong>Streamlined Workflow:</strong> Once installed, you&apos;ll be ready to leverage containerized applications and development environments with ease.</li></ul><p><strong>Prerequisites:</strong></p><ul><li>An Ubuntu server with internet access.</li><li>Administrative (sudo) privileges.</li><li>Basic familiarity with the terminal and sudo commands.</li></ul><h3 id="step-1-update-your-system">Step 1: Update Your System</h3><p>First, SSH into your server and update your package index to ensure you have the latest information about available packages.</p><pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt dist-upgrade</code></pre><h3 id="step-2-download-and-run-the-get-dockersh-script">Step 2: Download and Run the get-docker.sh Script</h3><p>The&#xA0;<code>get-docker.sh</code>&#xA0;script is an official Docker installation script that simplifies the installation process.</p><p><strong>Download the script:</strong></p><pre><code class="language-bash">curl -fsSL https://get.docker.com -o get-docker.sh</code></pre><p><strong>Run the script:</strong></p><pre><code class="language-bash">sh get-docker.sh
</code></pre><p>This script will install Docker Engine, Docker CLI, Docker Compose and containerd.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/image-6.png" class="kg-image" alt="How to Install Docker and Docker Compose on Ubuntu Server using get-docker.sh Script" loading="lazy" width="963" height="648" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-6.png 600w, https://kenbinlab.com/content/images/2024/08/image-6.png 963w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Docker and Docker Compose installation process</span></figcaption></figure><p>When the installation finish, you will see Docker version on the terminal screen as follow:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kenbinlab.com/content/images/2024/08/image-7.png" class="kg-image" alt="How to Install Docker and Docker Compose on Ubuntu Server using get-docker.sh Script" loading="lazy" width="673" height="839" srcset="https://kenbinlab.com/content/images/size/w600/2024/08/image-7.png 600w, https://kenbinlab.com/content/images/2024/08/image-7.png 673w"><figcaption><span style="white-space: pre-wrap;">Docker and Docker Compose installation finished</span></figcaption></figure><h3 id="step-3-verify-docker-installation">Step 3: Verify Docker Installation</h3><p>After the installation is complete, verify that Docker is installed correctly by running the following commands:</p><pre><code class="language-bash">docker --version
docker compose version

</code></pre><p>You should see the version number of Docker and Docker Compose, confirming that it is installed correctly.</p><figure class="kg-card kg-image-card"><img src="https://kenbinlab.com/content/images/2024/08/image-8.png" class="kg-image" alt="How to Install Docker and Docker Compose on Ubuntu Server using get-docker.sh Script" loading="lazy" width="322" height="134"></figure><p><strong>Conclusion:</strong></p><p>By following these steps, you&apos;ve successfully installed Docker and Docker Compose on your Ubuntu server using the <code>get-docker.sh</code> script. Now, you&apos;re ready to leverage the power of containerized applications and development environments to streamline your workflow and enhance your development experience.</p><p><strong>Additional Notes:</strong></p><ul><li>Remember to restart your terminal session after installation for the changes to take effect.</li><li>Consult the official Docker and Docker Compose documentation for further details and advanced usage.</li></ul><p>I hope this blog post has been helpful! Feel free to leave any comments or questions below.</p>]]></content:encoded></item></channel></rss>