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

<channel>
	<title>Home Server &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/home-server/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Mon, 12 Oct 2026 07:36:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Five Essential Docker Containers for Your Home Server</title>
		<link>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/</link>
					<comments>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 20 Mar 2017 08:30:01 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker containers]]></category>
		<category><![CDATA[Home Server]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=988</guid>

					<description><![CDATA[Turn a spare machine into a powerful home server using Docker. This guide covers five essential containers — OwnCloud, Plex, Transmission, OpenVPN, and No-IP DDNS — and explains what each one does and why it belongs in your home lab.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Running a server on your home network is one of the most practical additions to any homelabber or DevOps engineer&#8217;s setup. The use cases are broad: local development and testing environments, home-automation hubs, private file storage, or personal media streaming. Whatever your goal, Docker makes it straightforward to deploy, isolate, and manage each service independently — no dependency conflicts, clean upgrades, and easy rollbacks.</p>



<p class="wp-block-paragraph">Below are five Docker containers that form a solid foundation for a home server. Each one is mature, well-maintained on Docker Hub, and genuinely useful in day-to-day life.</p>



<h2 class="wp-block-heading">1. OwnCloud — Self-Hosted Cloud Storage</h2>



<figure class="wp-block-image"><img decoding="async" src="https://thealarmclocksixam.files.wordpress.com/2017/03/screenshot-from-2017-03-19-18-03-16.png?w=700" alt="OwnCloud web interface screenshot" /></figure>



<p class="wp-block-paragraph"><a href="https://owncloud.com/">OwnCloud</a> is a self-hosted alternative to Dropbox or Google Drive. You run the server, you own the data. Desktop sync clients are available for Linux, macOS, and Windows; they keep selected local directories in sync with the server automatically, just as commercial cloud-storage clients do.</p>



<p class="wp-block-paragraph">In addition to file sync, OwnCloud provides a full web interface that lets you access, upload, and manage files from any browser. You can also generate shareable links to send specific files or folders to colleagues or friends without requiring them to have an account.</p>



<p class="wp-block-paragraph"><strong>Why Docker?</strong> The OwnCloud Docker image bundles the PHP application and its dependencies together, so you avoid conflicts with other PHP applications on the same host. Data is stored on a mounted host volume, keeping it safe across container upgrades.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name owncloud \
  -p <span class="hljs-number">8080</span>:<span class="hljs-number">8080</span> \
  -v /srv/owncloud/data:<span class="hljs-regexp">/mnt/</span>data \
  owncloud/server</code></span></pre>


<p class="wp-block-paragraph"><strong>Tip:</strong> Upload bandwidth from your home ISP is the main performance bottleneck for remote access. If you plan to access OwnCloud from outside your home network, check your ISP&#8217;s upstream speed before storing large files.</p>



<h2 class="wp-block-heading">2. Plex Media Server — Stream Your Own Media Library</h2>



<figure class="wp-block-image"><img decoding="async" src="https://thealarmclocksixam.files.wordpress.com/2017/03/plex.jpg?w=700" alt="Plex Media Server logo" /></figure>



<p class="wp-block-paragraph"><a href="https://www.plex.tv/">Plex Media Server</a> organises and streams your locally stored video, music, and photo libraries. Clients are available for smart TVs, Roku, Apple TV, Chromecast, iOS, Android, and most browsers — so you can watch your content on virtually any screen in the house, or remotely over the internet.</p>



<p class="wp-block-paragraph">Plex scans your media directories, fetches metadata (cover art, descriptions, ratings) automatically, and presents everything through a polished Netflix-style interface. Transcoding lets it adapt the stream quality to match the available bandwidth and the capability of the client device.</p>



<p class="wp-block-paragraph"><strong>OwnCloud + Plex synergy:</strong> If you store photos in OwnCloud, you can point a Plex photo library at the same directory. This makes it easy to pull up your photo collection on a TV when friends visit.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name plex \
  --network=host \
  -e PLEX_CLAIM=<span class="hljs-string">"&lt;your-claim-token&gt;"</span> \
  -v /srv/plex/config:<span class="hljs-regexp">/config \
  -v /</span>srv/media:<span class="hljs-regexp">/data \
  plexinc/</span>pms-docker</code></span></pre>


<p class="wp-block-paragraph"><strong>Note:</strong> Hardware transcoding (GPU pass-through) requires additional Docker flags and a Plex Pass subscription. Software transcoding works out of the box but is CPU-intensive for high-resolution content.</p>



<h2 class="wp-block-heading">3. Transmission — Headless BitTorrent Client with a Web UI</h2>



<p class="wp-block-paragraph"><a href="https://transmissionbt.com/">Transmission</a> is a lightweight, open-source BitTorrent client. Running it as a Docker container on your server — rather than on your desktop — means downloads continue in the background whether your laptop is open or not. You interact with it through a browser-based web UI from any device on your network.</p>



<p class="wp-block-paragraph">Common legitimate uses for BitTorrent on a home server include downloading ISO images of Linux distributions, large open-source dataset releases, and Creative Commons–licensed content.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">docker run -d \
  --name transmission \
  -p <span class="hljs-number">9091</span>:<span class="hljs-number">9091</span> \
  -p <span class="hljs-number">51413</span>:<span class="hljs-number">51413</span> \
  -v /srv/transmission/config:<span class="hljs-regexp">/config \
  -v /</span>srv/downloads:<span class="hljs-regexp">/downloads \
  linuxserver/</span>transmission</code></span></pre>


<p class="wp-block-paragraph">The web interface is available at <code>http://&lt;your-server-ip&gt;:9091</code> once the container is running. You can add torrents via magnet links or .torrent files directly from the browser.</p>



<h2 class="wp-block-heading">4. OpenVPN — Secure Remote Access to Your Home Network</h2>



<p class="wp-block-paragraph">A VPN server running on your home server allows you to connect securely to your entire home network from anywhere — a coffee-shop Wi-Fi, a hotel, or a corporate network. Once connected, your device behaves as if it were physically sitting at home: you can reach OwnCloud, Plex, and any other local service by their internal IP addresses.</p>



<p class="wp-block-paragraph">The <a href="https://hub.docker.com/r/kylemanna/openvpn">kylemanna/openvpn</a> image is a popular choice because it automates the PKI setup (generating the certificate authority, server certificate, and client certificates) with a few one-time commands. After that, generating a new client config is a single <code>docker exec</code> call.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Initialise the configuration volume (run once)</span>
docker run --rm \
  -v /srv/openvpn:/etc/openvpn \
  kylemanna/openvpn ovpn_genconfig -u udp:<span class="hljs-comment">//YOUR_PUBLIC_HOSTNAME</span>

docker run --rm -it \
  -v /srv/openvpn:/etc/openvpn \
  kylemanna/openvpn ovpn_initpki

<span class="hljs-comment"># Run the server</span>
docker run -d \
  --name openvpn \
  -v /srv/openvpn:/etc/openvpn \
  -p <span class="hljs-number">1194</span>:<span class="hljs-number">1194</span>/udp \
  --cap-add=NET_ADMIN \
  kylemanna/openvpn</code></span></pre>


<p class="wp-block-paragraph"><strong>Router configuration required:</strong> You need to forward UDP port 1194 from your router to the server&#8217;s local IP address. Pair this with the No-IP DDNS container (see below) so you always know the current public IP of your home connection.</p>



<h2 class="wp-block-heading">5. No-IP DDNS — Keep Your Hostname Pointing to a Dynamic IP</h2>



<p class="wp-block-paragraph">Most residential internet connections use a dynamic public IP address assigned by the ISP. This address can change when your router reboots or when the ISP renews your lease. If you want to reach your home server from the internet, you cannot rely on a fixed IP.</p>



<p class="wp-block-paragraph">Dynamic DNS (DDNS) solves this by mapping a stable hostname (e.g., <code>myhome.ddns.net</code>) to your current public IP. <a href="https://www.noip.com/">No-IP</a> is a well-established DDNS provider that offers free hostnames. The No-IP Docker container runs a lightweight update client that periodically checks your public IP and updates the DNS record whenever it changes — so your hostname always resolves correctly.</p>


<pre class="wp-block-code"><span><code class="hljs">docker run -d \
  --name noip \
  -e USERNAME=your_noip_username \
  -e PASSWORD=your_noip_password \
  -e DOMAINS=myhome.ddns.net \
  -e INTERVAL=5 \
  coppit/no-ip</code></span></pre>


<p class="wp-block-paragraph"><strong>Alternatives:</strong> If you prefer to avoid third-party DDNS providers, DuckDNS is a fully free, open alternative with good Docker support. Cloudflare&#8217;s API also works well if you already manage a domain through them.</p>



<h2 class="wp-block-heading">Putting It All Together</h2>



<p class="wp-block-paragraph">These five containers complement each other well. A typical workflow looks like this:</p>



<ul class="wp-block-list">
  <li>No-IP keeps your public hostname current so every other service is reachable by name.</li>
  <li>OpenVPN gives you an encrypted tunnel back to your home network when you&#8217;re away.</li>
  <li>OwnCloud keeps your files synced across devices and accessible from any browser.</li>
  <li>Plex streams your media library to any screen, at home or over the VPN.</li>
  <li>Transmission handles background downloads without requiring your laptop to stay on.</li>
</ul>



<p class="wp-block-paragraph">For production-quality management, consider writing a <code>docker-compose.yml</code> file that declares all five services, their volumes, and their network configuration in one place. This makes the entire stack reproducible and easy to migrate to new hardware.</p>



<p class="wp-block-paragraph">For additional Docker learning resources, see the <a href="http://www.scmgalaxy.com/courses/agenda/virtulization-and-container-tools/docker-training.html">SCM Galaxy Docker training course</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/five-essential-docker-containers-for-your-home-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
