<?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>linux - Hamradio.my</title>
	<atom:link href="https://hamradio.my/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://hamradio.my/tag/linux/</link>
	<description>Amateur Radio, Tech Insights and Product Reviews</description>
	<lastBuildDate>Sun, 12 Apr 2026 11:34:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://hamradio.my/wp-content/uploads/2026/02/cropped-cropped-image-removebg-preview-3-32x32.png</url>
	<title>linux - Hamradio.my</title>
	<link>https://hamradio.my/tag/linux/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Transforming Your Old Raspberry Pi into a Smart Home Hub with DietPi</title>
		<link>https://hamradio.my/2026/04/transforming-your-old-raspberry-pi-into-a-smart-home-hub-with-dietpi/</link>
					<comments>https://hamradio.my/2026/04/transforming-your-old-raspberry-pi-into-a-smart-home-hub-with-dietpi/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 11:34:11 +0000</pubDate>
				<category><![CDATA[dietpi]]></category>
		<category><![CDATA[home assistant]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[armv6l]]></category>
		<category><![CDATA[DietPi]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[home automation]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Lightweight Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Raspberry Pi Zero]]></category>
		<category><![CDATA[sbc]]></category>
		<category><![CDATA[smart home]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8915</guid>

					<description><![CDATA[<p>Do you have an old Raspberry Pi gathering dust? Instead of letting it go to waste, you can turn it into a dedicated smart home controller. By using DietPi, an ultra-lightweight Linux distribution, we can run Home Assistant even on older hardware with surprising efficiency. In this guide, we’ll walk through the process of installing [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2026/04/transforming-your-old-raspberry-pi-into-a-smart-home-hub-with-dietpi/">Transforming Your Old Raspberry Pi into a Smart Home Hub with DietPi</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">Do you have an old Raspberry Pi gathering dust? Instead of letting it go to waste, you can turn it into a dedicated smart home controller. By using <strong>DietPi</strong>, an ultra-lightweight Linux distribution, we can run <strong>Home Assistant</strong> even on older hardware with surprising efficiency.</p>



<p class="wp-block-paragraph">In this guide, we’ll walk through the process of installing Home Assistant using the optimized DietPi software catalog.</p>



<h3 class="wp-block-heading">Prerequisites</h3>



<ul class="wp-block-list">
<li>A Raspberry Pi (all models supported, though RPi 3/4/5 are faster).</li>



<li>A high-quality SD card (Class 10 or A1/A2 rated).</li>



<li>An active internet connection.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 1: Access Your DietPi Terminal</h3>



<p class="wp-block-paragraph">First, log in to your DietPi via SSH or a local terminal. Make sure your system is fully updated before starting:</p>



<p class="wp-block-paragraph">Bash</p>



<pre class="wp-block-code"><code>sudo apt update
sudo apt upgrade
</code></pre>



<h3 class="wp-block-heading">Step 2: Open the DietPi Software Optimizer</h3>



<p class="wp-block-paragraph">DietPi comes with a built-in tool that automates the installation of complex software. To open it, run:</p>



<p class="wp-block-paragraph">Bash</p>



<pre class="wp-block-code"><code>dietpi-software
</code></pre>



<h3 class="wp-block-heading">Step 3: Select Home Assistant</h3>



<ol start="1" class="wp-block-list">
<li>Navigate to <strong>Browse Software</strong>.</li>



<li>Scroll down to the <strong>Home Automation</strong> category.</li>



<li>Find <strong>Home Assistant</strong> and press the Spacebar to select it (you will see an asterisk <code>[*]</code>).</li>



<li>Tab over to <strong>OK</strong> and press Enter.</li>
</ol>



<h3 class="wp-block-heading">Step 4: Run the Installation</h3>



<p class="wp-block-paragraph">Once back in the main menu, navigate down to <strong>Install</strong> and press Enter.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Technical Note:</strong> On older single-core devices (like the Pi 1 or Zero), this process can take a significant amount of time (20–40 minutes). DietPi is compiling dependencies and setting up a Python virtual environment to ensure the best performance. <strong>Do not interrupt the process.</strong></p>
</blockquote>



<h3 class="wp-block-heading">Step 5: Final Configuration</h3>



<p class="wp-block-paragraph">Once the installation finishes, the system will likely prompt for a reboot. After it comes back online, Home Assistant will start automatically in the background.</p>



<p class="wp-block-paragraph">You can access your new dashboard by opening a web browser on your PC or phone and typing:</p>



<p class="wp-block-paragraph"><code>http://your-pi-ip-address:8123</code></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Pro-Tips for Peak Performance</h3>



<ul class="wp-block-list">
<li><strong>Logging to RAM:</strong> Since Home Assistant writes to its database frequently, go to <code>dietpi-config</code> > <strong>Advanced Options</strong> and ensure <strong>RAMlog</strong> is enabled. This extends the life of your SD card.</li>



<li><strong>External Storage:</strong> If you find the system slowing down as your database grows, consider using <code>dietpi-drive_manager</code> to move your user data to a USB SSD.</li>



<li><strong>Stay Minimal:</strong> On older <code>armv6l</code> hardware, keep your integrations simple. Avoid high-bandwidth tasks like live camera streaming to keep the interface snappy.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Conclusion</h3>



<p class="wp-block-paragraph">Installing Home Assistant on DietPi is the &#8220;pro-level&#8221; way to build a stable, lean smart home hub. You get the power of Home Assistant without the bloat of a standard operating system.</p>
<p>The post <a href="https://hamradio.my/2026/04/transforming-your-old-raspberry-pi-into-a-smart-home-hub-with-dietpi/">Transforming Your Old Raspberry Pi into a Smart Home Hub with DietPi</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2026/04/transforming-your-old-raspberry-pi-into-a-smart-home-hub-with-dietpi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ElecWhat – A Minimalist, Reliable WhatsApp Desktop Client for Linux</title>
		<link>https://hamradio.my/2025/07/elecwhat-a-minimalist-reliable-whatsapp-desktop-client-for-linux/</link>
					<comments>https://hamradio.my/2025/07/elecwhat-a-minimalist-reliable-whatsapp-desktop-client-for-linux/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Mon, 28 Jul 2025 16:38:41 +0000</pubDate>
				<category><![CDATA[free open source software]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[whatsapp]]></category>
		<category><![CDATA[appimage]]></category>
		<category><![CDATA[appindicator]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[desktopclient]]></category>
		<category><![CDATA[electronapp]]></category>
		<category><![CDATA[elecwhat]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[lightweight]]></category>
		<category><![CDATA[linuxapps]]></category>
		<category><![CDATA[linuxuser]]></category>
		<category><![CDATA[minimalapp]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[snapcraft]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Whatsapp]]></category>
		<category><![CDATA[whatsappdesktop]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7798</guid>

					<description><![CDATA[<p>If you’re looking for a clean, stable WhatsApp experience on your Linux desktop, ElecWhat delivers exactly that—no bloat, no noise, just a focused tool that works. Built with simplicity and performance in mind, ElecWhat runs quietly in the background, integrates nicely with your desktop environment, and offers just enough customization to fit your workflow. Why [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/elecwhat-a-minimalist-reliable-whatsapp-desktop-client-for-linux/">ElecWhat – A Minimalist, Reliable WhatsApp Desktop Client for Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you’re looking for a clean, stable WhatsApp experience on your Linux desktop, <strong>ElecWhat</strong> delivers exactly that—no bloat, no noise, just a focused tool that works.</p>



<p class="wp-block-paragraph">Built with simplicity and performance in mind, ElecWhat runs quietly in the background, integrates nicely with your desktop environment, and offers just enough customization to fit your workflow.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Why Use ElecWhat?</strong></h2>



<p class="wp-block-paragraph">ElecWhat is a lightweight desktop client for WhatsApp that prioritizes <strong>stability</strong>, <strong>customization</strong>, and <strong>Linux-first features</strong>. The codebase is tiny—under 600 lines—which makes it easy to audit and maintain. It’s been rock-solid in daily use, handling notifications, chats, and tray icon updates without issue.</p>



<p class="wp-block-paragraph">If you want a client that respects your system resources and just works, this is it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Features at a Glance</strong></h2>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Desktop Notifications</strong> – Stay up to date with incoming messages.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f514.png" alt="🔔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Tray Icon with Unread Counter</strong> – Uses AppIndicator, works well with supported desktops.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3b9.png" alt="🎹" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Custom Keyboard Shortcuts</strong> – Personalize your controls.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>CSS Styling Support</strong> – Tweak the interface your way—inline styles, external files, or remote stylesheets.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f524.png" alt="🔤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Spellcheck</strong> – Enable or disable, with support for multiple languages.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>CLI and D-Bus Support</strong> – Useful for scripting, automation, or quick toggles.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Remembers Window Position</strong> – Picks up exactly where you left it.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



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



<h3 class="wp-block-heading"><strong>Ubuntu / Kubuntu</strong></h3>



<ul class="wp-block-list">
<li>Available as a Snap package</li>



<li><code>.deb</code> file (with <code>--no-sandbox</code> flag due to Electron security restrictions)</li>



<li>AppImage option (also requires <code>--no-sandbox</code>)</li>
</ul>



<h3 class="wp-block-heading"><strong>Arch Linux</strong></h3>



<ul class="wp-block-list">
<li>Install via AUR: <code>yay -S elecwhat-bin</code></li>



<li>Or use the AppImage / prebuilt packages from the Releases section</li>
</ul>



<h3 class="wp-block-heading"><strong>Debian</strong></h3>



<ul class="wp-block-list">
<li>Grab the <code>.deb</code> from Releases or Buildkite</li>



<li>AppImage option also available</li>
</ul>



<h3 class="wp-block-heading"><strong>Fedora</strong></h3>



<ul class="wp-block-list">
<li>RPM packages in Releases</li>



<li>AppImage support included</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Tip:</strong> For tray icon support on GNOME, install the AppIndicator extension.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Configuration Example</strong></h2>



<p class="wp-block-paragraph">ElecWhat keeps your settings simple and flexible. Create or edit the config at:</p>



<ul class="wp-block-list">
<li><code>~/.config/elecwhat/config.json</code></li>



<li>(For Snap users: <code>~/snap/elecwhat/current/.config/elecwhat/config.json</code>)</li>
</ul>



<p class="wp-block-paragraph">Here’s an example config:</p>



<pre class="wp-block-code"><code>{
  "notification-prefix": "elecwhat - ",
  "quit-on-close": false,
  "show-at-startup": false,
  "dbus": true,
  "menu-bar": true,
  "menu-bar-auto-hide": true,
  "keys": {
    "C ArrowDown": {
      "whatsappAction": "GO_TO_NEXT_CHAT"
    }
  },
  "css": &#91;
    "span { font-size: small !important; }",
    "https://gist.githubusercontent.com/piec/3f9a198a7694f1df37895ee3faee9b6e/raw/whatsapp-test.css",
    "file://~/mysheet.css"
  ],
  "spellcheck": true,
  "spellcheck-languages": &#91;"en-US", "fr"],
  "open-dev-tools": false
}
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Design Philosophy</strong></h2>



<p class="wp-block-paragraph">ElecWhat is not trying to be everything. It’s meant to be small, focused, and functional. You won’t find multi-account support or complex integrations here—just a clean interface that lets you use WhatsApp on your desktop without distractions.</p>



<p class="wp-block-paragraph">If you&#8217;re someone who appreciates simplicity and reliability, ElecWhat will feel right at home in your setup.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Where to Get It</strong></h2>



<p class="wp-block-paragraph">You can find builds for various distributions—including <code>.deb</code>, <code>.rpm</code>, and AppImage formats—on the project&#8217;s <a href="https://github.com/piec/elecwhat/releases">GitHub Releases</a>.</p>



<p class="wp-block-paragraph">Give it a shot. It might be the cleanest WhatsApp client you’ve ever used on Linux.</p>
<p>The post <a href="https://hamradio.my/2025/07/elecwhat-a-minimalist-reliable-whatsapp-desktop-client-for-linux/">ElecWhat – A Minimalist, Reliable WhatsApp Desktop Client for Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/elecwhat-a-minimalist-reliable-whatsapp-desktop-client-for-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How I Installed Jellyfin on Debian Using Flatpak</title>
		<link>https://hamradio.my/2025/07/how-i-installed-jellyfin-on-debian-using-flatpak/</link>
					<comments>https://hamradio.my/2025/07/how-i-installed-jellyfin-on-debian-using-flatpak/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 27 Jul 2025 11:07:46 +0000</pubDate>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[do it yourself]]></category>
		<category><![CDATA[flatpak]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[media server]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[debianlinux]]></category>
		<category><![CDATA[diyserver]]></category>
		<category><![CDATA[flathub]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[jellyfin]]></category>
		<category><![CDATA[jellyfinsetup]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linuxserver]]></category>
		<category><![CDATA[mediaorganization]]></category>
		<category><![CDATA[mediaserver]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[selfhosted]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7792</guid>

					<description><![CDATA[<p>I’ve been looking for a good self-hosted media server, and after trying out a few, I landed on Jellyfin. It’s free, open-source, and doesn&#8217;t nag you with subscriptions or locked features. Exactly what I needed. Instead of going the traditional apt install route, I decided to install Jellyfin using Flatpak — it keeps things clean [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/how-i-installed-jellyfin-on-debian-using-flatpak/">How I Installed Jellyfin on Debian Using Flatpak</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">I’ve been looking for a good self-hosted media server, and after trying out a few, I landed on <strong>Jellyfin</strong>. It’s free, open-source, and doesn&#8217;t nag you with subscriptions or locked features. Exactly what I needed.</p>



<p class="wp-block-paragraph">Instead of going the traditional <code>apt install</code> route, I decided to install Jellyfin using <strong>Flatpak</strong> — it keeps things clean and isolated, which I prefer on my Debian setup. Here’s how I got it up and running, including setting up access to my media folder.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Installing Flatpak (if you don’t have it)</h2>



<p class="wp-block-paragraph">Flatpak wasn’t installed on my machine by default, so I ran:</p>



<pre class="wp-block-code"><code>sudo apt update
sudo apt install flatpak -y
</code></pre>



<p class="wp-block-paragraph">After that, I added the Flathub repo:</p>



<pre class="wp-block-code"><code>flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
</code></pre>



<p class="wp-block-paragraph">Quick tip: After setting up Flatpak, it’s best to log out and log back in — or just reboot — to make sure everything works smoothly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Installing Jellyfin Server via Flatpak</h2>



<p class="wp-block-paragraph">The Flatpak version of Jellyfin is available on Flathub, and installing it was simple:</p>



<pre class="wp-block-code"><code>flatpak install flathub org.jellyfin.JellyfinServer -y
</code></pre>



<p class="wp-block-paragraph">To start the server, I ran:</p>



<pre class="wp-block-code"><code>flatpak run org.jellyfin.JellyfinServer
</code></pre>



<p class="wp-block-paragraph">You’ll see some logs in the terminal, which means Jellyfin is doing its thing. Keep this terminal open for now — or later you can make it run in the background.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Open It in Your Browser</h2>



<p class="wp-block-paragraph">Once it’s running, just go to:</p>



<pre class="wp-block-code"><code>http:&#47;&#47;localhost:8096
</code></pre>



<p class="wp-block-paragraph">That’ll open the setup wizard where you pick a language, create your user, and set up your libraries.</p>



<p class="wp-block-paragraph">If you&#8217;re running this on a different machine, just replace <code>localhost</code> with that machine’s IP.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4: Giving Jellyfin Access to Your Media</h2>



<p class="wp-block-paragraph">Here’s where I got stuck for a minute: Jellyfin (via Flatpak) can’t see my media folders by default because of Flatpak’s sandboxing. Took me a second to figure this out.</p>



<p class="wp-block-paragraph">Let’s say your movies are in <code>/mnt/media/movies</code>. You’ll need to give Jellyfin permission to see that folder:</p>



<pre class="wp-block-code"><code>flatpak override org.jellyfin.JellyfinServer --filesystem=/mnt/media:ro
</code></pre>



<p class="wp-block-paragraph">The <code>:ro</code> part means read-only — safe if you don’t want Jellyfin messing with your files.</p>



<p class="wp-block-paragraph">If you want it to write metadata, subtitles, etc., drop the <code>:ro</code>:</p>



<pre class="wp-block-code"><code>flatpak override org.jellyfin.JellyfinServer --filesystem=/mnt/media
</code></pre>



<p class="wp-block-paragraph">Then just restart Jellyfin:</p>



<pre class="wp-block-code"><code>flatpak run org.jellyfin.JellyfinServer
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5: Add Media Libraries</h2>



<p class="wp-block-paragraph">Back in the web interface:</p>



<ul class="wp-block-list">
<li>Go to <strong>Dashboard > Libraries</strong></li>



<li>Click <strong>Add Media Library</strong></li>



<li>Pick what kind of content it is (Movies, TV, Music…)</li>



<li>Point it to your folder, e.g., <code>/mnt/media/movies</code></li>



<li>Save and let Jellyfin do its magic</li>
</ul>



<p class="wp-block-paragraph">It’ll start scanning and building up your media library.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">That’s It!</h2>



<p class="wp-block-paragraph">Jellyfin’s now up and running on my Debian system via Flatpak, and it&#8217;s happily indexing my media. The Flatpak approach keeps everything tidy, and it works great so far.</p>



<p class="wp-block-paragraph">If you&#8217;re like me and prefer simple, no-nonsense tools that respect your setup, Jellyfin’s worth a try. And Flatpak makes it dead simple to install without touching your system packages.</p>
<p>The post <a href="https://hamradio.my/2025/07/how-i-installed-jellyfin-on-debian-using-flatpak/">How I Installed Jellyfin on Debian Using Flatpak</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/how-i-installed-jellyfin-on-debian-using-flatpak/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Install FreeTAKServer Using Docker</title>
		<link>https://hamradio.my/2025/07/how-to-install-freetakserver-using-docker/</link>
					<comments>https://hamradio.my/2025/07/how-to-install-freetakserver-using-docker/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 12 Jul 2025 23:52:35 +0000</pubDate>
				<category><![CDATA[android tactical assault kit]]></category>
		<category><![CDATA[android team awareness kit]]></category>
		<category><![CDATA[ATAK]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[freeTAKserver]]></category>
		<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[APRS]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[disasterresponse]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercompose]]></category>
		<category><![CDATA[EmComm]]></category>
		<category><![CDATA[emergencycommunications]]></category>
		<category><![CDATA[FreeTAKServer]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[meshtastic]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[radiocomms]]></category>
		<category><![CDATA[RadioTech]]></category>
		<category><![CDATA[situationalawareness]]></category>
		<category><![CDATA[tacticalmapping]]></category>
		<category><![CDATA[takserver]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7650</guid>

					<description><![CDATA[<p>In the world of amateur radio, situational awareness and efficient communication are paramount. Enter FreeTAKServer (FTS), an open-source implementation of a Tactical Awareness Kit (TAK) server, designed to facilitate real-time data sharing and coordination among teams. Originally developed for military applications, FTS has found its way into civilian use, including amateur radio operations. This guide [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/how-to-install-freetakserver-using-docker/">How to Install FreeTAKServer Using Docker</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">In the world of amateur radio, situational awareness and efficient communication are paramount. Enter FreeTAKServer (FTS), an open-source implementation of a Tactical Awareness Kit (TAK) server, designed to facilitate real-time data sharing and coordination among teams. Originally developed for military applications, FTS has found its way into civilian use, including amateur radio operations.</p>



<p class="wp-block-paragraph">This guide will walk you through installing FreeTAKServer using Docker, a containerization platform that simplifies deployment and management of applications.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d6.png" alt="📖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Official docs:</strong> <a href="https://freetakteam.github.io/FreeTAKServer-User-Docs/Installation/mechanism/Docker/overview/">FreeTAKServer Docker Setup</a></h2>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What You’ll Need</h2>



<ul class="wp-block-list">
<li>A Linux server (preferred — Ubuntu, Debian, Fedora, etc.)</li>



<li>Docker or Podman installed</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Choose Your Container Runtime</h2>



<p class="wp-block-paragraph">FreeTAKServer works with both <strong>Docker</strong> and <strong>Podman</strong>.</p>



<p class="wp-block-paragraph">Check what’s installed:</p>



<pre class="wp-block-code"><code>docker --version
podman --version
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Important:</strong> Pick one and <strong>stick with it</strong> for the whole setup.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Create a Folder</h2>



<p class="wp-block-paragraph">Make a folder to keep everything organized:</p>



<pre class="wp-block-code"><code>mkdir ~/freetakserver
cd ~/freetakserver
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Get the Compose File</h2>



<p class="wp-block-paragraph">FreeTAKServer provides a pre-made file to launch everything easily.</p>



<p class="wp-block-paragraph">Download it:</p>



<pre class="wp-block-code"><code>wget https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/refs/heads/main/containers/example-compose.yaml -O compose.yaml
</code></pre>



<p class="wp-block-paragraph">Open it in your text editor:</p>



<pre class="wp-block-code"><code>nano compose.yaml
</code></pre>



<p class="wp-block-paragraph">Look for a line like this:</p>



<pre class="wp-block-code"><code>FTS_IP: YOUR EXTERNAL URL HERE
</code></pre>



<p class="wp-block-paragraph">Replace it with your server’s <strong>external IP address</strong> or domain name. Example:</p>



<pre class="wp-block-code"><code>FTS_IP: 123.45.67.89
</code></pre>



<p class="wp-block-paragraph">Save and close.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Start the Server</h2>



<p class="wp-block-paragraph">Now run the services in the background:</p>



<p class="wp-block-paragraph"><strong>With Docker:</strong></p>



<pre class="wp-block-code"><code>docker compose -f compose.yaml up -d
</code></pre>



<p class="wp-block-paragraph"><strong>With Podman:</strong></p>



<pre class="wp-block-code"><code>podman-compose -f compose.yaml up -d
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 5: Check the Logs</h2>



<p class="wp-block-paragraph">Want to see if it’s working?</p>



<pre class="wp-block-code"><code>docker logs freetakserver
docker logs freetakserver-ui
</code></pre>



<p class="wp-block-paragraph">Or with Podman:</p>



<pre class="wp-block-code"><code>podman logs freetakserver
podman logs freetakserver-ui
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6d1.png" alt="🛑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 6: Stop the Server</h2>



<p class="wp-block-paragraph">When you&#8217;re done or want to update:</p>



<pre class="wp-block-code"><code>docker compose -f compose.yaml down
</code></pre>



<p class="wp-block-paragraph">Or:</p>



<pre class="wp-block-code"><code>podman-compose -f compose.yaml down
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4be.png" alt="💾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Where’s My Data Stored?</h2>



<p class="wp-block-paragraph">All your important FreeTAKServer data lives inside a Docker volume.</p>



<p class="wp-block-paragraph">To find where it&#8217;s stored:</p>



<pre class="wp-block-code"><code>docker inspect freetakserver_free-tak-core-db
</code></pre>



<p class="wp-block-paragraph">Look for the <code>Mountpoint</code> — that’s the full path to your data.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5c2.png" alt="🗂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example: <code>/var/lib/docker/volumes/freetakserver_free-tak-core-db/_data</code></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50c.png" alt="🔌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ports to Know</h2>



<p class="wp-block-paragraph">The server uses default FreeTAKServer ports, but you can customize them with environment variables in the <code>compose.yaml</code> if needed.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Extra Settings (Optional)</h2>



<p class="wp-block-paragraph">Here are some useful environment variables:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Variable Name</th><th>What It Does</th></tr></thead><tbody><tr><td><code>FTS_CONNECTION_MESSAGE</code></td><td>Custom welcome message on connection</td></tr><tr><td><code>APPPORT</code></td><td>Port for the Web UI</td></tr><tr><td><code>APIIP</code> / <code>APIPORT</code></td><td>Change where the API listens</td></tr><tr><td><code>WEBMAPIP</code> / <code>WEBMAPPORT</code></td><td>Customize Web Map location</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Summary</h2>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Simple Docker-based install</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Works on Linux with Docker or Podman</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Data is stored persistently using volumes</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> UI and API included</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Need Help?</h2>



<p class="wp-block-paragraph">Check the official FreeTAKServer Docker guide here:<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://freetakteam.github.io/FreeTAKServer-User-Docs/Installation/mechanism/Docker/overview/">https://freetakteam.github.io/FreeTAKServer-User-Docs/Installation/mechanism/Docker/overview/</a></p>
<p>The post <a href="https://hamradio.my/2025/07/how-to-install-freetakserver-using-docker/">How to Install FreeTAKServer Using Docker</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/how-to-install-freetakserver-using-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Viewing SriHome SH025 IP Camera on Linux with MPV</title>
		<link>https://hamradio.my/2025/07/viewing-srihome-sh025-ip-camera-on-linux-with-mpv/</link>
					<comments>https://hamradio.my/2025/07/viewing-srihome-sh025-ip-camera-on-linux-with-mpv/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Tue, 08 Jul 2025 09:07:10 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[cctv]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[ffplay]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[homeautomation]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[ipcamera]]></category>
		<category><![CDATA[ipcamerastream]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linuxdesktop]]></category>
		<category><![CDATA[linuxsetup]]></category>
		<category><![CDATA[localstreaming]]></category>
		<category><![CDATA[mpv]]></category>
		<category><![CDATA[nocloud]]></category>
		<category><![CDATA[onvif]]></category>
		<category><![CDATA[openrtsp]]></category>
		<category><![CDATA[privacyfirst]]></category>
		<category><![CDATA[rtsp]]></category>
		<category><![CDATA[rtspstream]]></category>
		<category><![CDATA[sh025]]></category>
		<category><![CDATA[smartcam]]></category>
		<category><![CDATA[sricam]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8302</guid>

					<description><![CDATA[<p>I recently installed a SriHome SH025 IP camera and wanted to monitor the live stream from my Arch Linux desktop (CachyOS in my case). While the official app works, I prefer using local tools — no cloud, no mobile app, just clean video over my LAN. After some digging, I got the RTSP stream working [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/viewing-srihome-sh025-ip-camera-on-linux-with-mpv/">Viewing SriHome SH025 IP Camera on Linux with MPV</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">I recently installed a <strong>SriHome SH025</strong> IP camera and wanted to monitor the live stream from my <strong>Arch Linux desktop</strong> (CachyOS in my case). While the official app works, I prefer using local tools — no cloud, no mobile app, just clean video over my LAN.</p>



<p class="wp-block-paragraph">After some digging, I got the RTSP stream working beautifully with <code>mpv</code>, and I even created a launcher icon for quick access.</p>



<p class="wp-block-paragraph">Here’s exactly how I did it — plus how to <strong>find the right RTSP port</strong> using <code>nmap</code>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> My Setup Goals</h2>



<ul class="wp-block-list">
<li>Watch the SriHome SH025 stream on my Linux desktop</li>



<li>Skip the cloud and use direct RTSP</li>



<li>Get working video (and ideally audio)</li>



<li>Add a clickable desktop launcher</li>



<li>Find the RTSP port if undocumented</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Finding the RTSP Port with Nmap</h2>



<p class="wp-block-paragraph">SriHome cameras often don’t use the <strong>default RTSP port (554)</strong> — mine used <code>8554</code>. If you don’t know your camera’s port, use <code>nmap</code> to scan for open ones:</p>



<h3 class="wp-block-heading">1. Install <code>nmap</code> (if you don&#8217;t already have it):</h3>



<pre class="wp-block-code"><code>sudo pacman -S nmap
</code></pre>



<h3 class="wp-block-heading">2. Scan for common video streaming ports:</h3>



<pre class="wp-block-code"><code>nmap -p 554,8554,10554,7070,6688 192.168.0.11
</code></pre>



<p class="wp-block-paragraph">Replace <code>192.168.0.11</code> with your camera’s actual IP address.</p>



<h3 class="wp-block-heading">Example output:</h3>



<pre class="wp-block-code"><code>PORT      STATE  SERVICE
554/tcp   closed rtsp
8554/tcp  open   rtsp-alt
10554/tcp closed unknown
6688/tcp  open   unknown
</code></pre>



<p class="wp-block-paragraph">In my case, <strong>port 8554 was open</strong>, which matched what <code>ffplay</code> and <code>mpv</code> needed.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Testing the Stream with ffplay</h2>



<p class="wp-block-paragraph">Before setting up anything fancy, I tested the RTSP stream with:</p>



<pre class="wp-block-code"><code>ffplay rtsp://admin:888888@192.168.0.11:8554/profile0
</code></pre>



<p class="wp-block-paragraph">It worked! Full 1080p video and even audio came through. This confirmed the camera was broadcasting fine over RTSP.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Daily Viewing with MPV</h2>



<p class="wp-block-paragraph">After confirming the stream worked, I switched to <code>mpv</code> for daily use. It&#8217;s lightweight and integrates better with my desktop.</p>



<pre class="wp-block-code"><code>mpv rtsp://admin:888888@192.168.0.11:8554/profile0
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Create a Desktop Shortcut</h2>



<p class="wp-block-paragraph">To make launching the camera easy from my app launcher, I made a <code>.desktop</code> file.</p>



<h3 class="wp-block-heading">1. Create the launcher:</h3>



<pre class="wp-block-code"><code>nano ~/.local/share/applications/sricam-view.desktop
</code></pre>



<h3 class="wp-block-heading">2. Paste this:</h3>



<pre class="wp-block-code"><code>&#91;Desktop Entry]
Name=SriHome SH025 Viewer
Comment=Open SriHome IP Camera Stream in MPV
Exec=mpv rtsp://admin:888888@192.168.0.11:8554/profile0
Icon=camera-video
Terminal=false
Type=Application
Categories=Video;AudioVideo;Utility;
</code></pre>



<h3 class="wp-block-heading">3. Make it executable:</h3>



<pre class="wp-block-code"><code>chmod +x ~/.local/share/applications/sricam-view.desktop
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Wrap-up</h2>



<p class="wp-block-paragraph">SriHome doesn’t document these RTSP settings well, but with a little effort — and tools like <code>nmap</code>, <code>ffplay</code>, <code>mpv</code>, and <code>ffmpeg</code> — you can get full, local access to your camera stream.</p>
<p>The post <a href="https://hamradio.my/2025/07/viewing-srihome-sh025-ip-camera-on-linux-with-mpv/">Viewing SriHome SH025 IP Camera on Linux with MPV</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/viewing-srihome-sh025-ip-camera-on-linux-with-mpv/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Building and Running aprsc on Arch Linux with aprsc-9m2pju-git</title>
		<link>https://hamradio.my/2025/07/building-and-running-aprsc-on-arch-linux-with-aprsc-9m2pju-git/</link>
					<comments>https://hamradio.my/2025/07/building-and-running-aprsc-on-arch-linux-with-aprsc-9m2pju-git/#comments</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 06 Jul 2025 22:56:43 +0000</pubDate>
				<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[APRS]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[automatic packet reporting system]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[radio amatur]]></category>
		<category><![CDATA[9m2pju]]></category>
		<category><![CDATA[AmateurRadio]]></category>
		<category><![CDATA[aprsc]]></category>
		<category><![CDATA[APRSIS]]></category>
		<category><![CDATA[aur]]></category>
		<category><![CDATA[aur-package]]></category>
		<category><![CDATA[AX25]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[hessu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[packetradio]]></category>
		<category><![CDATA[radio-server]]></category>
		<category><![CDATA[systemd]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8288</guid>

					<description><![CDATA[<p>If you’ve ever wanted to run your own APRS-IS server, especially on an Arch-based system, I’ve packaged a convenient way to do that: aprsc-9m2pju-git, an unofficial Arch Linux AUR package for aprsc, the high-performance APRS-IS core server daemon. This project is aimed at amateur radio operators, APRS tinkerers, and sysadmins interested in experimenting with their [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/building-and-running-aprsc-on-arch-linux-with-aprsc-9m2pju-git/">Building and Running aprsc on Arch Linux with aprsc-9m2pju-git</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you’ve ever wanted to run your own APRS-IS server, especially on an Arch-based system, I’ve packaged a convenient way to do that: <strong><code>aprsc-9m2pju-git</code></strong>, an unofficial Arch Linux AUR package for <a>aprsc</a>, the high-performance <a>APRS-IS</a> core server daemon.</p>



<p class="wp-block-paragraph">This project is aimed at amateur radio operators, APRS tinkerers, and sysadmins interested in experimenting with their own APRS infrastructure. I created this package to simplify the process of building and deploying the latest development version of aprsc on Arch Linux.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6f0.png" alt="🛰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What is aprsc?</h2>



<p class="wp-block-paragraph"><a>aprsc</a> is a lightweight, multithreaded server daemon written in C that forms the backbone of the <a>APRS-IS network</a>. It relays packets between APRS clients, Internet Gateways (IGates), and RF repeaters. aprsc is widely used on the global APRS backbone due to its performance, reliability, and robust protocol support.</p>



<h3 class="wp-block-heading">Highlights:</h3>



<ul class="wp-block-list">
<li>Fully multithreaded and scalable</li>



<li>Supports thousands of concurrent client connections</li>



<li>Built-in APRS-IS filter support</li>



<li>Web status interface</li>



<li>TLS/SSL and <a>SCTP</a> support</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> About <code>aprsc-9m2pju-git</code></h2>



<p class="wp-block-paragraph">This AUR package builds the <strong>latest git version</strong> of aprsc from upstream:<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/hessu/aprsc">https://github.com/hessu/aprsc</a></p>



<p class="wp-block-paragraph">It installs everything into <code>/opt/aprsc</code>, provides a working <code>systemd</code> service, sets up user permissions, and handles runtime directory creation. It’s tailored for custom or experimental setups without interfering with core system paths.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Installation</h3>



<p class="wp-block-paragraph">To install via your favorite AUR helper:</p>



<pre class="wp-block-code"><code>yay -S aprsc-9m2pju-git
</code></pre>



<p class="wp-block-paragraph">Or manually:</p>



<pre class="wp-block-code"><code>git clone https://aur.archlinux.org/aprsc-9m2pju-git.git
cd aprsc-9m2pju-git
makepkg -si
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Gets Installed?</h2>



<p class="wp-block-paragraph">Here’s a quick breakdown of installed files and locations:</p>



<ul class="wp-block-list">
<li><strong>Binary &amp; Config:</strong> <code>/opt/aprsc/</code></li>



<li><strong>Systemd Service:</strong> <code>/usr/lib/systemd/system/aprsc.service</code></li>
</ul>



<p class="wp-block-paragraph">Log files live under <code>/opt/aprsc/logs</code>, and the default config file is at <code>/opt/aprsc/etc/aprsc.conf</code>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Running aprsc</h2>



<p class="wp-block-paragraph">After installation, start the service with:</p>



<pre class="wp-block-code"><code>sudo systemctl --user enable --now aprsc.service
</code></pre>



<p class="wp-block-paragraph">Check logs:</p>



<pre class="wp-block-code"><code>journalctl -u aprsc.service -f
</code></pre>



<p class="wp-block-paragraph">Then open your browser and visit the web interface to verify it&#8217;s running!</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Things to Know</h2>



<ul class="wp-block-list">
<li><strong>APRS-IS Authentication</strong>: You&#8217;ll need a valid <a>callsign</a> and <a>APRS-IS passcode</a> to allow client connections or gating.</li>



<li><strong>Customize Your Config</strong>: The default <code>aprsc.conf</code> is a minimal example. You should update it before exposing the server to the public.</li>



<li><strong>Development Version</strong>: This package tracks the latest commit from the <code>main</code> branch upstream. It’s great for testing, not necessarily for production unless you know what you&#8217;re doing.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f64f.png" alt="🙏" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Thanks &amp; Credits</h2>



<p class="wp-block-paragraph">Big shout-out to:</p>



<ul class="wp-block-list">
<li><strong><a>Heikki Hannikainen (hessu)</a></strong> – author and maintainer of aprsc</li>



<li><strong>Arch Linux &amp; AUR community</strong> – for empowering users to package and share tools easily</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4eb.png" alt="📫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Maintainer</h2>



<ul class="wp-block-list">
<li>Callsign: <strong>9M2PJU</strong></li>



<li>Email: <a href="mailto:9m2pju@hamradio.my">9m2pju@hamradio.my</a></li>



<li>GitHub: <a href="https://github.com/9M2PJU">@9M2PJU</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resources</h2>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/hessu/aprsc">Upstream Project (hessu/aprsc)</a></li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://aur.archlinux.org/packages/aprsc-9m2pju-git">AUR Package: aprsc-9m2pju-git</a></li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://aprs-is.net">APRS-IS Technical Wiki</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">If you’re curious about APRS internals, want to run your own APRS-IS node, or just like experimenting with ham radio and Arch Linux, I hope this package makes it easier for you to get started.</p>



<p class="wp-block-paragraph">73 de 9M2PJU <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e1.png" alt="📡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://hamradio.my/2025/07/building-and-running-aprsc-on-arch-linux-with-aprsc-9m2pju-git/">Building and Running aprsc on Arch Linux with aprsc-9m2pju-git</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/building-and-running-aprsc-on-arch-linux-with-aprsc-9m2pju-git/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Unlock Your Terminal’s True Potential with Nerd Fonts</title>
		<link>https://hamradio.my/2025/07/unlock-your-terminals-true-potential-with-nerd-fonts/</link>
					<comments>https://hamradio.my/2025/07/unlock-your-terminals-true-potential-with-nerd-fonts/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 04 Jul 2025 15:14:36 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[developerfonts]]></category>
		<category><![CDATA[devicons]]></category>
		<category><![CDATA[devtools]]></category>
		<category><![CDATA[firaCode]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[hackfont]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[nerdfonts]]></category>
		<category><![CDATA[ohmyzsh]]></category>
		<category><![CDATA[openfonts]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[powerline]]></category>
		<category><![CDATA[programmingfonts]]></category>
		<category><![CDATA[vscode]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8224</guid>

					<description><![CDATA[<p>If you’re the kind of person who lives in the terminal—or just spends a lot of time in it—then you know how much the right font can change everything. Not just how things look, but how clearly and efficiently you can work. That’s where Nerd Fonts comes in. Nerd Fonts isn’t just another developer font. [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/unlock-your-terminals-true-potential-with-nerd-fonts/">Unlock Your Terminal’s True Potential with Nerd Fonts</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you’re the kind of person who lives in the terminal—or just spends a lot of time in it—then you know how much the right font can change everything. Not just how things <em>look</em>, but how clearly and efficiently you can work.</p>



<p class="wp-block-paragraph">That’s where <strong><a href="https://www.nerdfonts.com/">Nerd Fonts</a></strong> comes in.</p>



<p class="wp-block-paragraph">Nerd Fonts isn’t just another developer font. It’s a complete ecosystem of patched fonts, designed specifically for devs, sysadmins, and power users who want <strong>icon-rich, powerline-compatible</strong>, and beautiful fonts—right in their favorite terminal, editor, or tool.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is Nerd Fonts?</h2>



<p class="wp-block-paragraph">Nerd Fonts is a collection, patcher, and community-powered project that takes your favorite developer fonts (like <strong>FiraCode</strong>, <strong>Hack</strong>, <strong>Iosevka</strong>, <strong>Meslo</strong>, and many more) and supercharges them by adding thousands of extra glyphs from iconic fonts like:</p>



<ul class="wp-block-list">
<li><a>Font Awesome</a></li>



<li><a>Devicons</a></li>



<li><a>Octicons</a></li>



<li><a>Material Design Icons</a></li>



<li><a>Powerline</a> and <strong>extra powerline symbols</strong></li>



<li><a>Codicons</a> (like those used in VS Code)</li>
</ul>



<p class="wp-block-paragraph">These patched fonts are plug-and-play: ready for any terminal, editor, or shell prompt you throw at them.</p>



<figure class="wp-block-image size-full"><img  title="" fetchpriority="high" decoding="async" width="955" height="660" src="https://hamradio.my/wp-content/uploads/2025/07/image-4.png"  alt="image-4 Unlock Your Terminal’s True Potential with Nerd Fonts"  class="wp-image-8227" srcset="https://hamradio.my/wp-content/uploads/2025/07/image-4.png 955w, https://hamradio.my/wp-content/uploads/2025/07/image-4-300x207.png 300w, https://hamradio.my/wp-content/uploads/2025/07/image-4-768x531.png 768w" sizes="(max-width: 955px) 100vw, 955px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why You’ll Love Nerd Fonts</h2>



<ul class="wp-block-list">
<li><strong>10,000+ icons</strong>: From development tools to popular tech logos, you’ll always have the right symbol.</li>



<li><strong>Powerline compatibility</strong>: Every font includes Powerline and extra symbols so your status lines and shell prompts look amazing.</li>



<li><strong>Cross-platform</strong>: Linux, macOS, Windows—Nerd Fonts works on all of them.</li>



<li><strong>Plug-and-play</strong>: Download, install, select your font, and go.</li>



<li><strong>Popular project support</strong>: Used and loved by tools like <a>Powerlevel9k</a>, <a>colorls</a>, <a>LSD (LSDeluxe)</a>, <a>Oh My Fish</a>, and <a>VimDevIcons</a>.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Want to Patch Your Own Fonts?</h2>



<p class="wp-block-paragraph">If you’re feeling adventurous, Nerd Fonts even includes a <a href="https://github.com/ryanoasis/nerd-fonts#font-patcher">Font Patcher script</a> built with <a>FontForge</a>. It lets you take your favorite font and merge in icons from a symbol font of your choice. The combinations are practically endless.</p>



<p class="wp-block-paragraph">Use the <code>--custom</code> option and make something truly unique that reflects your setup and style.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Try It Yourself</h2>



<p class="wp-block-paragraph">Want to see it in action? Fire up your terminal with a Nerd Font and watch your shell prompt transform. Or open Vim/Neovim and enjoy filetype icons with DevIcons. Customize your LS output, powerline prompt, or even your i3bar.</p>



<p class="wp-block-paragraph">You’ll quickly wonder how you ever lived without it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e5.png" alt="📥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Download &amp; Get Started</h2>



<p class="wp-block-paragraph">Getting started is easy. Just head to the <a href="https://www.nerdfonts.com/font-downloads">Nerd Fonts Downloads page</a> and grab a font that suits your workflow. They’re pre-patched and ready to use.</p>



<p class="wp-block-paragraph">Whether you’re a hardcore Vim user, a Zsh customizer, or just want to make your terminal more intuitive, <strong>Nerd Fonts brings your setup to life.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f64c.png" alt="🙌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Open Source &amp; Growing</h2>



<p class="wp-block-paragraph">Nerd Fonts is open source, built and maintained by <a href="https://github.com/ryanoasis">Ryan L McIntyre</a>, with contributions from a passionate community. The project is growing fast and is supported by backers from all over the world.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Want to contribute? Head to <a href="https://github.com/ryanoasis/nerd-fonts">github.com/ryanoasis/nerd-fonts</a> and check out how you can help!</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f468-200d-1f4bb.png" alt="👨‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">If you value clarity, efficiency, and a bit of flair in your development environment, you owe it to yourself to try Nerd Fonts. It’s one of those small changes that has a huge impact, both visually and practically.</p>
<p>The post <a href="https://hamradio.my/2025/07/unlock-your-terminals-true-potential-with-nerd-fonts/">Unlock Your Terminal’s True Potential with Nerd Fonts</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/unlock-your-terminals-true-potential-with-nerd-fonts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>code-server: Unlocking the Power of VS Code in Your Browser</title>
		<link>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/</link>
					<comments>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Wed, 02 Jul 2025 17:13:08 +0000</pubDate>
				<category><![CDATA[containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Caddy]]></category>
		<category><![CDATA[cloudcomputing]]></category>
		<category><![CDATA[clouddevelopment]]></category>
		<category><![CDATA[cloudserver]]></category>
		<category><![CDATA[code-server]]></category>
		<category><![CDATA[coders]]></category>
		<category><![CDATA[coderslife]]></category>
		<category><![CDATA[developerproductivity]]></category>
		<category><![CDATA[developerworkflow]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercontainer]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[LetsEncrypt]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[remoteaccess]]></category>
		<category><![CDATA[remoteIDE]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[selfhosted]]></category>
		<category><![CDATA[softwaredevelopment]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[techsavvy]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[vscode]]></category>
		<category><![CDATA[webdevelopment]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7579</guid>

					<description><![CDATA[<p>In the modern development landscape, flexibility and accessibility are paramount. code-server offers a solution that brings the renowned Visual Studio Code (VS Code) experience directly to your browser, enabling developers to code from anywhere, on any device, without compromising on functionality. 🚀 What Is code-server? code-server is an open-source project developed by Coder that allows [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/">code-server: Unlocking the Power of VS Code in Your Browser</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the modern development landscape, flexibility and accessibility are paramount. <strong>code-server</strong> offers a solution that brings the renowned Visual Studio Code (VS Code) experience directly to your browser, enabling developers to code from anywhere, on any device, without compromising on functionality.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is code-server?</h2>



<p class="wp-block-paragraph"><strong>code-server</strong> is an open-source project developed by Coder that allows you to run VS Code on a remote server and access it through a web browser. This setup provides a consistent development environment that can be accessed from any device, be it a laptop, tablet, or even a smartphone. By leveraging the power of cloud servers, code-server enables faster tests, compilations, and downloads, all while preserving your local device&#8217;s resources.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Key Features of code-server</h2>



<ul class="wp-block-list">
<li><strong>VS Code in the Browser</strong>: Experience the full functionality of VS Code, including IntelliSense, debugging, and Git integration, all within your browser.</li>



<li><strong>Remote Development</strong>: Develop on powerful cloud servers, reducing the load on your local machine and enabling resource-intensive tasks.</li>



<li><strong>Consistent Environment</strong>: Maintain a uniform development setup across different devices, ensuring consistency and reducing the &#8220;it works on my machine&#8221; problem.</li>



<li><strong>Extension Support</strong>: Install and use most VS Code extensions, enhancing your development workflow.</li>



<li><strong>Secure Access</strong>: Access your development environment securely from anywhere, with options for HTTPS and authentication.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Installation Guide</h2>



<p class="wp-block-paragraph">Setting up code-server is straightforward. The easiest way to install code-server is to use the official install script, which automates most of the process. This script attempts to use the system package manager if possible.</p>



<h3 class="wp-block-heading">For Linux, macOS, and FreeBSD:</h3>



<p class="wp-block-paragraph">Run the following command in your terminal:</p>



<pre class="wp-block-code"><code>curl -fsSL https://code-server.dev/install.sh | sh
</code></pre>



<p class="wp-block-paragraph">After installation, you can start code-server by running:</p>



<pre class="wp-block-code"><code>code-server
</code></pre>



<p class="wp-block-paragraph">By default, code-server will be accessible at <code>http://127.0.0.1:8080</code>, and your password will be stored in <code>~/.config/code-server/config.yaml</code>.</p>



<h3 class="wp-block-heading">For Docker Users:</h3>



<p class="wp-block-paragraph">You can also run code-server in a Docker container:</p>



<pre class="wp-block-code"><code>docker run -it --name code-server -p 127.0.0.1:8080:8080 \
  -v "$HOME/.local:/home/coder/.local" \
  -v "$HOME/.config:/home/coder/.config" \
  -v "$PWD:/home/coder/project" \
  -u "$(id -u):$(id -g)" \
  -e "DOCKER_USER=$USER" \
  codercom/code-server:latest
</code></pre>



<p class="wp-block-paragraph">This command mounts your current directory into the container and forwards your UID/GID so that all file system operations occur as your user outside the container.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Securing Your code-server Instance</h2>



<p class="wp-block-paragraph">To expose code-server securely to the internet, consider the following methods:</p>



<ul class="wp-block-list">
<li><strong>Port Forwarding via SSH</strong>: If you have an SSH server on your remote machine, you can forward local ports to access code-server securely.</li>



<li><strong>Using Let&#8217;s Encrypt with Caddy or NGINX</strong>: For a more robust solution, you can set up HTTPS using Let&#8217;s Encrypt with web servers like Caddy or NGINX.</li>



<li><strong>Self-Signed Certificates</strong>: For internal use or testing, you can generate and use self-signed certificates to enable HTTPS.</li>
</ul>



<p class="wp-block-paragraph">These methods ensure that your code-server instance is accessible securely from anywhere.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Keeping code-server Up-to-Date</h2>



<p class="wp-block-paragraph">To ensure you have the latest features and security patches, it&#8217;s important to keep code-server updated. You can check for the latest releases on the <a href="https://github.com/coder/code-server/releases">GitHub Releases Page</a>. To update, simply run the install script again:</p>



<pre class="wp-block-code"><code>curl -fsSL https://code-server.dev/install.sh | sh
</code></pre>



<p class="wp-block-paragraph">This will download and install the latest version of code-server.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">code-server empowers developers by providing a powerful, browser-based development environment that can be accessed from anywhere. Whether you&#8217;re working from a laptop, tablet, or smartphone, code-server ensures that you have a consistent and secure development setup at your fingertips.</p>



<p class="wp-block-paragraph">By leveraging cloud servers, code-server enables faster development cycles and reduces the load on local machines, making it an ideal solution for modern development workflows.</p>
<p>The post <a href="https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/">code-server: Unlocking the Power of VS Code in Your Browser</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installing TrustedQSL (TQSL) on Arch Linux Using AUR</title>
		<link>https://hamradio.my/2025/07/installing-trustedqsl-tqsl-on-arch-linux-using-aur/</link>
					<comments>https://hamradio.my/2025/07/installing-trustedqsl-tqsl-on-arch-linux-using-aur/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Wed, 02 Jul 2025 08:49:15 +0000</pubDate>
				<category><![CDATA[amateurradio]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[logbook of the world]]></category>
		<category><![CDATA[lotw]]></category>
		<category><![CDATA[QSL cards]]></category>
		<category><![CDATA[radio amatur]]></category>
		<category><![CDATA[AmateurRadio]]></category>
		<category><![CDATA[ARRL]]></category>
		<category><![CDATA[aur]]></category>
		<category><![CDATA[cqrlog]]></category>
		<category><![CDATA[digitalQSL]]></category>
		<category><![CDATA[dxcc]]></category>
		<category><![CDATA[dxing]]></category>
		<category><![CDATA[ft8]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[hamRadioLogging]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[logbookoftheworld]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[qrp]]></category>
		<category><![CDATA[QSLCard]]></category>
		<category><![CDATA[qsoconfirmation]]></category>
		<category><![CDATA[RadioAmateur]]></category>
		<category><![CDATA[tqsl]]></category>
		<category><![CDATA[trustedqsl]]></category>
		<category><![CDATA[WAS]]></category>
		<category><![CDATA[WSJTX]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8178</guid>

					<description><![CDATA[<p>In the analog days of amateur radio, confirming a QSO (contact) often meant waiting weeks — or even months — for a paper QSL card to arrive via postal mail. These cards, beautifully designed and personally meaningful, were — and still are — treasured by hams around the world. But with the rise of digital [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/installing-trustedqsl-tqsl-on-arch-linux-using-aur/">Installing TrustedQSL (TQSL) on Arch Linux Using AUR</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">In the analog days of amateur radio, confirming a QSO (contact) often meant waiting weeks — or even months — for a paper QSL card to arrive via postal mail. These cards, beautifully designed and personally meaningful, were — and still are — treasured by hams around the world. But with the rise of digital logging, there came a need for something faster, more secure, and scalable for the modern era.</p>



<p class="wp-block-paragraph">Enter <strong>Logbook of The World (LoTW)</strong>, a game-changing system developed by the <strong>ARRL (American Radio Relay League)</strong>. LoTW enables licensed amateur radio operators to submit and match QSO records <strong>electronically</strong>, eliminating the need for physical QSL cards while still offering a <strong>trusted confirmation process</strong>.</p>



<p class="wp-block-paragraph">At the heart of this system is <strong>TrustedQSL (TQSL)</strong> — the official software used to digitally sign and upload your contacts to LoTW. It ensures that:</p>



<ul class="wp-block-list">
<li>Your <strong>identity and callsign are verified</strong> via a certificate issued by ARRL.</li>



<li>Your log files (usually in ADIF format) are <strong>cryptographically signed</strong>, proving their authenticity.</li>



<li>Confirmations happen <strong>automatically</strong> when your logged QSOs match with others in the system.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How This Changed QSO Confirmations Forever</h2>



<p class="wp-block-paragraph">Before LoTW, confirming a DXCC or WAS award required collecting and organizing piles of paper cards, often at considerable cost and effort. Now, with LoTW:</p>



<ul class="wp-block-list">
<li>Confirmations can happen within <strong>minutes</strong>, not months.</li>



<li>There’s <strong>no postage</strong> or mailing involved.</li>



<li>It&#8217;s <strong>globally accessible</strong>, 24/7.</li>



<li>It reduces errors, fraud, and loss compared to traditional QSL methods.</li>



<li>Operators can easily track award progress with automated tools.</li>
</ul>



<p class="wp-block-paragraph">While paper QSLs still have sentimental and collectible value, <strong>LoTW has become the de facto standard for official QSO confirmation</strong> in contests, awards (like <strong>DXCC</strong>, <strong>WAS</strong>, and <strong>VUCC</strong>), and everyday operating.</p>



<p class="wp-block-paragraph">In short, <strong>LoTW and TrustedQSL have brought amateur radio into the digital age,</strong> without compromising trust, authenticity, or the sense of connection that makes this hobby special.</p>



<p class="wp-block-paragraph">For amateur radio operators who log their QSOs digitally, the <strong>ARRL Logbook of the World (LoTW)</strong> is an essential service. To upload your logs securely to LoTW, you need a tool that signs them using a valid certificate, and that’s where <strong>TrustedQSL (TQSL)</strong> comes in.</p>



<p class="wp-block-paragraph">If you’re using <strong>Arch Linux</strong> or an Arch-based distro like <strong>Manjaro</strong>, <strong>EndeavourOS</strong>, or <strong>CachyOS</strong>, you won’t find TrustedQSL in the official repositories, but thanks to the Arch User Repository (AUR), installing it is straightforward.</p>



<p class="wp-block-paragraph">Here’s a step-by-step guide to installing the <strong>latest development version</strong> of TrustedQSL using the <code>trustedqsl-git</code> AUR package.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prerequisites</h2>



<p class="wp-block-paragraph">Before you begin, ensure you have an AUR helper installed. The most common options are:</p>



<ul class="wp-block-list">
<li><code>yay</code></li>



<li><code>paru</code></li>
</ul>



<p class="wp-block-paragraph">If you don’t have one yet, you can install <code>yay</code> with:</p>



<pre class="wp-block-code"><code>sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Installing TrustedQSL from AUR</h2>



<p class="wp-block-paragraph">Now that your AUR helper is ready, you can install TrustedQSL:</p>



<pre class="wp-block-code"><code>paru -S trustedqsl-git
</code></pre>



<p class="wp-block-paragraph">Or with <code>yay</code>:</p>



<pre class="wp-block-code"><code>yay -S trustedqsl-git
</code></pre>



<p class="wp-block-paragraph">This package pulls the <strong>latest source code</strong>, compiles it, and installs it on your system.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Note:</strong> The <code>-git</code> suffix means this package builds the <em>development version</em> of TQSL from source.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Launching TQSL</h2>



<p class="wp-block-paragraph">Once installed, you can launch TrustedQSL from your application menu or by typing:</p>



<pre class="wp-block-code"><code>tqsl
</code></pre>



<p class="wp-block-paragraph">The interface should feel familiar to those coming from Windows or macOS. You can now:</p>



<ul class="wp-block-list">
<li>Request or load your LoTW certificate</li>



<li>Sign ADIF logs (e.g., from <strong>WSJT-X</strong>, <strong>Log4OM</strong>, <strong>CQRLOG</strong>, etc.)</li>



<li>Upload signed logs directly to LoTW</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Use <code>trustedqsl-git</code>?</h2>



<p class="wp-block-paragraph">Using <code>trustedqsl-git</code> has its benefits:</p>



<ul class="wp-block-list">
<li>You’re always running the latest version with the newest features and bug fixes.</li>



<li>Great for testing upcoming features or contributing feedback upstream.</li>



<li>Works well for those comfortable with the rolling-release nature of Arch.</li>
</ul>



<p class="wp-block-paragraph">However, keep in mind that development versions can occasionally introduce instability. If you prefer only stable releases, consider building from <a href="https://www.arrl.org/tqsl-download">ARRL&#8217;s release tarballs</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Updating TQSL</h2>



<p class="wp-block-paragraph">Like any AUR package, updates <code>trustedqsl-git</code> won’t come via <code>pacman -Syu</code>. Instead, update it with your AUR helper:</p>



<pre class="wp-block-code"><code>paru -Syu
</code></pre>



<p class="wp-block-paragraph">Or specifically:</p>



<pre class="wp-block-code"><code>paru -S trustedqsl-git
</code></pre>



<p class="wp-block-paragraph">This will rebuild TQSL from the latest commit.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ec.png" alt="📬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">TrustedQSL is a crucial tool in the modern ham operator&#8217;s digital workflow, and it works beautifully on Arch-based systems with just a bit of help from the AUR. Whether you&#8217;re uploading FT8 contacts from WSJT-X or submitting your latest DXpedition logs, TQSL keeps your LoTW submissions valid and secure.</p>
<p>The post <a href="https://hamradio.my/2025/07/installing-trustedqsl-tqsl-on-arch-linux-using-aur/">Installing TrustedQSL (TQSL) on Arch Linux Using AUR</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/installing-trustedqsl-tqsl-on-arch-linux-using-aur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Mount Google Drive using rclone on Linux</title>
		<link>https://hamradio.my/2025/06/how-to-mount-google-drive-using-rclone-on-linux/</link>
					<comments>https://hamradio.my/2025/06/how-to-mount-google-drive-using-rclone-on-linux/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Mon, 30 Jun 2025 13:56:07 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[cloudcomputing]]></category>
		<category><![CDATA[CloudIntegration]]></category>
		<category><![CDATA[CloudMount]]></category>
		<category><![CDATA[CloudSolutions]]></category>
		<category><![CDATA[CloudStorage]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[DataBackup]]></category>
		<category><![CDATA[DataSync]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[FileManagement]]></category>
		<category><![CDATA[FileSync]]></category>
		<category><![CDATA[FileTransfer]]></category>
		<category><![CDATA[FUSE]]></category>
		<category><![CDATA[GoogleDrive]]></category>
		<category><![CDATA[linuxadmin]]></category>
		<category><![CDATA[linuxtips]]></category>
		<category><![CDATA[MountPoint]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[rclone]]></category>
		<category><![CDATA[remoteaccess]]></category>
		<category><![CDATA[RemoteStorage]]></category>
		<category><![CDATA[servermanagement]]></category>
		<category><![CDATA[systemadmin]]></category>
		<category><![CDATA[techtutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8107</guid>

					<description><![CDATA[<p>Mounting your Google Drive on Linux allows you to access your cloud storage as if it were a local directory. This guide will walk you through the complete process of setting up and mounting Google Drive using rclone, a powerful command-line tool for cloud storage management. Prerequisites Before starting, ensure you have: Step 1: Install [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/how-to-mount-google-drive-using-rclone-on-linux/">How to Mount Google Drive using rclone on Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">Mounting your Google Drive on Linux allows you to access your cloud storage as if it were a local directory. This guide will walk you through the complete process of setting up and mounting Google Drive using rclone, a powerful command-line tool for cloud storage management.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p class="wp-block-paragraph">Before starting, ensure you have:</p>



<ul class="wp-block-list">
<li>A Linux system with root or sudo access</li>



<li>An active Google account with Google Drive</li>



<li>Internet connection for authentication and file access</li>



<li>Basic familiarity with the command line</li>
</ul>



<h2 class="wp-block-heading">Step 1: Install rclone</h2>



<h3 class="wp-block-heading">Ubuntu/Debian</h3>



<pre class="wp-block-code"><code>sudo apt update
sudo apt install rclone
</code></pre>



<h3 class="wp-block-heading">CentOS/RHEL/Fedora</h3>



<pre class="wp-block-code"><code># For CentOS/RHEL
sudo yum install rclone

# For Fedora
sudo dnf install rclone
</code></pre>



<h3 class="wp-block-heading">Arch Linux</h3>



<pre class="wp-block-code"><code>sudo pacman -S rclone
</code></pre>



<h3 class="wp-block-heading">Install from Official Script</h3>



<pre class="wp-block-code"><code>curl https://rclone.org/install.sh | sudo bash
</code></pre>



<p class="wp-block-paragraph">Verify the installation:</p>



<pre class="wp-block-code"><code>rclone version
</code></pre>



<h2 class="wp-block-heading">Step 2: Install FUSE</h2>



<p class="wp-block-paragraph">To mount filesystems, rclone requires FUSE (Filesystem in Userspace):</p>



<h3 class="wp-block-heading">Ubuntu/Debian</h3>



<pre class="wp-block-code"><code>sudo apt install fuse
</code></pre>



<h3 class="wp-block-heading">CentOS/RHEL/Fedora</h3>



<pre class="wp-block-code"><code># For CentOS/RHEL
sudo yum install fuse

# For Fedora
sudo dnf install fuse
</code></pre>



<h3 class="wp-block-heading">Arch Linux</h3>



<pre class="wp-block-code"><code>sudo pacman -S fuse2
</code></pre>



<h2 class="wp-block-heading">Step 3: Configure Google Drive Remote</h2>



<p class="wp-block-paragraph">Start the rclone configuration process:</p>



<pre class="wp-block-code"><code>rclone config
</code></pre>



<p class="wp-block-paragraph">Follow these steps in the interactive setup:</p>



<ol class="wp-block-list">
<li><strong>Create a new remote:</strong> <code>n) New remote</code></li>



<li><strong>Name your remote:</strong> <code>name&gt; gdrive</code> (You can use any name you prefer)</li>



<li><strong>Select Google Drive:</strong> <code>Storage&gt; drive</code></li>



<li><strong>Leave client ID and secret blank</strong> (unless you have your own): <code>client_id&gt; [Press Enter] client_secret&gt; [Press Enter]</code></li>



<li><strong>Choose scope</strong> (recommended: option 1 for full access): <code>scope&gt; 1</code> This gives full access to all files except the Application Data Folder.</li>



<li><strong>Service Account file</strong> (leave blank for personal use): <code>service_account_file&gt; [Press Enter]</code></li>



<li><strong>Enable web browser authentication:</strong> <code>y) Yes</code></li>



<li><strong>Browser authentication:</strong>
<ul class="wp-block-list">
<li>rclone will open your default browser</li>



<li>Log in to your Google account</li>



<li>Grant permissions to rclone</li>



<li>Copy the verification code back to the terminal</li>
</ul>
</li>



<li><strong>Shared Drive configuration:</strong> <code>n) No</code> (Unless you want to access a specific Shared Drive)</li>



<li><strong>Confirm configuration:</strong> <code>y) Yes this is OK</code></li>
</ol>



<p class="wp-block-paragraph">Read <a href="https://rclone.org/drive/#making-your-own-client-id"><strong>https://rclone.org/drive/#making-your-own-client-id</strong></a></p>



<h2 class="wp-block-heading">Step 4: Test the Configuration</h2>



<p class="wp-block-paragraph">Verify that rclone can access your Google Drive:</p>



<pre class="wp-block-code"><code># List directories in your Google Drive
rclone lsd gdrive:

# List all files
rclone ls gdrive:

# List files with details
rclone lsl gdrive:
</code></pre>



<h2 class="wp-block-heading">Step 5: Create Mount Point</h2>



<p class="wp-block-paragraph">Create a directory where you want to mount Google Drive:</p>



<pre class="wp-block-code"><code>mkdir ~/GoogleDrive
</code></pre>



<h2 class="wp-block-heading">Step 6: Mount Google Drive</h2>



<h3 class="wp-block-heading">Basic Mount Command</h3>



<pre class="wp-block-code"><code>rclone mount gdrive: ~/GoogleDrive --daemon
</code></pre>



<h3 class="wp-block-heading">Recommended Mount Command with Options</h3>



<pre class="wp-block-code"><code>rclone mount gdrive: ~/GoogleDrive \
  --vfs-cache-mode writes \
  --vfs-cache-max-age 100h \
  --vfs-cache-max-size 10G \
  --vfs-read-chunk-size 32M \
  --vfs-read-chunk-size-limit off \
  --buffer-size 32M \
  --daemon
</code></pre>



<h3 class="wp-block-heading">Mount Options Explained</h3>



<ul class="wp-block-list">
<li><code>--vfs-cache-mode writes</code>: Cache file writes to improve performance</li>



<li><code>--vfs-cache-max-age 100h</code>: Keep cached files for 100 hours</li>



<li><code>--vfs-cache-max-size 10G</code>: Limit cache size to 10GB</li>



<li><code>--vfs-read-chunk-size 32M</code>: Read files in 32MB chunks</li>



<li><code>--buffer-size 32M</code>: Set buffer size for better performance</li>



<li><code>--daemon</code>: Run in background</li>
</ul>



<h3 class="wp-block-heading">Alternative: Mount with GUI Support</h3>



<p class="wp-block-paragraph">If you&#8217;re using a desktop environment and want the mount to appear in file managers:</p>



<pre class="wp-block-code"><code>rclone mount gdrive: ~/GoogleDrive \
  --vfs-cache-mode writes \
  --allow-other \
  --daemon
</code></pre>



<h2 class="wp-block-heading">Step 7: Verify the Mount</h2>



<p class="wp-block-paragraph">Check if the mount is successful:</p>



<pre class="wp-block-code"><code># List mounted filesystems
df -h | grep GoogleDrive

# Check if files are accessible
ls -la ~/GoogleDrive
</code></pre>



<h2 class="wp-block-heading">Step 8: Unmount Google Drive</h2>



<p class="wp-block-paragraph">To unmount the drive:</p>



<pre class="wp-block-code"><code># Method 1: Using fusermount
fusermount -u ~/GoogleDrive

# Method 2: Using umount
sudo umount ~/GoogleDrive

# Method 3: Kill rclone process
killall rclone
</code></pre>



<h2 class="wp-block-heading">Step 9: Auto-Mount on Boot (Optional)</h2>



<h3 class="wp-block-heading">Using systemd Service</h3>



<p class="wp-block-paragraph">Create a systemd service file:</p>



<pre class="wp-block-code"><code>sudo nano /etc/systemd/system/rclone-gdrive.service
</code></pre>



<p class="wp-block-paragraph">Add the following content (replace <code>username</code> with your actual username):</p>



<pre class="wp-block-code"><code>&#91;Unit]
Description=rclone: Remote FUSE filesystem for Google Drive
After=network-online.target
Wants=network-online.target

&#91;Service]
Type=notify
User=username
Group=username
ExecStart=/usr/bin/rclone mount gdrive: /home/username/GoogleDrive \
  --config=/home/username/.config/rclone/rclone.conf \
  --vfs-cache-mode writes \
  --vfs-cache-max-age 100h \
  --vfs-cache-max-size 10G \
  --vfs-read-chunk-size 32M \
  --buffer-size 32M \
  --allow-other
ExecStop=/bin/fusermount -u /home/username/GoogleDrive
Restart=always
RestartSec=10

&#91;Install]
WantedBy=default.target
</code></pre>



<p class="wp-block-paragraph">Enable and start the service:</p>



<pre class="wp-block-code"><code>sudo systemctl daemon-reload
sudo systemctl enable rclone-gdrive.service
sudo systemctl start rclone-gdrive.service
</code></pre>



<p class="wp-block-paragraph">Check service status:</p>



<pre class="wp-block-code"><code>sudo systemctl status rclone-gdrive.service
</code></pre>



<h3 class="wp-block-heading">Using /etc/fstab</h3>



<p class="wp-block-paragraph">Add the following line to <code>/etc/fstab</code>:</p>



<pre class="wp-block-code"><code>sudo nano /etc/fstab
</code></pre>



<p class="wp-block-paragraph">Add this line (replace <code>username</code> with your actual username):</p>



<pre class="wp-block-code"><code>gdrive: /home/username/GoogleDrive rclone rw,noauto,nofail,_netdev,user,exec,allow_other 0 0
</code></pre>



<h2 class="wp-block-heading">Performance Tips</h2>



<h3 class="wp-block-heading">Optimize for Your Use Case</h3>



<p class="wp-block-paragraph"><strong>For frequent small file access:</strong></p>



<pre class="wp-block-code"><code>rclone mount gdrive: ~/GoogleDrive \
  --vfs-cache-mode full \
  --vfs-cache-max-size 10G \
  --vfs-read-ahead 256M \
  --daemon
</code></pre>



<p class="wp-block-paragraph"><strong>For streaming large files:</strong></p>



<pre class="wp-block-code"><code>rclone mount gdrive: ~/GoogleDrive \
  --vfs-cache-mode off \
  --vfs-read-chunk-size 128M \
  --vfs-read-chunk-size-limit 2G \
  --buffer-size 64M \
  --daemon
</code></pre>



<h2 class="wp-block-heading">Troubleshooting</h2>



<h3 class="wp-block-heading">Common Issues and Solutions</h3>



<p class="wp-block-paragraph"><strong>Issue: Permission denied</strong></p>



<pre class="wp-block-code"><code># Add your user to the fuse group
sudo usermod -a -G fuse $USER
# Log out and log back in
</code></pre>



<p class="wp-block-paragraph"><strong>Issue: Mount point is busy</strong></p>



<pre class="wp-block-code"><code># Force unmount
sudo umount -l ~/GoogleDrive
</code></pre>



<p class="wp-block-paragraph"><strong>Issue: Slow performance</strong></p>



<pre class="wp-block-code"><code># Increase cache settings
rclone mount gdrive: ~/GoogleDrive \
  --vfs-cache-mode full \
  --vfs-cache-max-size 20G \
  --daemon
</code></pre>



<p class="wp-block-paragraph"><strong>Issue: Files not showing immediately</strong></p>



<pre class="wp-block-code"><code># Add directory cache timeout
rclone mount gdrive: ~/GoogleDrive \
  --dir-cache-time 1000h \
  --daemon
</code></pre>



<h3 class="wp-block-heading">Check rclone Logs</h3>



<pre class="wp-block-code"><code># View logs
rclone mount gdrive: ~/GoogleDrive --log-level INFO --log-file ~/rclone.log

# Or run in foreground for debugging
rclone mount gdrive: ~/GoogleDrive -v
</code></pre>



<h2 class="wp-block-heading">Security Considerations</h2>



<ol class="wp-block-list">
<li><strong>Token Security</strong>: Your authentication tokens are stored in <code>~/.config/rclone/rclone.conf</code>. Protect this file with appropriate permissions: <code>chmod 600 ~/.config/rclone/rclone.conf</code></li>



<li><strong>Network Security</strong>: All communication with Google Drive is encrypted via HTTPS.</li>



<li><strong>Local Access</strong>: Use <code>--allow-other</code> carefully as it allows other users to access the mount.</li>
</ol>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">You now have Google Drive mounted on your Linux system! The mounted directory behaves like any other local directory, allowing you to:</p>



<ul class="wp-block-list">
<li>Copy files to and from Google Drive using standard commands</li>



<li>Edit files directly in your preferred applications</li>



<li>Access Google Drive through your file manager</li>



<li>Use command-line tools on your cloud files</li>
</ul>



<p class="wp-block-paragraph">Remember that changes to files are synchronized with Google Drive, so always ensure you have a stable internet connection when working with important files.</p>



<p class="wp-block-paragraph">For advanced usage and additional options, refer to the <a href="https://rclone.org/drive/"><strong>official rclone documentation</strong></a>.</p>
<p>The post <a href="https://hamradio.my/2025/06/how-to-mount-google-drive-using-rclone-on-linux/">How to Mount Google Drive using rclone on Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/how-to-mount-google-drive-using-rclone-on-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dockge: The Ultimate Docker Compose Manager for Modern Self-Hosters</title>
		<link>https://hamradio.my/2025/06/dockge-the-ultimate-docker-compose-manager-for-modern-self-hosters/</link>
					<comments>https://hamradio.my/2025/06/dockge-the-ultimate-docker-compose-manager-for-modern-self-hosters/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 29 Jun 2025 16:54:39 +0000</pubDate>
				<category><![CDATA[containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[composemanager]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercompose]]></category>
		<category><![CDATA[dockertools]]></category>
		<category><![CDATA[dockerui]]></category>
		<category><![CDATA[dockge]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[selfhosted]]></category>
		<category><![CDATA[selfhostedapps]]></category>
		<category><![CDATA[selfhosting]]></category>
		<category><![CDATA[servermanagement]]></category>
		<category><![CDATA[softwaretools]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[techstack]]></category>
		<category><![CDATA[webui]]></category>
		<category><![CDATA[yaml]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7570</guid>

					<description><![CDATA[<p>In the evolving world of containerized infrastructure, managing Docker Compose projects can be either a seamless dream or an administrative nightmare. For those who want power, clarity, and elegance in managing their Docker Compose stacks—without relying on bloated dashboards—meet Dockge. Developed by Louis Lam, the creator of Uptime Kuma, Dockge is a sleek, self-hosted solution [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/dockge-the-ultimate-docker-compose-manager-for-modern-self-hosters/">Dockge: The Ultimate Docker Compose Manager for Modern Self-Hosters</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the evolving world of containerized infrastructure, managing Docker Compose projects can be either a seamless dream or an administrative nightmare. For those who want power, clarity, and elegance in managing their Docker Compose stacks—<strong>without relying on bloated dashboards</strong>—meet <strong>Dockge</strong>.</p>



<p class="wp-block-paragraph">Developed by <strong>Louis Lam</strong>, the creator of Uptime Kuma, Dockge is a sleek, self-hosted solution for managing your <code>docker-compose.yaml</code> files in a user-friendly, modern web UI—directly from your own infrastructure.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6a2.png" alt="🚢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is Dockge?</h2>



<p class="wp-block-paragraph">Dockge is a <strong>Docker Compose manager</strong> that acts as a control center for all your containerized applications. Unlike heavyweight orchestration platforms like Portainer or Rancher, Dockge <strong>doesn’t abstract away your Compose files</strong>—instead, it embraces them.</p>



<p class="wp-block-paragraph">It runs in your browser, provides a beautiful and responsive interface, and gives you full control over managing, editing, and deploying Docker Compose stacks.</p>



<p class="wp-block-paragraph">If you’ve been manually juggling <code>docker-compose up</code>, <code>down</code>, <code>logs</code>, and <code>pull</code> across multiple folders and terminals, Dockge will feel like a leap into the future.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Core Features That Make Dockge Shine</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> File-Centric Management</h3>



<p class="wp-block-paragraph">Dockge doesn’t lock you into a database or an internal config. Your <code>compose.yaml</code> files live on disk, exactly where you put them. Want to edit them outside Dockge? Go ahead. Dockge simply reflects and operates on your actual file structure.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Clean, Reactive UI</h3>



<p class="wp-block-paragraph">Built with modern web technologies (likely Vue/React), Dockge’s interface is snappy and beautiful. Navigating your projects, spinning containers up and down, and checking logs feels almost instantaneous.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/270d.png" alt="✍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Built-in YAML Editor</h3>



<p class="wp-block-paragraph">No need to SSH in or fumble through nano. Dockge provides an in-browser YAML editor with syntax highlighting, so you can tweak your Compose files in real-time, from any device.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Manage Container Lifecycle</h3>



<p class="wp-block-paragraph">With just a few clicks, you can:</p>



<ul class="wp-block-list">
<li>Start or stop containers</li>



<li>Restart entire stacks</li>



<li>Pull new images</li>



<li>View live logs</li>



<li>See environment variables</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Multiple Project Support</h3>



<p class="wp-block-paragraph">Dockge supports multiple projects, each represented as a folder containing a Compose file. Think of it as a workspace manager—ideal for homelabbers running various self-hosted services like Home Assistant, Nextcloud, Pi-hole, Jellyfin, etc.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Web Terminal</h3>



<p class="wp-block-paragraph">Need to run a one-off command inside a container? The integrated web terminal gives you shell access right in the browser, without needing to <code>docker exec</code> manually.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Convert Docker Run to Compose</h3>



<p class="wp-block-paragraph">This underrated feature lets you paste a <code>docker run</code> command and convert it into a <code>docker-compose.yaml</code> file. It’s a brilliant way to transition your one-off containers to managed stacks.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Who Is Dockge For?</h2>



<p class="wp-block-paragraph">Dockge is tailor-made for:</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d1-200d-1f4bb.png" alt="🧑‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Developers</strong> who want more control over containerized environments.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e0.png" alt="🏠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Self-hosting enthusiasts</strong> looking for clean, no-nonsense management of their homelab apps.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Tech-savvy hobbyists</strong> who don’t want to learn Kubernetes or manage overkill dashboards.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Minimalists</strong> who believe that good tools should be powerful <em>and</em> elegant.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Getting Started with Dockge</h2>



<p class="wp-block-paragraph">Setting up Dockge is incredibly simple—if you already use Docker Compose, you’re halfway there. Here’s a high-level overview:</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 1. Clone the Repository</h3>



<pre class="wp-block-code"><code>git clone https://github.com/louislam/dockge /opt/dockge
</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2. Move Into the Directory</h3>



<pre class="wp-block-code"><code>cd /opt/dockge
</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3d7.png" alt="🏗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3. Start the Service</h3>



<pre class="wp-block-code"><code>docker compose up -d
</code></pre>



<p class="wp-block-paragraph">By default, Dockge runs a web server where you can start managing your Compose projects immediately. It reads your existing file structure, meaning there’s <strong>no database</strong> to configure and <strong>no vendor lock-in</strong>.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 4. Optional: Add Auth and SSL</h3>



<p class="wp-block-paragraph">You can easily integrate it behind a reverse proxy with basic auth or OAuth (via Nginx, Traefik, etc.) to keep your setup secure.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Community &amp; Support</h2>



<p class="wp-block-paragraph">Dockge is a growing open-source project with an active and supportive community. Here’s how to get involved:</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5e3.png" alt="🗣" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Join <a href="https://github.com/louislam/dockge/discussions">GitHub Discussions</a></li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f41e.png" alt="🐞" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Report bugs and suggest features via <a href="https://github.com/louislam/dockge/issues">GitHub Issues</a></li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f91d.png" alt="🤝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Contribute code or docs to help the project grow</li>
</ul>



<p class="wp-block-paragraph">Louis Lam has a reputation for responsiveness and quality (just look at Uptime Kuma’s success), so Dockge is in good hands.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dockge vs Alternatives</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Feature</th><th>Dockge</th><th>Portainer</th><th>Yacht</th></tr></thead><tbody><tr><td>Compose-first design</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Yes</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No (UI-driven)</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Yes</td></tr><tr><td>File-based</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Yes</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Yes</td></tr><tr><td>Lightweight UI</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Blazing fast</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Heavy</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Moderate</td></tr><tr><td>Conversion Tools</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> docker run → compose</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No</td></tr><tr><td>Terminal Access</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Built-in</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No</td></tr><tr><td>Multi-project</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Excellent</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts: Should You Use Dockge?</h2>



<p class="wp-block-paragraph"><strong>Absolutely—especially if you value clean interfaces and control.</strong></p>



<p class="wp-block-paragraph">Dockge bridges the gap between command-line flexibility and modern user interfaces. It’s the perfect tool for self-hosters and developers who want a <strong>non-intrusive</strong>, <strong>elegant</strong>, and <strong>functional</strong> way to manage Docker Compose environments.</p>



<p class="wp-block-paragraph">Whether you&#8217;re managing a fleet of Raspberry Pis, running a mini data center at home, or just hosting your personal blog and media server, Dockge will make your life easier.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Explore More</h2>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GitHub: <a href="https://github.com/louislam/dockge">https://github.com/louislam/dockge</a></p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Try it, star it, and join the conversation. Your containers will thank you.</p>
<p>The post <a href="https://hamradio.my/2025/06/dockge-the-ultimate-docker-compose-manager-for-modern-self-hosters/">Dockge: The Ultimate Docker Compose Manager for Modern Self-Hosters</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/dockge-the-ultimate-docker-compose-manager-for-modern-self-hosters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Running Armbian on the Xiegu X6100</title>
		<link>https://hamradio.my/2025/06/running-armbian-on-the-xiegu-x6100/</link>
					<comments>https://hamradio.my/2025/06/running-armbian-on-the-xiegu-x6100/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 29 Jun 2025 11:03:01 +0000</pubDate>
				<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[radio amatur]]></category>
		<category><![CDATA[xiegu]]></category>
		<category><![CDATA[arm cortex-a7]]></category>
		<category><![CDATA[armbian]]></category>
		<category><![CDATA[cortex-a7]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian arm]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[GNUradio]]></category>
		<category><![CDATA[godam radio]]></category>
		<category><![CDATA[hack radio]]></category>
		<category><![CDATA[ham malaysia]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[HF radio]]></category>
		<category><![CDATA[komputer mini]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux atas radio]]></category>
		<category><![CDATA[linux mudah alih]]></category>
		<category><![CDATA[linux terbenam]]></category>
		<category><![CDATA[mod digital]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[operasi lapangan]]></category>
		<category><![CDATA[radio hacking]]></category>
		<category><![CDATA[radio kendalian jauh]]></category>
		<category><![CDATA[sbc]]></category>
		<category><![CDATA[sdr]]></category>
		<category><![CDATA[sumber terbuka]]></category>
		<category><![CDATA[transceiver hf]]></category>
		<category><![CDATA[xiegu x6100]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8080</guid>

					<description><![CDATA[<p>If you&#8217;re into amateur radio and love tinkering with Linux, you&#8217;ve probably heard of the Xiegu X6100—a portable HF transceiver that combines solid performance with an open, hackable platform. But what if you could take it further and run a full Armbian Linux system directly on it? Thanks to the work by Links2004, it&#8217;s now [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/running-armbian-on-the-xiegu-x6100/">Running Armbian on the Xiegu X6100</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you&#8217;re into amateur radio and love tinkering with Linux, you&#8217;ve probably heard of the Xiegu X6100—a portable HF transceiver that combines solid performance with an open, hackable platform. But what if you could take it further and run a full <a href="https://www.armbian.com/">Armbian</a> Linux system <em>directly</em> on it?</p>



<p class="wp-block-paragraph">Thanks to the work by <a href="https://github.com/Links2004">Links2004</a>, it&#8217;s now possible.</p>



<h2 class="wp-block-heading">Why Run Armbian on the X6100?</h2>



<p class="wp-block-paragraph">The X6100 runs on a <a href="https://developer.arm.com/Processors/Cortex-A7#:~:text=The%20Cortex%2DA7%20processor%20builds,of%20the%20Cortex%2DA5%20processor.&amp;text=Increased%20TLB%20size%20to%20256,Runs%20at%201.2%2D1.6GHz">Quad-Core Cortex-A7 SoC</a>, originally intended for embedded systems and Android. Xiegu ships it with a custom Linux build, but it&#8217;s minimal, locked down, and missing common developer tools. For power users and developers, this is limiting.</p>



<p class="wp-block-paragraph">By installing Armbian—a Debian-based lightweight Linux distro optimized for ARM devices—you can:</p>



<ul class="wp-block-list">
<li>Get full access to the system</li>



<li>Use standard packages and development tools</li>



<li>Enable remote access via SSH</li>



<li>Customize the firmware environment</li>
</ul>



<p class="wp-block-paragraph">It essentially transforms your X6100 from just a radio into a mini portable Linux server.</p>



<h2 class="wp-block-heading">What This Project Offers</h2>



<p class="wp-block-paragraph">The <code>x6100-armbian</code> project provides:</p>



<ul class="wp-block-list">
<li>A working Armbian image for the X6100’s internal eMMC or external SD card</li>



<li>A ready-to-use u-boot bootloader configuration</li>



<li>A tailored Linux kernel and device tree for X6100 hardware</li>



<li>Instructions for flashing and booting Armbian</li>



<li>Tools for creating your own image</li>
</ul>



<p class="wp-block-paragraph">The goal is to make your X6100 boot into Armbian like any SBC (think Raspberry Pi, but with a radio attached).</p>



<h2 class="wp-block-heading">What Works (and What Doesn’t Yet)</h2>



<p class="wp-block-paragraph">According to the repo, here’s what works:</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Serial console over USB<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ethernet over USB<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> WiFi<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GPIO, I2C, SPI<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Audio input/output<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LCD panel<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Battery status</p>



<p class="wp-block-paragraph">This makes it possible to use the device for advanced scripting, monitoring, and even remote ham operations via the internet.</p>



<p class="wp-block-paragraph">As with all bleeding-edge projects, some features may still need refinement—so treat this as experimental &lt;&#8211; WARNING.</p>



<h2 class="wp-block-heading">Getting Started</h2>



<p class="wp-block-paragraph">To try this out:</p>



<ol class="wp-block-list">
<li><strong>Clone the Repository</strong><br>Start by cloning the GitHub repo:<br><code>git clone https://github.com/Links2004/x6100-armbian</code></li>



<li><strong>Build or Download an Image</strong><br>You can either build the image from scratch using the Armbian build system, or download a prebuilt one (if available in the repo).</li>



<li><strong>Flash to SD or eMMC</strong><br>Flash the image to an SD card using <code>dd</code>, <a href="https://chatgpt.com/c/w">Etcher</a>, or your favorite tool. Boot it via the SD card first before flashing to internal storage.</li>



<li><strong>Boot and Connect</strong><br>Connect to the serial console via USB or use the onboard Ethernet-over-USB to SSH in. You’ll be greeted with a full Armbian environment.</li>
</ol>



<h2 class="wp-block-heading">Use Cases</h2>



<p class="wp-block-paragraph">So what can you do once you’ve got Armbian running?</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e1.png" alt="📡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Host a digital mode gateway (FT8, JS8Call, APRS)</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Develop custom X6100 tools using Python or C++</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Create a remote-controlled ham station over the web</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f399.png" alt="🎙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Run audio processing, logging software, or cloud sync scripts</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Harden and sandbox the radio for secure field deployment</li>
</ul>



<p class="wp-block-paragraph">The possibilities are only limited by your creativity—and your battery life!</p>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">Running Armbian on the X6100 breathes new life into an already impressive device. It opens up a playground for experimentation, automation, and integration, bridging the gap between the <a href="https://chatgpt.com/c/w">Linux</a> SBC world and amateur radio.</p>



<p class="wp-block-paragraph">Whether you&#8217;re a hacker, a maker, or a serious ham radio operator, this project is well worth a look. Just keep in mind: this is a community-driven effort, not an official Xiegu firmware, so proceed with care—and make backups! No warranty! This is not for normal users.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>Credit:</strong><br>All thanks and credit to <a href="https://github.com/Links2004">Links2004</a> on GitHub for pioneering this project. You can view the full project and contribute at:<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/Links2004/x6100-armbian">https://github.com/Links2004/x6100-armbian</a></p>
<p>The post <a href="https://hamradio.my/2025/06/running-armbian-on-the-xiegu-x6100/">Running Armbian on the Xiegu X6100</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/running-armbian-on-the-xiegu-x6100/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Memorize Most Useful Pacman Commands</title>
		<link>https://hamradio.my/2025/06/memorize-most-useful-pacman-commands/</link>
					<comments>https://hamradio.my/2025/06/memorize-most-useful-pacman-commands/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 28 Jun 2025 14:30:17 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[package management]]></category>
		<category><![CDATA[beginner friendly]]></category>
		<category><![CDATA[cheat sheet]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[linux guide]]></category>
		<category><![CDATA[package manager]]></category>
		<category><![CDATA[pacman]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8055</guid>

					<description><![CDATA[<p>If you&#8217;re running Arch Linux, or anything Arch-based like CachyOS, you already know that pacman is one of the core tools you&#8217;ll use—probably daily. But let’s be real: remembering all those -S, -R, -Q, and -Syu flags gets confusing fast. I used to look them up constantly (even for simple stuff), until I sat down [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/memorize-most-useful-pacman-commands/">Memorize Most Useful Pacman Commands</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you&#8217;re running <a href="https://archlinux.org/">Arch Linux</a>, or anything Arch-based like <a href="https://cachyos.org/">CachyOS</a>, you already know that <code>pacman</code> is one of the core tools you&#8217;ll use—probably daily.</p>



<p class="wp-block-paragraph">But let’s be real: remembering all those <code>-S</code>, <code>-R</code>, <code>-Q</code>, and <code>-Syu</code> flags gets confusing fast. I used to look them up constantly (even for simple stuff), until I sat down and made a simple system to actually remember them.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Basic Concept: Think in Categories</h2>



<p class="wp-block-paragraph">Rather than memorizing every command individually, we grouped them by what we needed to do. Just like you&#8217;d do in real life:</p>



<ul class="wp-block-list">
<li>Install something</li>



<li>Remove something</li>



<li>Search for something</li>



<li>Get information</li>



<li>Clean things up</li>
</ul>



<p class="wp-block-paragraph">Turns out, <code>pacman</code> follows this logic really well.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Install &amp; Update Packages</h2>



<p class="wp-block-paragraph"><strong>Install a package</strong>:</p>



<pre class="wp-block-code"><code>pacman -S &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Remember <code>-S</code> as “Send it to me” (Sync from the repository).</p>



<p class="wp-block-paragraph"><strong>Update everything (the Arch way)</strong>:</p>



<pre class="wp-block-code"><code>pacman -Syu
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Mnemonic: “<strong>S</strong>ync, refresh the repos with <strong>y</strong>, and <strong>u</strong>pdate everything.”</p>



<p class="wp-block-paragraph">You’ll use this more than anything else.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5d1.png" alt="🗑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Remove Packages (Cleanly!)</h2>



<p class="wp-block-paragraph"><strong>Remove a package</strong>:</p>



<pre class="wp-block-code"><code>pacman -R &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph">Just deletes the program—not configs or dependencies.</p>



<p class="wp-block-paragraph"><strong>Full, squeaky-clean removal</strong>:</p>



<pre class="wp-block-code"><code>pacman -Rns &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code>Rns = Remove Neatly &amp; Squeaky</code> — it deletes the package, its unused dependencies, and leftover config files. I use this when I&#8217;m done testing something.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Searching for Packages</h2>



<p class="wp-block-paragraph"><strong>Search available packages (online repo)</strong>:</p>



<pre class="wp-block-code"><code>pacman -Ss &lt;keyword&gt;
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code>Ss</code> = <em>Search Store</em></p>



<p class="wp-block-paragraph"><strong>Search only installed packages</strong>:</p>



<pre class="wp-block-code"><code>pacman -Qs &lt;keyword&gt;
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code>Qs</code> = <em>Query System</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Package Information</h2>



<p class="wp-block-paragraph"><strong>Get info about a package in the repo</strong>:</p>



<pre class="wp-block-code"><code>pacman -Si &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph"><strong>Get info about an installed package</strong>:</p>



<pre class="wp-block-code"><code>pacman -Qi &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph"><strong>List all files a package installed</strong>:</p>



<pre class="wp-block-code"><code>pacman -Ql &lt;package&gt;
</code></pre>



<p class="wp-block-paragraph"><strong>Find out what package owns a file</strong>:</p>



<pre class="wp-block-code"><code>pacman -Qo /path/to/file
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f9.png" alt="🧹" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cleanups &amp; Maintenance</h2>



<p class="wp-block-paragraph">Arch doesn&#8217;t clean up after itself by default, so we run these occasionally:</p>



<p class="wp-block-paragraph"><strong>Remove orphaned packages (leftovers)</strong>:</p>



<pre class="wp-block-code"><code>pacman -Rns $(pacman -Qdtq)
</code></pre>



<p class="wp-block-paragraph"><strong>Clean the package cache (but keep most recent)</strong>:</p>



<pre class="wp-block-code"><code>pacman -Sc
</code></pre>



<p class="wp-block-paragraph"><strong>Clean EVERYTHING in the cache</strong>:</p>



<pre class="wp-block-code"><code>pacman -Scc
</code></pre>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code>Scc</code> = <em>Super clean cache</em> (but be careful—you’ll need to re-download packages later).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bonus: Troubleshooting Tools</h2>



<p class="wp-block-paragraph">These aren’t used often, but they’re lifesavers:</p>



<ul class="wp-block-list">
<li><strong>Check missing files from installed packages</strong>: <code>pacman -Qk</code></li>



<li><strong>Mark a package as explicitly installed</strong>: <code>pacman -D --asexplicit &lt;package></code></li>



<li><strong>Mark it as a dependency instead</strong>: <code>pacman -D --asdeps &lt;package></code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Trick to Memorize Them All</h2>



<ul class="wp-block-list">
<li>We <strong>grouped</strong> all commands by action. Just ask yourself: <em>Am I installing? Searching? Cleaning?</em></li>



<li>Made up <strong>little mnemonics</strong>:
<ul class="wp-block-list">
<li><code>Syu</code> = “Sync Your Universe”</li>



<li><code>Rns</code> = “Remove Neatly &amp; Squeaky”</li>



<li><code>Ss</code> = “Search Store”</li>



<li><code>Qi</code> = “Query Installed”</li>
</ul>
</li>



<li><strong>Typed them often</strong>. Practice helps way more than reading.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Cheat Sheet</h2>



<p class="wp-block-paragraph">Here’s a quick reference:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Action</th><th>Command</th><th>Reminder</th></tr></thead><tbody><tr><td>Install</td><td><code>pacman -S &lt;pkg&gt;</code></td><td>Sync</td></tr><tr><td>Update system</td><td><code>pacman -Syu</code></td><td>Sync Your Updates</td></tr><tr><td>Remove</td><td><code>pacman -R &lt;pkg&gt;</code></td><td>Remove</td></tr><tr><td>Remove clean</td><td><code>pacman -Rns &lt;pkg&gt;</code></td><td>Neat &amp; Squeaky</td></tr><tr><td>Search repo</td><td><code>pacman -Ss &lt;name&gt;</code></td><td>Search Store</td></tr><tr><td>Search installed</td><td><code>pacman -Qs &lt;name&gt;</code></td><td>Query System</td></tr><tr><td>Info (repo)</td><td><code>pacman -Si &lt;pkg&gt;</code></td><td>Show Info</td></tr><tr><td>Info (installed)</td><td><code>pacman -Qi &lt;pkg&gt;</code></td><td>Query Installed</td></tr><tr><td>Files by pkg</td><td><code>pacman -Ql &lt;pkg&gt;</code></td><td>Query List</td></tr><tr><td>Who owns file</td><td><code>pacman -Qo /file</code></td><td>Query Owner</td></tr><tr><td>Remove orphans</td><td><code>pacman -Rns $(pacman -Qdtq)</code></td><td>Clean Deps</td></tr><tr><td>Clean cache</td><td><code>pacman -Sc</code></td><td>Soft Clean</td></tr><tr><td>Clean ALL</td><td><code>pacman -Scc</code></td><td>Super Clean</td></tr></tbody></table></figure>
<p>The post <a href="https://hamradio.my/2025/06/memorize-most-useful-pacman-commands/">Memorize Most Useful Pacman Commands</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/memorize-most-useful-pacman-commands/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Setting Up a Btrfs-Compatible Swap File with Hibernation on CachyOS (or Any Arch-based System)</title>
		<link>https://hamradio.my/2025/06/setting-up-a-btrfs-compatible-swap-file-with-hibernation-on-cachyos-or-any-arch-based-system/</link>
					<comments>https://hamradio.my/2025/06/setting-up-a-btrfs-compatible-swap-file-with-hibernation-on-cachyos-or-any-arch-based-system/#comments</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 28 Jun 2025 11:37:57 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[cachyos]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[hibernation]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[initramfs]]></category>
		<category><![CDATA[linuxkernel]]></category>
		<category><![CDATA[linuxoptimization]]></category>
		<category><![CDATA[linuxperformance]]></category>
		<category><![CDATA[linuxsetup]]></category>
		<category><![CDATA[resume]]></category>
		<category><![CDATA[suspend]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[swapfile]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[uefi]]></category>
		<category><![CDATA[zram]]></category>
		<category><![CDATA[zswap]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8052</guid>

					<description><![CDATA[<p>If you&#8217;re using CachyOS or any Arch-based distribution with Btrfs and want to enable hibernation, this guide will walk you through a clean and correct setup. We&#8217;ll create a dedicated Btrfs subvolume for swap, configure the swap file correctly for compatibility, and set up everything needed for hibernation, including kernel parameters. Why This Matters Btrfs [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/setting-up-a-btrfs-compatible-swap-file-with-hibernation-on-cachyos-or-any-arch-based-system/">Setting Up a Btrfs-Compatible Swap File with Hibernation on CachyOS (or Any Arch-based System)</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you&#8217;re using CachyOS or any Arch-based distribution with Btrfs and want to enable hibernation, this guide will walk you through a clean and correct setup.</p>



<p class="wp-block-paragraph">We&#8217;ll create a dedicated Btrfs subvolume for swap, configure the swap file correctly for compatibility, and set up everything needed for hibernation, including kernel parameters.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Matters</h2>



<p class="wp-block-paragraph">Btrfs is great, but it introduces some complications when using swap files, especially for hibernation. The kernel needs to know the physical disk offset of the swap file, and that file must be non-compressed, non-COW, and stored in its own dedicated subvolume.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. Clean Up Any Existing Broken Setup</h2>



<pre class="wp-block-code"><code>sudo swapoff -a
sudo umount /swap 2&gt;/dev/null || true
sudo btrfs subvolume delete /swap 2&gt;/dev/null || true
sudo rm -rf /swap
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Create a New Swap Subvolume</h2>



<pre class="wp-block-code"><code>sudo mkdir -p /mnt/btrfs-root
sudo mount -o subvolid=5 /dev/disk/by-uuid/&lt;YOUR_ROOT_UUID&gt; /mnt/btrfs-root
sudo btrfs subvolume create /mnt/btrfs-root/swap
sudo umount /mnt/btrfs-root
sudo rmdir /mnt/btrfs-root
</code></pre>



<p class="wp-block-paragraph">Replace <code>&lt;YOUR_ROOT_UUID&gt;</code> with the UUID of your Btrfs root. Find it using:</p>



<pre class="wp-block-code"><code>findmnt -no UUID /
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. Mount the Subvolume via <code>/etc/fstab</code></h2>



<p class="wp-block-paragraph">Add this line to <code>/etc/fstab</code>:</p>



<pre class="wp-block-code"><code>UUID=&lt;YOUR_ROOT_UUID&gt; /swap btrfs subvol=swap,noatime,compress=no,space_cache=v2 0 0
</code></pre>



<p class="wp-block-paragraph">Then:</p>



<pre class="wp-block-code"><code>sudo mkdir /swap
sudo mount -a
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. Create the Swap File</h2>



<pre class="wp-block-code"><code>sudo chattr +C /swap
sudo fallocate -l 16G /swap/swapfile  # adjust size as needed
sudo chmod 600 /swap/swapfile
sudo mkswap /swap/swapfile
sudo swapon /swap/swapfile
</code></pre>



<p class="wp-block-paragraph">Make sure it appears with:</p>



<pre class="wp-block-code"><code>swapon --show
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5. Get the Resume Offset</h2>



<pre class="wp-block-code"><code>sudo btrfs inspect-internal map-swapfile -r /swap/swapfile
</code></pre>



<p class="wp-block-paragraph">You&#8217;ll get a number like <code>4546994</code>. That is your <code>resume_offset</code>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">6. Update Kernel Parameters (GRUB)</h2>



<p class="wp-block-paragraph">Edit <code>/etc/default/grub</code>:</p>



<pre class="wp-block-code"><code>GRUB_CMDLINE_LINUX_DEFAULT="... resume=UUID=&lt;YOUR_ROOT_UUID&gt; resume_offset=4546994"
</code></pre>



<p class="wp-block-paragraph">Then regenerate GRUB config:</p>



<pre class="wp-block-code"><code>sudo grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">7. mkinitcpio Hooks</h2>



<p class="wp-block-paragraph">Edit <code>/etc/mkinitcpio.conf</code> and make sure <code>resume</code> is after <code>udev</code>:</p>



<pre class="wp-block-code"><code>HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems resume fsck)
</code></pre>



<p class="wp-block-paragraph">Then:</p>



<pre class="wp-block-code"><code>sudo mkinitcpio -P
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">8. Test Hibernation</h2>



<pre class="wp-block-code"><code>sudo systemctl hibernate
</code></pre>



<p class="wp-block-paragraph">After the system powers off, turn it on again. It should resume your session from swap.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Final Notes</h2>



<ul class="wp-block-list">
<li>Don’t rely on <code>/boot/efi/EFI/cachyos/grub.cfg</code>; GRUB on EFI loads <code>/boot/grub/grub.cfg</code>.</li>



<li>zram does not support hibernation; ensure your swapfile is active and recognized.</li>



<li>Want to increase speed? Consider adding <code>hibernate.compressor=lz4</code> to your kernel line.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Hibernation on Btrfs is not trivial, but once it’s done properly, it works just as well as with traditional setups. Good luck and happy hacking!</p>
<p>The post <a href="https://hamradio.my/2025/06/setting-up-a-btrfs-compatible-swap-file-with-hibernation-on-cachyos-or-any-arch-based-system/">Setting Up a Btrfs-Compatible Swap File with Hibernation on CachyOS (or Any Arch-based System)</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/setting-up-a-btrfs-compatible-swap-file-with-hibernation-on-cachyos-or-any-arch-based-system/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Choosing the Best Filesystem for Linux</title>
		<link>https://hamradio.my/2025/06/choosing-the-best-filesystem-for-linux/</link>
					<comments>https://hamradio.my/2025/06/choosing-the-best-filesystem-for-linux/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 27 Jun 2025 16:42:18 +0000</pubDate>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[data integrity]]></category>
		<category><![CDATA[Ext4]]></category>
		<category><![CDATA[home server]]></category>
		<category><![CDATA[Linux Tips]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[snapshots]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[tech blog]]></category>
		<category><![CDATA[xfs]]></category>
		<category><![CDATA[zfs]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8028</guid>

					<description><![CDATA[<p>When setting up a Linux system—whether it&#8217;s a personal laptop, home server, or enterprise-grade machine—you eventually face this deceptively simple question:&#8220;Which filesystem should I use?&#8221; And while most people just stick with whatever the distro gives them (usually ext4), the truth is… there are better options out there—depending on what you&#8217;re doing. In this post, [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/choosing-the-best-filesystem-for-linux/">Choosing the Best Filesystem for Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">When setting up a Linux system—whether it&#8217;s a personal laptop, home server, or enterprise-grade machine—you eventually face this deceptively simple question:<br><strong>&#8220;Which filesystem should I use?&#8221;</strong></p>



<p class="wp-block-paragraph">And while most people just stick with whatever the distro gives them (usually <code>ext4</code>), the truth is… <strong>there are better options</strong> out there—depending on what you&#8217;re doing.</p>



<p class="wp-block-paragraph">In this post, I’ll walk you through the four main contenders: <strong>ext4</strong>, <strong>Btrfs</strong>, <strong>XFS</strong>, and <strong>ZFS</strong>. Each one has strengths and quirks. Let’s make sense of them.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ext4 – The Reliable Classic</h3>



<p class="wp-block-paragraph">If you&#8217;re running Linux, there&#8217;s a 90% chance you&#8217;re already using <code>ext4</code>. It’s the default for most distributions, and for good reason:</p>



<ul class="wp-block-list">
<li>It’s fast.</li>



<li>It’s stable.</li>



<li>It just works.</li>
</ul>



<p class="wp-block-paragraph">But here’s the thing: ext4 doesn’t do fancy stuff like <strong>snapshots</strong>, <strong>compression</strong>, or <strong>self-healing</strong>. If you don’t need those features, then it’s still a fantastic choice.</p>



<p class="wp-block-paragraph"><strong>Use it if</strong>:<br>You&#8217;re setting up a general-purpose desktop or server and want maximum compatibility and no surprises.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Btrfs – The Smart All-Rounder</h3>



<p class="wp-block-paragraph">Btrfs (pronounced “butter-fs” or “bee-tree-fs”, pick your poison) is a modern filesystem built with cool features like:</p>



<ul class="wp-block-list">
<li>Snapshots (think instant backups)</li>



<li>Transparent compression</li>



<li>Built-in RAID support</li>



<li>Checksums for data integrity</li>
</ul>



<p class="wp-block-paragraph">It’s a bit like ZFS but more lightweight and integrated into the Linux kernel.</p>



<p class="wp-block-paragraph"><strong>Use it if</strong>:<br>You want modern features, better data safety, and don&#8217;t mind a little learning curve.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> XFS – The Big File Specialist</h3>



<p class="wp-block-paragraph">XFS is a beast when it comes to large files and high-throughput storage. Originally developed by SGI, it’s now maintained by the Linux community and used heavily in environments like:</p>



<ul class="wp-block-list">
<li>Video editing</li>



<li>Large-scale backups</li>



<li>Databases with massive files</li>
</ul>



<p class="wp-block-paragraph">But it’s not great for small files or everyday desktop use.</p>



<p class="wp-block-paragraph"><strong>Use it if</strong>:<br>You’re working with terabytes of video, raw photos, or large scientific datasets.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e1.png" alt="🛡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ZFS – The Data Guardian</h3>



<p class="wp-block-paragraph">ZFS is legendary. It’s basically a combination of a volume manager and a filesystem. It gives you:</p>



<ul class="wp-block-list">
<li>Extreme data integrity (self-healing)</li>



<li>Snapshots, cloning, deduplication</li>



<li>Built-in RAID (no more mdadm!)</li>



<li>Compression, encryption—you name it</li>
</ul>



<p class="wp-block-paragraph">Sounds amazing, right? It is. But you’ll need a decent amount of RAM (8 GB+ is ideal), and it&#8217;s not included in the Linux kernel for licensing reasons—so you’ll need to install it manually.</p>



<p class="wp-block-paragraph"><strong>Use it if</strong>:<br>You’re running a serious NAS or server and want the best protection against data loss.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> So&#8230; Which One Should <em>You</em> Use?</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Use Case</th><th>Best Filesystem</th></tr></thead><tbody><tr><td>Everyday desktop</td><td><strong>ext4</strong></td></tr><tr><td>Laptops or home NAS</td><td><strong>Btrfs</strong></td></tr><tr><td>Big file storage</td><td><strong>XFS</strong></td></tr><tr><td>Enterprise storage / NAS</td><td><strong>ZFS</strong></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/270d.png" alt="✍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h3>



<p class="wp-block-paragraph">The beauty of Linux is <strong>choice</strong>—but that also means doing a bit of homework. Fortunately, filesystems like ext4 and Btrfs make it hard to go wrong.</p>



<p class="wp-block-paragraph">If you&#8217;re setting up a personal machine: ext4 is rock solid.<br>If you&#8217;re tinkering or want cool features: give Btrfs a go.<br>If you&#8217;re building a fortress for your data: ZFS is king.</p>



<p class="wp-block-paragraph">Whichever route you take, just make sure to <strong>back up your data</strong>. Even the best filesystem won’t save you from <code>rm -rf /</code> </p>
<p>The post <a href="https://hamradio.my/2025/06/choosing-the-best-filesystem-for-linux/">Choosing the Best Filesystem for Linux</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/choosing-the-best-filesystem-for-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why Windows 10 Feels Lighter Than Ubuntu 25.04 (And How to Fix It)</title>
		<link>https://hamradio.my/2025/06/why-windows-10-feels-lighter-than-ubuntu-25-04-and-how-to-fix-it/</link>
					<comments>https://hamradio.my/2025/06/why-windows-10-feels-lighter-than-ubuntu-25-04-and-how-to-fix-it/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 07:14:24 +0000</pubDate>
				<category><![CDATA[do it yourself]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[open source operating system]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[tweaks]]></category>
		<category><![CDATA[debianbased]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[lightweightlinux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linuxperformance]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[snapsucks]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[thinkpad]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu2504]]></category>
		<category><![CDATA[windows10]]></category>
		<category><![CDATA[xfce]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7545</guid>

					<description><![CDATA[<p>If you&#8217;ve recently switched to Ubuntu 25.04 from Windows 10 on your laptop—perhaps like mine, a Lenovo ThinkPad T460—you might be surprised to find that Ubuntu feels slower or more sluggish than expected. Isn’t Linux supposed to be faster? Yes… but &#8220;lighter&#8221; doesn’t always mean &#8220;faster&#8221; in daily use. There are several reasons why Ubuntu [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/why-windows-10-feels-lighter-than-ubuntu-25-04-and-how-to-fix-it/">Why Windows 10 Feels Lighter Than Ubuntu 25.04 (And How to Fix It)</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you&#8217;ve recently switched to Ubuntu 25.04 from Windows 10 on your laptop—perhaps like mine, a Lenovo ThinkPad T460—you might be surprised to find that <strong>Ubuntu feels slower</strong> or more sluggish than expected.</p>



<p class="wp-block-paragraph">Isn’t Linux supposed to be faster?</p>



<p class="wp-block-paragraph">Yes… but <strong>&#8220;lighter&#8221; doesn’t always mean &#8220;faster&#8221; in daily use</strong>. There are several reasons why Ubuntu 25.04 might feel heavier than Windows 10 on the same hardware, and the good news is: you can fix most of them.</p>



<p class="wp-block-paragraph">Let’s explore why this happens and how you can tweak Ubuntu for a smoother experience.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-gnome-desktop-beautiful-but-bulky"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GNOME Desktop: Beautiful but Bulky</h2>



<p class="wp-block-paragraph">Ubuntu 25.04 ships with the <strong>GNOME desktop environment</strong>, which is modern and visually polished—but not lightweight.</p>



<p class="wp-block-paragraph">Compared to Windows 10&#8217;s UI, GNOME:</p>



<ul class="wp-block-list">
<li>Uses more <strong>RAM</strong> and <strong>CPU</strong></li>



<li>Has <strong>animations</strong> and <strong>background daemons</strong> that run persistently</li>



<li>May struggle on <strong>older or mid-range hardware</strong></li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Fix</strong>: Install a lighter desktop environment like:</p>



<ul class="wp-block-list">
<li><strong>Xfce</strong>: <code>sudo apt install xubuntu-desktop</code></li>



<li><strong>MATE</strong>: <code>sudo apt install ubuntu-mate-desktop</code></li>



<li><strong>LXQt</strong>: <code>sudo apt install lubuntu-desktop</code></li>
</ul>



<p class="wp-block-paragraph">These will drastically improve responsiveness, especially on older systems.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-memory-handling-different-philosophies"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Memory Handling: Different Philosophies</h2>



<p class="wp-block-paragraph">Windows 10 uses aggressive <strong>memory prefetching</strong> and <strong>caching</strong> to make apps launch quickly. Even if the system uses more RAM, it often feels snappier.</p>



<p class="wp-block-paragraph">Ubuntu, on the other hand:</p>



<ul class="wp-block-list">
<li>Prioritizes minimal RAM usage at idle</li>



<li>Loads apps on-demand rather than predicting</li>
</ul>



<p class="wp-block-paragraph">So Linux may feel <strong>slower to launch apps</strong>, but it’s actually using RAM more efficiently. The “snappiness” just needs a few tweaks.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Fix</strong>:</p>



<ul class="wp-block-list">
<li>Install <code>preload</code>: <code>sudo apt install preload</code></li>



<li>Enable zram swap: <code>sudo apt install zram-tools &amp;&amp; sudo systemctl enable --now zramswap.service</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-drivers-windows-has-the-advantage"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Drivers: Windows Has the Advantage</h2>



<p class="wp-block-paragraph">Most laptops come with <strong>OEM-optimized drivers for Windows</strong>. Linux often has to rely on:</p>



<ul class="wp-block-list">
<li>Generic open-source drivers</li>



<li>Community-developed alternatives (e.g. Nouveau for NVIDIA)</li>
</ul>



<p class="wp-block-paragraph">This can affect:</p>



<ul class="wp-block-list">
<li>Graphics performance</li>



<li>Battery life</li>



<li>Touchpad gestures</li>



<li>Wi-Fi stability</li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Fix</strong>:</p>



<ul class="wp-block-list">
<li>Use proprietary drivers where available: <code>sudo ubuntu-drivers autoinstall</code></li>



<li>Reboot and check with <code>lshw -c video</code> to confirm usage.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-power-management-and-cpu-scaling"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50b.png" alt="🔋" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Power Management and CPU Scaling</h2>



<p class="wp-block-paragraph">On Windows, manufacturers preload <strong>power profiles</strong>, tuned firmware, and thermal governors.</p>



<p class="wp-block-paragraph">Linux relies on the <strong>CPU governor</strong>, which may default to &#8220;powersave&#8221; or &#8220;ondemand&#8221;—making your laptop feel laggy.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Fix</strong>:</p>



<ul class="wp-block-list">
<li>View profiles: <code>powerprofilesctl list</code></li>



<li>Switch to performance: <code>sudo apt install power-profiles-daemon powerprofilesctl set performance</code></li>
</ul>



<p class="wp-block-paragraph">For older systems, use <code>cpufrequtils</code>:</p>



<pre class="wp-block-code"><code>sudo apt install cpufrequtils
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-snap-packages-and-startup-lag"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Snap Packages and Startup Lag</h2>



<p class="wp-block-paragraph">Ubuntu ships many apps as <strong>Snap packages</strong>. These:</p>



<ul class="wp-block-list">
<li>Are isolated and more secure</li>



<li>But launch slower and consume more disk I/O</li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Fix</strong>:</p>



<ul class="wp-block-list">
<li>Replace with <code>.deb</code> versions when possible: <code>sudo snap remove firefox sudo add-apt-repository ppa:mozillateam/ppa sudo apt install firefox</code></li>
</ul>



<p class="wp-block-paragraph">You can also disable Snap entirely and switch to <strong>Flatpak</strong> or classic APT apps.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-optional-tips-for-a-faster-ubuntu"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Optional Tips for a Faster Ubuntu</h2>



<p class="wp-block-paragraph">Here are a few more tweaks to make Ubuntu faster and lighter:</p>



<h3 class="wp-block-heading" id="h-disable-unused-services"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f9.png" alt="🧹" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Disable Unused Services</h3>



<p class="wp-block-paragraph">Use <code>systemd-analyze blame</code> to see slow boot processes. Disable what you don&#8217;t need:</p>



<pre class="wp-block-code"><code>sudo systemctl disable &lt;service&gt;
</code></pre>



<h3 class="wp-block-heading" id="h-use-a-lightweight-file-manager"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Use a Lightweight File Manager</h3>



<p class="wp-block-paragraph">Replace Nautilus with something faster like:</p>



<pre class="wp-block-code"><code>sudo apt install thunar
</code></pre>



<h3 class="wp-block-heading" id="h-use-a-lightweight-browser"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Use a Lightweight Browser</h3>



<p class="wp-block-paragraph">Try <strong>Librewolf</strong>, <strong>Falkon</strong>, or <strong>GNOME Web</strong> instead of Firefox or Chrome.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-benchmark-comparison-windows-10-vs-ubuntu-25-04-gnome"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c8.png" alt="📈" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Benchmark Comparison: Windows 10 vs Ubuntu 25.04 (GNOME)</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Metric</th><th>Windows 10</th><th>Ubuntu 25.04 (GNOME)</th></tr></thead><tbody><tr><td>Idle RAM Usage</td><td>~2.2 GB</td><td>~1.6 GB</td></tr><tr><td>App Launch Time (Firefox)</td><td>Fast</td><td>Slight delay (Snap)</td></tr><tr><td>Battery Life (ThinkPad T460)</td><td>5.5 hours</td><td>4.5 hours</td></tr><tr><td>UI Responsiveness</td><td>Smooth</td><td>Slight lag</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">With the above tweaks (especially desktop environment change and Snap removal), Ubuntu can outperform Windows 10 in real-world use.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusion-don-t-give-up-on-ubuntu">Conclusion: Don’t Give Up on Ubuntu!</h2>



<p class="wp-block-paragraph">If Ubuntu 25.04 feels heavier than Windows 10, it’s not your hardware—it’s just that <strong>Ubuntu’s default setup is not optimized for every machine out-of-the-box</strong>.</p>



<p class="wp-block-paragraph">The beauty of Linux is in its <strong>customizability</strong>. With a few simple tweaks, you can make Ubuntu faster, lighter, and tailored perfectly to your system.</p>



<p class="wp-block-paragraph">Feel free to share this post with friends facing the same issue—or better yet, give them a hand tuning their Linux box. </p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/06/why-windows-10-feels-lighter-than-ubuntu-25-04-and-how-to-fix-it/">Why Windows 10 Feels Lighter Than Ubuntu 25.04 (And How to Fix It)</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/why-windows-10-feels-lighter-than-ubuntu-25-04-and-how-to-fix-it/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Best Open Source NAS Operating Systems</title>
		<link>https://hamradio.my/2025/06/the-best-open-source-nas-operating-systems/</link>
					<comments>https://hamradio.my/2025/06/the-best-open-source-nas-operating-systems/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 22 Jun 2025 03:25:19 +0000</pubDate>
				<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[do it yourself]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[Network Attached Storage]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[datastorage]]></category>
		<category><![CDATA[diyserver]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[easynas]]></category>
		<category><![CDATA[fileserver]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[homenas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linuxserver]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[OpenMediaVault]]></category>
		<category><![CDATA[opensourcenas]]></category>
		<category><![CDATA[RaspberryPi]]></category>
		<category><![CDATA[Rockstor]]></category>
		<category><![CDATA[selfhosted]]></category>
		<category><![CDATA[selfhosting]]></category>
		<category><![CDATA[serverbuild]]></category>
		<category><![CDATA[smb]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[TechBlog]]></category>
		<category><![CDATA[TrueNAS]]></category>
		<category><![CDATA[XigmaNAS]]></category>
		<category><![CDATA[zfs]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7534</guid>

					<description><![CDATA[<p>When it comes to setting up your own network-attached storage (NAS), open-source software offers an incredible range of options—powerful, flexible, and most importantly, free. Whether you&#8217;re building a home media server, backup system, or an advanced data management solution, there&#8217;s an open-source NAS out there for you. In this post, we’ll explore the top 5 [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/the-best-open-source-nas-operating-systems/">The Best Open Source NAS Operating Systems</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When it comes to setting up your own network-attached storage (NAS), open-source software offers an incredible range of options—powerful, flexible, and most importantly, <strong>free</strong>. Whether you&#8217;re building a home media server, backup system, or an advanced data management solution, there&#8217;s an open-source NAS out there for you.</p>



<p class="wp-block-paragraph">In this post, we’ll explore the <strong>top 5 open-source NAS operating systems</strong> you can deploy today. Each one is suited to different needs—ranging from powerful enterprise-level setups to simple plug-and-play solutions for beginners.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-1-truenas-core-formerly-freenas-the-zfs-king"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c6.png" alt="🏆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 1. TrueNAS CORE (formerly FreeNAS) – The ZFS King</h2>



<p class="wp-block-paragraph"><strong>Base OS</strong>: FreeBSD<br><strong>Filesystem</strong>: ZFS<br><strong>Best for</strong>: Power users, enterprises, and anyone who values <strong>data integrity</strong></p>



<h3 class="wp-block-heading" id="h-why-truenas-core"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why TrueNAS CORE?</h3>



<p class="wp-block-paragraph">TrueNAS CORE is the gold standard in open-source NAS software. Built on FreeBSD and leveraging the incredibly robust <strong>ZFS</strong> file system, it offers data protection features like checksumming, copy-on-write, and built-in snapshots.</p>



<p class="wp-block-paragraph">It comes with a polished web UI, plugin support (e.g., Nextcloud, Plex, Transmission), replication tools, encryption, and advanced networking. It even supports virtual machines and Docker via its Linux counterpart, <strong>TrueNAS SCALE</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Recommended if you have <strong>8GB+ RAM</strong>, preferably ECC, and want bulletproof storage with enterprise-level features.</p>
</blockquote>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://www.truenas.com/truenas-core/">https://www.truenas.com/truenas-core/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-2-openmediavault-omv-best-for-simplicity-and-home-use"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e2.png" alt="🟢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2. OpenMediaVault (OMV) – Best for Simplicity and Home Use</h2>



<p class="wp-block-paragraph"><strong>Base OS</strong>: Debian Linux<br><strong>Filesystem</strong>: ext4, XFS, Btrfs, ZFS (via plugin)<br><strong>Best for</strong>: Home servers, Raspberry Pi NAS builds, beginners</p>



<h3 class="wp-block-heading" id="h-why-openmediavault"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why OpenMediaVault?</h3>



<p class="wp-block-paragraph">If you&#8217;re looking for something lightweight and easy to manage, OMV is your go-to. It&#8217;s perfect for home users or beginners wanting to set up a file server, media server, or even a Time Machine backup destination.</p>



<p class="wp-block-paragraph">With Docker and Portainer integration, you can run containers effortlessly. It also has a large ecosystem of plugins and excellent community support.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ideal for Raspberry Pi, mini PCs, or old laptops converted into a NAS.</p>
</blockquote>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://www.openmediavault.org/">https://www.openmediavault.org/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-3-rockstor-linux-based-nas-with-btrfs-power"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3. Rockstor – Linux-Based NAS with Btrfs Power</h2>



<p class="wp-block-paragraph"><strong>Base OS</strong>: openSUSE (newer versions)<br><strong>Filesystem</strong>: Btrfs<br><strong>Best for</strong>: Developers, Docker fans, modern Linux users</p>



<h3 class="wp-block-heading" id="h-why-rockstor"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Rockstor?</h3>



<p class="wp-block-paragraph">Rockstor is a lesser-known but powerful NAS option that revolves around <strong>Btrfs</strong>, a modern copy-on-write file system with snapshot and compression capabilities. It features a clean web UI, Docker support, and great storage management features.</p>



<p class="wp-block-paragraph">If you&#8217;re into Linux and want an alternative to ZFS, Rockstor’s Btrfs-first approach is worth trying.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Perfect for DIYers and devs looking to experiment with containers and Btrfs.</p>
</blockquote>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://rockstor.com/">https://rockstor.com/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-4-xigmanas-formerly-nas4free-lightweight-bsd-nas"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e3.png" alt="🟣" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 4. XigmaNAS (formerly NAS4Free) – Lightweight BSD NAS</h2>



<p class="wp-block-paragraph"><strong>Base OS</strong>: FreeBSD<br><strong>Filesystem</strong>: ZFS, UFS<br><strong>Best for</strong>: Legacy hardware, users who want a BSD NAS without bloat</p>



<h3 class="wp-block-heading" id="h-why-xigmanas"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why XigmaNAS?</h3>



<p class="wp-block-paragraph">Think of XigmaNAS as the simpler cousin of TrueNAS. It’s BSD-based, supports ZFS, and runs well on older hardware. The UI is not as polished, but it gets the job done.</p>



<p class="wp-block-paragraph">It supports all major sharing protocols (SMB, NFS, AFP, FTP, etc.) and can be configured for RAID, iSCSI, and rsync easily.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Great for repurposing older PCs into reliable NAS boxes.</p>
</blockquote>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://www.xigmanas.com/">https://www.xigmanas.com/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-5-easynas-minimalist-and-straightforward"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 5. EasyNAS – Minimalist and Straightforward</h2>



<p class="wp-block-paragraph"><strong>Base OS</strong>: openSUSE<br><strong>Filesystem</strong>: Btrfs<br><strong>Best for</strong>: Total beginners, plug-and-play NAS setups</p>



<h3 class="wp-block-heading" id="h-why-easynas"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why EasyNAS?</h3>



<p class="wp-block-paragraph">True to its name, EasyNAS is built for simplicity. It’s lightweight, quick to install, and has a minimal interface that lets you set up your file server in minutes. It lacks advanced features, but for basic use—like backing up files or sharing over the network—it’s more than capable.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Best if you want a &#8220;set it and forget it&#8221; NAS with minimal learning curve.</p>
</blockquote>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://easynas.org/">https://easynas.org/</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-comparison-at-a-glance"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Comparison at a Glance</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Feature</th><th>TrueNAS CORE</th><th>OpenMediaVault</th><th>Rockstor</th><th>XigmaNAS</th><th>EasyNAS</th></tr></thead><tbody><tr><td>OS Base</td><td>FreeBSD</td><td>Debian</td><td>openSUSE</td><td>FreeBSD</td><td>openSUSE</td></tr><tr><td>Main Filesystem</td><td>ZFS</td><td>ext4/XFS/ZFS</td><td>Btrfs</td><td>ZFS/UFS</td><td>Btrfs</td></tr><tr><td>Web Interface</td><td>Excellent</td><td>Simple</td><td>Modern</td><td>Basic</td><td>Minimal</td></tr><tr><td>Docker Support</td><td>Via SCALE</td><td>Native</td><td>Native</td><td>No</td><td>No</td></tr><tr><td>Minimum RAM</td><td>8GB+</td><td>2GB+</td><td>4GB+</td><td>2GB+</td><td>2GB+</td></tr><tr><td>Ideal For</td><td>Enterprise</td><td>Home NAS</td><td>Devs/Linux</td><td>Legacy HW</td><td>Beginners</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-final-thoughts-which-nas-should-you-choose"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts: Which NAS Should You Choose?</h2>



<ul class="wp-block-list">
<li><strong>Choose TrueNAS CORE</strong> if you want <strong>maximum reliability</strong> with ZFS, advanced features, and don’t mind the extra learning curve.</li>



<li><strong>Choose OpenMediaVault</strong> for <strong>ease of use</strong>, Raspberry Pi support, and excellent Docker integration.</li>



<li><strong>Choose Rockstor</strong> if you prefer Linux and want to explore <strong>Btrfs with Docker</strong>.</li>



<li><strong>Choose XigmaNAS</strong> for a <strong>light BSD-based NAS</strong> on old or underpowered hardware.</li>



<li><strong>Choose EasyNAS</strong> if you want a <strong>quick and easy local file server</strong> without the fluff.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Have questions or need help choosing the right NAS for your setup? Feel free to reach out or drop a comment below. Whether you’re running this on a recycled PC or a Raspberry Pi, there’s never been a better time to go open-source with your storage.</p>
<p>The post <a href="https://hamradio.my/2025/06/the-best-open-source-nas-operating-systems/">The Best Open Source NAS Operating Systems</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/the-best-open-source-nas-operating-systems/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sending Weather Data to APRS-IS Using Bash and OpenWeatherMap API</title>
		<link>https://hamradio.my/2025/06/sending-weather-data-to-aprs-is-using-bash-and-openweathermap-api/</link>
					<comments>https://hamradio.my/2025/06/sending-weather-data-to-aprs-is-using-bash-and-openweathermap-api/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 13 Jun 2025 02:05:37 +0000</pubDate>
				<category><![CDATA[9M2PJU]]></category>
		<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[APRS]]></category>
		<category><![CDATA[automatic packet reporting system]]></category>
		<category><![CDATA[9m2pju]]></category>
		<category><![CDATA[AmateurRadio]]></category>
		<category><![CDATA[APRSIS]]></category>
		<category><![CDATA[aprspacket]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[bashscript]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[jq]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netcat]]></category>
		<category><![CDATA[openweathermap]]></category>
		<category><![CDATA[qth]]></category>
		<category><![CDATA[RaspberryPi]]></category>
		<category><![CDATA[WeatherData]]></category>
		<category><![CDATA[weathergateway]]></category>
		<category><![CDATA[weatherstation]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7494</guid>

					<description><![CDATA[<p>As radio amateurs, integrating real-world sensor data into APRS can be both useful and fun. In this guide, I’ll show you how to use a Bash script to automatically fetch your local weather data from OpenWeatherMap and send it to the APRS-IS network. This method is especially useful for stations that don’t have a dedicated [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/sending-weather-data-to-aprs-is-using-bash-and-openweathermap-api/">Sending Weather Data to APRS-IS Using Bash and OpenWeatherMap API</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">As radio amateurs, integrating real-world sensor data into APRS can be both useful and fun. In this guide, I’ll show you how to use a <strong>Bash script</strong> to automatically fetch your <strong>local weather data</strong> from <strong>OpenWeatherMap</strong> and send it to the <strong>APRS-IS network</strong>.</p>



<p class="wp-block-paragraph">This method is especially useful for stations that don’t have a dedicated weather station but want to share weather conditions based on their location.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-what-you-ll-need"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What You’ll Need</h2>



<ul class="wp-block-list">
<li>A Linux machine or server (I&#8217;m using Debian)</li>



<li>Your <strong>APRS callsign</strong> and <strong>passcode</strong></li>



<li>An <strong>OpenWeatherMap API key</strong> (free)</li>



<li>Coordinates of your QTH</li>



<li><code>jq</code> and <code>netcat</code> installed</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-1-get-your-api-keys"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Get Your API Keys</h2>



<h3 class="wp-block-heading" id="h-aprs-is-passcode">APRS-IS Passcode</h3>



<p class="wp-block-paragraph">If you don’t already have a passcode, you can generate it based on your callsign. For example, you can use my free generator here:</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code><a href="https://pass.hamradio.my">https://pass.hamradio.my</a></code></p>



<h3 class="wp-block-heading" id="h-openweathermap-api-key">OpenWeatherMap API Key</h3>



<ol class="wp-block-list">
<li>Go to <a href="https://openweathermap.org/api">https://openweathermap.org/api</a></li>



<li>Sign up for a free account.</li>



<li>Copy your API key from the dashboard.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-2-determine-your-coordinates"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5fa.png" alt="🗺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Determine Your Coordinates</h2>



<p class="wp-block-paragraph">You’ll need your <strong>latitude</strong> and <strong>longitude</strong> in decimal format.</p>



<p class="wp-block-paragraph">Example for Kuala Lumpur:</p>



<ul class="wp-block-list">
<li>Latitude: <code>3.1390</code></li>



<li>Longitude: <code>101.6869</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-3-the-bash-script"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dc.png" alt="📜" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: The Bash Script</h2>



<p class="wp-block-paragraph">Here’s the full script:</p>



<pre class="wp-block-code"><code>#!/bin/bash

# === USER CONFIGURATION ===
CALLSIGN="PJUWX-13"                   # Your APRS callsign (with SSID)
PASSCODE="12031"                      # Your APRS-IS passcode
LAT="3.1390"                          # Latitude (decimal format)
LON="101.6869"                        # Longitude (decimal format)
OPENWEATHER_API_KEY="your_api_key"   # Replace with your OpenWeatherMap API key
SERVER="rotate.aprs2.net"            # APRS-IS server
PORT="14580"                          # APRS-IS port
COMMENT="9M2PJU WX Station &#x1f427;"       # Comment sent with weather data

# === FETCH WEATHER DATA ===
weather_json=$(curl -s "https://api.openweathermap.org/data/2.5/weather?lat=$LAT&amp;lon=$LON&amp;units=metric&amp;appid=$OPENWEATHER_API_KEY")
temp=$(echo "$weather_json" | jq '.main.temp' | xargs printf "%.0f")
humidity=$(echo "$weather_json" | jq '.main.humidity')
pressure=$(echo "$weather_json" | jq '.main.pressure')

# === FORMAT WEATHER PACKET ===
lat_aprs=$(printf "%02d%05.2fN" "${LAT%.*}" "$(echo "${LAT#*.} * 60 / 1" | bc -l)")
lon_aprs=$(printf "%03d%05.2fE" "${LON%.*}" "$(echo "${LON#*.} * 60 / 1" | bc -l)")

WX_PACKET="${CALLSIGN}&gt;APRS,TCPIP*:@$(date -u +%d%H%Mz)!${lat_aprs}/${lon_aprs}_.../...g...t$(printf "%03d" $temp)r...p...P...h${humidity}b$(printf "%05d" $((pressure * 10))) ${COMMENT}"

# === SEND TO APRS-IS ===
(
echo "user $CALLSIGN pass $PASSCODE vers PJUWX-Bash 1.0"
echo "$WX_PACKET"
sleep 1
) | nc "$SERVER" "$PORT"

echo "&#x2705; Sent: $WX_PACKET"
</code></pre>



<p class="wp-block-paragraph">Save this as <code>send_weather_aprs.sh</code>, and make it executable:</p>



<pre class="wp-block-code"><code>chmod +x send_weather_aprs.sh
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-what-this-script-does"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What This Script Does</h2>



<ol class="wp-block-list">
<li><strong>Fetches Weather Data</strong> from OpenWeatherMap using your coordinates and API key.</li>



<li><strong>Extracts</strong>:
<ul class="wp-block-list">
<li>Temperature (°C)</li>



<li>Humidity (%)</li>



<li>Pressure (hPa)</li>
</ul>
</li>



<li><strong>Formats</strong> your position in APRS format (degrees and minutes).</li>



<li><strong>Builds an APRS packet</strong> with a weather report.</li>



<li><strong>Sends</strong> the packet using Netcat (<code>nc</code>) to the APRS-IS network.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-automate-it-with-cron-optional"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f552.png" alt="🕒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Automate It with Cron (Optional)</h2>



<p class="wp-block-paragraph">To send updates every 20 minutes, add it to your crontab:</p>



<pre class="wp-block-code"><code>crontab -e
</code></pre>



<p class="wp-block-paragraph">Then add:</p>



<pre class="wp-block-code"><code>*/20 * * * * /path/to/send_weather_aprs.sh
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-example-aprs-packet"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e1.png" alt="📡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example APRS Packet</h2>



<pre class="wp-block-code"><code>PJUWX-13&gt;APRS,TCPIP*:@220945z0313.14N/10141.21E_.../...g...t031r...p...P...h78b10032 9M2PJU WX Station &#x1f427;
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-things-to-improve"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Things to Improve</h2>



<p class="wp-block-paragraph">This is a simple example to get you started. You could extend this by:</p>



<ul class="wp-block-list">
<li>Adding wind speed and direction</li>



<li>Including rainfall (requires API with more data or sensors)</li>



<li>Sending packets via RF using a TNC instead of APRS-IS</li>



<li>Switching to Python for better formatting and error handling</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusion"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h2>



<p class="wp-block-paragraph">This script is a lightweight, no-hardware solution to send <strong>real-time weather data to APRS</strong> using just <strong>Bash and a public API</strong>. Whether you’re setting up a portable station or just want to contribute environmental data from your QTH, this is a great way to get started.</p>



<p class="wp-block-paragraph">Feel free to modify, share, or expand upon it!</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/06/sending-weather-data-to-aprs-is-using-bash-and-openweathermap-api/">Sending Weather Data to APRS-IS Using Bash and OpenWeatherMap API</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/sending-weather-data-to-aprs-is-using-bash-and-openweathermap-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How Netflix Powers the World&#8217;s Fastest Content Delivery Network with FreeBSD</title>
		<link>https://hamradio.my/2025/06/how-netflix-powers-the-worlds-fastest-content-delivery-network-with-freebsd/</link>
					<comments>https://hamradio.my/2025/06/how-netflix-powers-the-worlds-fastest-content-delivery-network-with-freebsd/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 06 Jun 2025 21:51:19 +0000</pubDate>
				<category><![CDATA[entertainment]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[cdns]]></category>
		<category><![CDATA[cdntechnology]]></category>
		<category><![CDATA[contentdelivery]]></category>
		<category><![CDATA[customos]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[freebsdfoundation]]></category>
		<category><![CDATA[freedsoftware]]></category>
		<category><![CDATA[highperformance]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[ktls]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linuxalternative]]></category>
		<category><![CDATA[netflixengineering]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[networksecurity]]></category>
		<category><![CDATA[openconnect]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[serveroptimization]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[streamingtechnology]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[systemadmin]]></category>
		<category><![CDATA[technology]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7470</guid>

					<description><![CDATA[<p>When you stream your favorite Netflix show without buffering, you&#8217;re witnessing the power of FreeBSD in action. Behind the scenes of every seamless streaming experience lies one of the most impressive FreeBSD deployments in the world – Netflix&#8217;s Open Connect CDN, which delivers terabits of data per second to millions of viewers across 190+ countries. [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/how-netflix-powers-the-worlds-fastest-content-delivery-network-with-freebsd/">How Netflix Powers the World&#8217;s Fastest Content Delivery Network with FreeBSD</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading" id="h-"></h1>



<p class="wp-block-paragraph">When you stream your favorite Netflix show without buffering, you&#8217;re witnessing the power of FreeBSD in action. Behind the scenes of every seamless streaming experience lies one of the most impressive FreeBSD deployments in the world – Netflix&#8217;s Open Connect CDN, which delivers terabits of data per second to millions of viewers across 190+ countries.</p>



<h2 class="wp-block-heading" id="h-the-challenge-scaling-to-global-proportions">The Challenge: Scaling to Global Proportions</h2>



<p class="wp-block-paragraph">Netflix faced a monumental challenge as streaming demand exploded globally. They needed an operating system that could handle massive traffic volumes while maintaining rock-solid stability and performance. The solution had to be flexible enough for extensive customization and optimization to meet Netflix&#8217;s unique operational requirements.</p>



<p class="wp-block-paragraph">The stakes were high. As Gleb Smirnoff, Netflix&#8217;s skilled FreeBSD engineer, puts it: &#8220;We are one of the biggest sources of traffic on the internet – sending terabits per second, powered by thousands of servers or appliances, all running FreeBSD.&#8221;</p>



<h2 class="wp-block-heading" id="h-the-freebsd-solution-why-open-source-won">The FreeBSD Solution: Why Open Source Won</h2>



<p class="wp-block-paragraph">Netflix didn&#8217;t just adopt FreeBSD – they embraced it completely. Starting with a proof-of-concept CDN built on FreeBSD 9.0-RELEASE in 2012, Netflix quickly realized that achieving their ambitious growth targets required pushing beyond standard operating system capabilities.</p>



<p class="wp-block-paragraph">Here&#8217;s the key insight that changed everything: Netflix discovered that even a single percentage point increase in CDN performance translates to hundreds of thousands of dollars in savings. This made investing in FreeBSD&#8217;s ongoing development not just worthwhile, but essential.</p>



<h3 class="wp-block-heading" id="h-the-bold-decision-tracking-freebsd-current">The Bold Decision: Tracking FreeBSD-CURRENT</h3>



<p class="wp-block-paragraph">While many organizations play it safe with stable releases, Netflix made a counterintuitive choice that paid off massively. Drew Gallatin, a FreeBSD veteran with over 25 years of experience, explains their strategy:</p>



<p class="wp-block-paragraph"><em>&#8220;We decided what we were doing was silly, and what we should do is track FreeBSD-CURRENT. It sounds crazy because that&#8217;s where everybody pushes all their stuff, but it&#8217;s actually the best thing in the world for us.&#8221;</em></p>



<p class="wp-block-paragraph">This approach allows Netflix to catch regressions immediately rather than discovering problems years later. As Gallatin notes: <em>&#8220;When we run FreeBSD-CURRENT, we catch things really fast. If there&#8217;s some regression, we catch it right away.&#8221;</em></p>



<h2 class="wp-block-heading" id="h-performance-breakthroughs-what-freebsd-enabled">Performance Breakthroughs: What FreeBSD Enabled</h2>



<p class="wp-block-paragraph">Netflix&#8217;s FreeBSD implementation has achieved remarkable performance milestones:</p>



<p class="wp-block-paragraph"><strong>400 Gb/s Throughput</strong>: Netflix operates the world&#8217;s first 100+ gigabit per second production CDN servers, achieving 375 Gb/s at 53% CPU utilization.</p>



<p class="wp-block-paragraph"><strong>Kernel TLS Innovation</strong>: By moving TLS processing from user applications to the kernel, Netflix eliminated memory bandwidth bottlenecks and preserved the efficient sendfile pipeline. This breakthrough enabled their record-breaking throughput.</p>



<p class="wp-block-paragraph"><strong>RACK TCP Stack</strong>: Netflix contributed to developing RACK (Recent ACKnowledgment), improving TCP performance and reliability for high-volume data transmission.</p>



<p class="wp-block-paragraph"><strong>Asynchronous Sendfile</strong>: Netflix&#8217;s optimizations enable non-blocking data transfers that dramatically improve network throughput.</p>



<h2 class="wp-block-heading" id="h-the-open-source-advantage-community-collaboration">The Open Source Advantage: Community Collaboration</h2>



<p class="wp-block-paragraph">What sets Netflix apart isn&#8217;t just their technical achievements – it&#8217;s their commitment to the FreeBSD community. Rather than keeping their innovations proprietary, Netflix actively contributes improvements upstream.</p>



<p class="wp-block-paragraph">Smirnoff emphasizes this philosophy: <em>&#8220;It&#8217;s crucial to reduce the divergence of your operating system to FreeBSD, which means that you need to upstream your changes.&#8221;</em></p>



<p class="wp-block-paragraph">This approach creates a virtuous cycle:</p>



<ul class="wp-block-list">
<li>Netflix benefits from community development</li>



<li>The FreeBSD community gains battle-tested improvements</li>



<li>Everyone wins from enhanced performance and stability</li>
</ul>



<p class="wp-block-paragraph">Key community contributions include:</p>



<ul class="wp-block-list">
<li>Kernel TLS implementation (collaboration with Chelsio and Mellanox)</li>



<li>Advanced VM page caching techniques</li>



<li>Performance optimizations tested at massive scale</li>



<li>Hardware acceleration support for various network cards</li>
</ul>



<h2 class="wp-block-heading" id="h-why-freebsd-was-the-right-choice">Why FreeBSD Was the Right Choice</h2>



<p class="wp-block-paragraph">Netflix&#8217;s success with FreeBSD demonstrates several key advantages of the operating system:</p>



<p class="wp-block-paragraph"><strong>Scalability</strong>: Handles terabits per second of traffic across thousands of servers <strong>Performance</strong>: Enables record-breaking throughput with efficient resource utilization<br><strong>Flexibility</strong>: Allows deep kernel-level customization and optimization <strong>Stability</strong>: Provides rock-solid reliability for mission-critical infrastructure <strong>Community</strong>: Benefits from active development and collaborative innovation <strong>Cost-Effectiveness</strong>: Open source licensing eliminates expensive per-server fees</p>



<h2 class="wp-block-heading" id="h-lessons-for-your-organization">Lessons for Your Organization</h2>



<p class="wp-block-paragraph">Netflix&#8217;s FreeBSD journey offers valuable insights for any organization considering FreeBSD:</p>



<p class="wp-block-paragraph"><strong>Start Early</strong>: Engage with the FreeBSD community from the beginning to maximize benefits <strong>Test Rigorously</strong>: Implement comprehensive testing frameworks to catch issues quickly <strong>Contribute Back</strong>: Share improvements with the community to reduce technical debt <strong>Stay Current</strong>: Track recent developments to benefit from latest innovations <strong>Think Long-term</strong>: Strategic FreeBSD adoption pays dividends at scale</p>



<h2 class="wp-block-heading" id="h-the-future-is-freebsd">The Future is FreeBSD</h2>



<p class="wp-block-paragraph">Netflix&#8217;s success story is just the beginning. Their commitment to FreeBSD demonstrates that open source solutions can power the world&#8217;s most demanding applications. By choosing FreeBSD, Netflix didn&#8217;t just solve their CDN challenges – they helped advance the entire ecosystem.</p>



<p class="wp-block-paragraph">As streaming continues to grow globally, Netflix&#8217;s FreeBSD-powered infrastructure stands ready to deliver. Every show you watch, every movie you stream, every seamless experience you enjoy is powered by the reliability, performance, and innovation that FreeBSD makes possible.</p>



<h2 class="wp-block-heading" id="h-ready-to-experience-freebsd-s-power">Ready to Experience FreeBSD&#8217;s Power?</h2>



<p class="wp-block-paragraph">Whether you&#8217;re building the next global CDN or optimizing your current infrastructure, FreeBSD offers the performance, stability, and community support to help you succeed. Netflix&#8217;s journey from a simple proof-of-concept to the world&#8217;s fastest CDN proves that FreeBSD scales with your ambitions.</p>



<p class="wp-block-paragraph"><em>Ready to get started? Download FreeBSD today and join the community that&#8217;s powering the future of high-performance computing.</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><em>The FreeBSD Foundation provides support for organizations adopting FreeBSD. Contact them for technical guidance, implementation assistance, and community connections that can accelerate your FreeBSD journey.</em></p>



<figure class="wp-block-embed is-type-wp-embed is-provider-freebsd-foundation wp-block-embed-freebsd-foundation"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="A7Dt2QuTIC"><a href="https://freebsdfoundation.org/end-user-stories/netflix-case-study/">Maintaining the World’s Fastest Content Delivery Network at Netflix on FreeBSD​</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Maintaining the World’s Fastest Content Delivery Network at Netflix on FreeBSD​&#8221; &#8212; FreeBSD Foundation" src="https://freebsdfoundation.org/end-user-stories/netflix-case-study/embed/#?secret=MpPO4bl3a5#?secret=A7Dt2QuTIC" data-secret="A7Dt2QuTIC" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>The post <a href="https://hamradio.my/2025/06/how-netflix-powers-the-worlds-fastest-content-delivery-network-with-freebsd/">How Netflix Powers the World&#8217;s Fastest Content Delivery Network with FreeBSD</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/how-netflix-powers-the-worlds-fastest-content-delivery-network-with-freebsd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Boost Your Ham Radio Experience on Debian with the Hamradio Metapackages</title>
		<link>https://hamradio.my/2025/06/boost-your-ham-radio-experience-on-debian-with-the-hamradio-metapackages/</link>
					<comments>https://hamradio.my/2025/06/boost-your-ham-radio-experience-on-debian-with-the-hamradio-metapackages/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Tue, 03 Jun 2025 12:07:04 +0000</pubDate>
				<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[#AmateurRadio]]></category>
		<category><![CDATA[#MorseCode]]></category>
		<category><![CDATA[#radioamateurs]]></category>
		<category><![CDATA[#RadioCommunication]]></category>
		<category><![CDATA[#SatelliteCommunication]]></category>
		<category><![CDATA[antennamodeling]]></category>
		<category><![CDATA[APRS]]></category>
		<category><![CDATA[AX25]]></category>
		<category><![CDATA[cw]]></category>
		<category><![CDATA[GNUradio]]></category>
		<category><![CDATA[GQRX]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[hamradiodigital]]></category>
		<category><![CDATA[hamRadioLogging]]></category>
		<category><![CDATA[jt65]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rigcontrol]]></category>
		<category><![CDATA[rtl\_sdr]]></category>
		<category><![CDATA[sdr]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7789</guid>

					<description><![CDATA[<p>Debian continues to be a powerful and versatile platform for amateur radio enthusiasts. One of its most valuable features is the Hamradio Blend, which includes a series of metapackages tailored specifically for amateur radio operations. These metapackages make it incredibly convenient to install and manage a full suite of ham radio tools and software in [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/boost-your-ham-radio-experience-on-debian-with-the-hamradio-metapackages/">Boost Your Ham Radio Experience on Debian with the Hamradio Metapackages</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">Debian continues to be a powerful and versatile platform for amateur radio enthusiasts. One of its most valuable features is the <strong>Hamradio Blend</strong>, which includes a series of <em>metapackages</em> tailored specifically for amateur radio operations. These metapackages make it incredibly convenient to install and manage a full suite of ham radio tools and software in just a few commands.</p>



<h3 class="wp-block-heading">What Are Metapackages?</h3>



<p class="wp-block-paragraph">Metapackages are essentially collections of related software grouped under a single package name. Installing one metapackage will automatically pull in all the recommended packages associated with a particular task. For ham radio operators, this means less time hunting for individual software packages and more time focusing on radio activities.</p>



<h3 class="wp-block-heading">Available Hamradio Metapackages</h3>



<p class="wp-block-paragraph">Here’s a breakdown of the currently maintained metapackages in the Debian Hamradio Blend:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Task Name</th><th>Metapackage</th><th>Description</th></tr></thead><tbody><tr><td><strong>Antennas</strong></td><td><code>hamradio-antenna</code></td><td>Tools for antenna modelling and simulation.</td></tr><tr><td><strong>Data Modes</strong></td><td><code>hamradio-datamodes</code></td><td>Software for digital modes such as RTTY, SSTV, and weak signal modes like JT65.</td></tr><tr><td><strong>Digital Voice</strong></td><td><code>hamradio-digitalvoice</code></td><td>Applications for digital voice operation and Internet linking.</td></tr><tr><td><strong>Logging</strong></td><td><code>hamradio-logging</code></td><td>Logbook software, including contest logging tools.</td></tr><tr><td><strong>Morse</strong></td><td><code>hamradio-morse</code></td><td>Programs for CW operation and Morse code learning.</td></tr><tr><td><strong>Non-Amateur Modes</strong></td><td><code>hamradio-nonamateur</code></td><td>Tools for decoding non-ham modes like AIS and ADS-B.</td></tr><tr><td><strong>Packet Modes</strong></td><td><code>hamradio-packetmodes</code></td><td>Everything for AX.25, APRS, and IP over packet radio.</td></tr><tr><td><strong>Rig Control</strong></td><td><code>hamradio-rigcontrol</code></td><td>Rig control and programming tools.</td></tr><tr><td><strong>Satellite Ops</strong></td><td><code>hamradio-satellite</code></td><td>Track and communicate via amateur radio satellites.</td></tr><tr><td><strong>SDR</strong></td><td><code>hamradio-sdr</code></td><td>Software for working with software-defined radios.</td></tr><tr><td><strong>Tools</strong></td><td><code>hamradio-tools</code></td><td>Various useful utilities for ham radio tasks.</td></tr><tr><td><strong>Training</strong></td><td><code>hamradio-training</code></td><td>Study tools for preparing for ham radio license exams.</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Installing Metapackages</h3>



<p class="wp-block-paragraph">To install any of these task-based collections, simply use the following format with your preferred package manager:</p>



<pre class="wp-block-code"><code>sudo apt-get install hamradio-&lt;task&gt;
</code></pre>



<p class="wp-block-paragraph">Replace <code>&lt;task&gt;</code> with the specific area you&#8217;re interested in, for example:</p>



<pre class="wp-block-code"><code>sudo apt-get install hamradio-logging
</code></pre>



<p class="wp-block-paragraph">If you&#8217;re looking for a full-featured ham radio setup, you can install the entire blend in one go:</p>



<pre class="wp-block-code"><code>sudo apt-get install hamradio-antenna hamradio-datamodes hamradio-digitalvoice hamradio-logging hamradio-morse hamradio-nonamateur hamradio-packetmodes hamradio-rigcontrol hamradio-satellite hamradio-sdr hamradio-tools hamradio-training
</code></pre>



<h3 class="wp-block-heading">Final Thoughts</h3>



<p class="wp-block-paragraph">Whether you&#8217;re into CW, APRS, satellite work, or just learning the ropes, the Debian Hamradio Blend has something to offer. With metapackages, setting up a complete amateur radio environment has never been easier. This is a great way to turn your Debian machine into a powerful radio shack workstation.</p>



<p class="wp-block-paragraph">If you&#8217;re running Debian, give these metapackages a try and take your ham radio experience to the next level.</p>



<p class="wp-block-paragraph">Visit <strong><a href="https://www.debian.org/blends/hamradio/get/metapackages">https://www.debian.org/blends/hamradio/get/metapackages</a></strong></p>
<p>The post <a href="https://hamradio.my/2025/06/boost-your-ham-radio-experience-on-debian-with-the-hamradio-metapackages/">Boost Your Ham Radio Experience on Debian with the Hamradio Metapackages</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/boost-your-ham-radio-experience-on-debian-with-the-hamradio-metapackages/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exploring Oh My BASH: The Bash Framework You Might Be Missing Out On</title>
		<link>https://hamradio.my/2025/06/exploring-oh-my-bash-the-bash-framework-you-might-be-missing-out-on/</link>
					<comments>https://hamradio.my/2025/06/exploring-oh-my-bash-the-bash-framework-you-might-be-missing-out-on/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 01 Jun 2025 13:10:01 +0000</pubDate>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tweaks]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[bashrc]]></category>
		<category><![CDATA[bashscripts]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[codigoaberto]]></category>
		<category><![CDATA[codigoabierto]]></category>
		<category><![CDATA[desarrollador]]></category>
		<category><![CDATA[desenvolvedor]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[développeur]]></category>
		<category><![CDATA[devtools]]></category>
		<category><![CDATA[entwickler]]></category>
		<category><![CDATA[entwicklertools]]></category>
		<category><![CDATA[ferramentasdev]]></category>
		<category><![CDATA[herramientasdev]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[logiciellibre]]></category>
		<category><![CDATA[ohmybash]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[outilsdev]]></category>
		<category><![CDATA[productividad]]></category>
		<category><![CDATA[productivité]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[produktivität]]></category>
		<category><![CDATA[produtividade]]></category>
		<category><![CDATA[quelloffen]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[инструментыразработчика]]></category>
		<category><![CDATA[оболочка]]></category>
		<category><![CDATA[продуктивность]]></category>
		<category><![CDATA[разработчик]]></category>
		<category><![CDATA[терминал]]></category>
		<category><![CDATA[أدوات_تطوير]]></category>
		<category><![CDATA[إنتاجية]]></category>
		<category><![CDATA[الشيل]]></category>
		<category><![CDATA[الطرفية]]></category>
		<category><![CDATA[مطور]]></category>
		<category><![CDATA[مفتوح_المصدر]]></category>
		<category><![CDATA[オープンソース]]></category>
		<category><![CDATA[シェル]]></category>
		<category><![CDATA[ターミナル]]></category>
		<category><![CDATA[开发工具]]></category>
		<category><![CDATA[开发者]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[效率]]></category>
		<category><![CDATA[生産性]]></category>
		<category><![CDATA[终端]]></category>
		<category><![CDATA[開発ツール]]></category>
		<category><![CDATA[開発者]]></category>
		<category><![CDATA[개발도구]]></category>
		<category><![CDATA[개발자]]></category>
		<category><![CDATA[생산성]]></category>
		<category><![CDATA[쉘]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[터미널]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7739</guid>

					<description><![CDATA[<p>When it comes to customizing your shell experience, most people are familiar with Oh My Zsh, the popular Zsh configuration framework. But what if you’re a Bash user—loyal to the world’s most widely used shell? Enter Oh My BASH, a community-driven framework that brings power, flexibility, and style to Bash. Whether you&#8217;re a casual Linux [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/exploring-oh-my-bash-the-bash-framework-you-might-be-missing-out-on/">Exploring Oh My BASH: The Bash Framework You Might Be Missing Out On</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">When it comes to customizing your shell experience, most people are familiar with <strong>Oh My Zsh</strong>, the popular Zsh configuration framework. But what if you’re a <strong>Bash user</strong>—loyal to the world’s most widely used shell? Enter <strong>Oh My BASH</strong>, a community-driven framework that brings power, flexibility, and style to Bash.</p>



<p class="wp-block-paragraph">Whether you&#8217;re a casual Linux user, a seasoned sysadmin, or a developer who loves to tinker with terminal aesthetics and productivity tools, <strong>Oh My BASH</strong> might just be the productivity upgrade you&#8217;re looking for. In this post, we’ll dive deep into what Oh My BASH is, its origins, features, pros and cons, and who it’s best suited for.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What is Oh My BASH?</h2>



<p class="wp-block-paragraph"><strong>Oh My BASH</strong> is an open-source, community-maintained framework for managing your <strong>Bash shell configuration</strong>. Much like its inspiration, <a href="https://ohmyz.sh/">Oh My Zsh</a>, this project aims to simplify the process of customizing and enhancing your Bash environment.</p>



<p class="wp-block-paragraph">With features like <strong>themes</strong>, <strong>plugins</strong>, and <strong>modular configuration</strong>, Oh My BASH turns the plain, default Bash shell into a more vibrant, powerful, and efficient tool.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ec.png" alt="🧬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Origin and History</h2>



<p class="wp-block-paragraph">The project was created as a direct counterpart to Oh My Zsh, for users who prefer sticking with Bash rather than switching shells. Bash remains the default shell on many Unix-like systems, including most Linux distributions and macOS (until Catalina).</p>



<p class="wp-block-paragraph">Oh My BASH started as a fork of Oh My Zsh and was adapted for Bash users by enthusiasts in the open-source community. Its development continues on GitHub:<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/ohmybash/oh-my-bash">https://github.com/ohmybash/oh-my-bash</a></p>



<p class="wp-block-paragraph">Though not as widely adopted as Oh My Zsh, it has built a niche community of loyal users who appreciate what it offers without requiring them to abandon Bash.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Purpose of Oh My BASH</h2>



<p class="wp-block-paragraph">The primary goal of Oh My BASH is to:</p>



<ul class="wp-block-list">
<li>Make Bash customization easier.</li>



<li>Provide a consistent and powerful shell experience.</li>



<li>Add features like themes, aliases, and plugins without cluttering your <code>.bashrc</code>.</li>
</ul>



<p class="wp-block-paragraph">It acts as a <strong>productivity booster</strong> and <strong>aesthetic enhancer</strong> for your command-line interface, all while staying true to Bash’s simplicity and compatibility.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advantages of Oh My BASH</h2>



<p class="wp-block-paragraph">Here are some of the standout benefits of using Oh My BASH:</p>



<h3 class="wp-block-heading">1. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f58c.png" alt="🖌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Theming and Aesthetics</h3>



<p class="wp-block-paragraph">Oh My BASH includes a variety of prompt <strong>themes</strong>. These themes add colors, Git status indicators, timestamps, and other useful elements to your prompt, making it visually appealing and informative.</p>



<h3 class="wp-block-heading">2. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Modular Configuration</h3>



<p class="wp-block-paragraph">Rather than dumping all settings into a monolithic <code>.bashrc</code>, Oh My BASH supports a modular structure. You can organize custom aliases, environment variables, and plugin settings in separate files.</p>



<h3 class="wp-block-heading">3. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50c.png" alt="🔌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Plugin Support</h3>



<p class="wp-block-paragraph">It comes with a set of built-in <strong>plugins</strong> that extend Bash’s functionality. These include helpful aliases and functions for Git, Docker, system info, SSH, and more.</p>



<h3 class="wp-block-heading">4. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Predefined Aliases and Functions</h3>



<p class="wp-block-paragraph">Oh My BASH comes packed with smart defaults, including common aliases and shell functions that can save you typing time and reduce mistakes.</p>



<h3 class="wp-block-heading">5. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f468-200d-1f469-200d-1f467-200d-1f466.png" alt="👨‍👩‍👧‍👦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Community-Driven</h3>



<p class="wp-block-paragraph">It&#8217;s open-source and maintained by contributors around the world. You can create your own plugins or themes, or contribute back to the main repository.</p>



<h3 class="wp-block-heading">6. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Easy Installation and Reset</h3>



<p class="wp-block-paragraph">Installing Oh My BASH is straightforward and reversible. You can easily uninstall it if needed, reverting to your old <code>.bashrc</code> setup.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Disadvantages of Oh My BASH</h2>



<p class="wp-block-paragraph">While Oh My BASH offers many benefits, it’s not without drawbacks. Here are some things to consider:</p>



<h3 class="wp-block-heading">1. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f40c.png" alt="🐌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Slower Shell Startup</h3>



<p class="wp-block-paragraph">As with many feature-rich shell frameworks, Oh My BASH can slightly increase your shell’s startup time, especially if you enable many plugins and themes.</p>



<h3 class="wp-block-heading">2. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f3.png" alt="🧳" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Less Active than Oh My Zsh</h3>



<p class="wp-block-paragraph">Oh My BASH is not as actively maintained or as widely used as Oh My Zsh. You may find fewer themes, plugins, and community tutorials available.</p>



<h3 class="wp-block-heading">3. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Plugin Limitations</h3>



<p class="wp-block-paragraph">The plugin ecosystem is smaller compared to other frameworks. Some power users may find it limited for more advanced workflows.</p>



<h3 class="wp-block-heading">4. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f300.png" alt="🌀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Not Meant for Minimalists</h3>



<p class="wp-block-paragraph">If you prefer a minimalist setup or enjoy hand-tweaking your <code>.bashrc</code>, this framework might feel like overkill or too opinionated.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f465.png" alt="👥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Who Should Use Oh My BASH?</h2>



<p class="wp-block-paragraph">Oh My BASH is ideal for:</p>



<ul class="wp-block-list">
<li><strong>Bash Users Who Want More</strong> – If you like Bash and don’t want to switch to Zsh or Fish, but still want themes and productivity tools.</li>



<li><strong>Developers and Sysadmins</strong> – Who work heavily in the terminal and appreciate added Git info, aliases, and clear prompts.</li>



<li><strong>New Linux Users</strong> – Who want to make their terminal more approachable and user-friendly.</li>



<li><strong>Customizers</strong> – If you enjoy tweaking your environment but don’t want to write everything from scratch.</li>
</ul>



<p class="wp-block-paragraph">However, it may not be the best fit for:</p>



<ul class="wp-block-list">
<li><strong>Hardcore Minimalists</strong> – Who prefer plain Bash with minimal external dependencies.</li>



<li><strong>Performance Purists</strong> – Who want the fastest shell startup time possible.</li>



<li><strong>Zsh/Fish Advocates</strong> – Users already invested in other modern shells with more robust ecosystems.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Getting Started with Oh My BASH</h2>



<p class="wp-block-paragraph">To install Oh My BASH, run this command in your terminal:</p>



<pre class="wp-block-code"><code>bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
</code></pre>



<p class="wp-block-paragraph">This will back up your existing <code>.bashrc</code> and replace it with a new one using the Oh My BASH structure. You can start exploring themes by editing your <code>.bashrc</code> file and changing the <code>OSH_THEME</code> variable.</p>



<p class="wp-block-paragraph">Example:</p>



<pre class="wp-block-code"><code>OSH_THEME="font"
</code></pre>



<p class="wp-block-paragraph">To list available themes, check the <code>themes/</code> directory in the cloned <code>.oh-my-bash</code> folder.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tips and Tricks</h2>



<ul class="wp-block-list">
<li>Use <code>alias</code> commands in your <code>.bash_aliases.custom</code> file.</li>



<li>Create your own theme or modify existing ones for full control.</li>



<li>Load additional scripts via the <code>custom/</code> directory.</li>



<li>Keep your <code>.bashrc</code> clean by leveraging modular files in <code>.oh-my-bash/custom</code>.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c1.png" alt="🏁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph"><strong>Oh My BASH</strong> is a solid choice for anyone looking to improve their Bash shell experience. It brings modern features, customization, and user-friendliness to a traditional and powerful shell without forcing you to switch ecosystems.</p>



<p class="wp-block-paragraph">It may not have the flashiest bells and whistles of Oh My Zsh or Fish, but for many users, its blend of power and simplicity hits the sweet spot. If you&#8217;re someone who enjoys working in the terminal and wants a smoother, more expressive experience—<strong>give Oh My BASH a try</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>Have you tried Oh My BASH? Got a favorite theme or plugin? Share your thoughts or custom setups in the comments below!</strong></p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/06/exploring-oh-my-bash-the-bash-framework-you-might-be-missing-out-on/">Exploring Oh My BASH: The Bash Framework You Might Be Missing Out On</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/exploring-oh-my-bash-the-bash-framework-you-might-be-missing-out-on/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Plank: The Minimalist Dock for a Clean Linux Desktop</title>
		<link>https://hamradio.my/2025/06/plank-the-minimalist-dock-for-a-clean-linux-desktop/</link>
					<comments>https://hamradio.my/2025/06/plank-the-minimalist-dock-for-a-clean-linux-desktop/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 01 Jun 2025 04:16:45 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[debianoS]]></category>
		<category><![CDATA[desktopenvironment]]></category>
		<category><![CDATA[dock]]></category>
		<category><![CDATA[lightweightdock]]></category>
		<category><![CDATA[linuxapps]]></category>
		<category><![CDATA[linuxcustomization]]></category>
		<category><![CDATA[linuxdesktop]]></category>
		<category><![CDATA[linuxsetup]]></category>
		<category><![CDATA[linuxui]]></category>
		<category><![CDATA[linuxuser]]></category>
		<category><![CDATA[minimalistlinux]]></category>
		<category><![CDATA[opendesktop]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[plank]]></category>
		<category><![CDATA[productivitytools]]></category>
		<category><![CDATA[themecustomization]]></category>
		<category><![CDATA[xfce]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7721</guid>

					<description><![CDATA[<p>If you&#8217;re looking for a sleek, lightweight, and no-nonsense dock for your Linux desktop, Plank might just be your perfect match. Built for simplicity and performance, Plank provides just what you need — and nothing you don’t. 🌟 What is Plank? Plank is a minimalist dock designed for Linux desktop environments. Its goal is to [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/plank-the-minimalist-dock-for-a-clean-linux-desktop/">Plank: The Minimalist Dock for a Clean Linux Desktop</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">If you&#8217;re looking for a sleek, lightweight, and no-nonsense dock for your Linux desktop, <strong>Plank</strong> might just be your perfect match. Built for simplicity and performance, Plank provides just what you need — and nothing you don’t.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What is Plank?</h2>



<p class="wp-block-paragraph">Plank is a minimalist dock designed for Linux desktop environments. Its goal is to be the simplest dock on the planet. It&#8217;s lightweight, visually clean, and designed to stay out of your way while still being highly functional.</p>



<p class="wp-block-paragraph">Plank is also the core backend used by <strong>Docky</strong> (from version 3.0.0 onward), meaning it can be extended to create more feature-rich docks if needed — but Plank itself keeps things lean.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Key Features</h2>



<ul class="wp-block-list">
<li><strong>Ultra Lightweight</strong>: Uses minimal system resources — great for low-end or older hardware.</li>



<li><strong>Minimal UI</strong>: No clutter, no distractions — just a beautiful dock.</li>



<li><strong>Extensible</strong>: Acts as a backend library for more advanced dock implementations.</li>



<li><strong>Theming Support</strong>: Easily change its appearance with custom themes.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How to Install Plank on Debian/Ubuntu</h2>



<p class="wp-block-paragraph">To install Plank on Debian-based distributions:</p>



<pre class="wp-block-code"><code>sudo add-apt-repository ppa:ricotz/docky
sudo apt-get update
sudo apt-get install plank
</code></pre>



<p class="wp-block-paragraph">Launch it by typing <code>plank</code> in a terminal or adding it to your startup applications.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Customization with Themes</h2>



<p class="wp-block-paragraph">You can tweak Plank&#8217;s appearance using community-made themes.</p>



<ol class="wp-block-list">
<li>Download a theme from repositories like:
<ul class="wp-block-list">
<li><a href="https://github.com/erikdubois/plankthemes">erikdubois/plankthemes</a></li>



<li><a href="https://github.com/x64Bits/plank-themes">x64Bits/plank-themes</a></li>
</ul>
</li>



<li>Copy the theme to:
<ul class="wp-block-list">
<li><code>~/.local/share/plank/themes</code> (per user)</li>



<li>or <code>/usr/share/plank/themes</code> (system-wide)</li>
</ul>
</li>



<li>Open Plank settings by holding <strong>Ctrl + right-click</strong> on the dock, then choose your theme.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">If you want a beautiful, no-frills dock for your Linux desktop, <strong>Plank</strong> nails the balance between functionality and simplicity. It just works — and looks good doing it.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Check out the source code or contribute at:<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/ricotz/plank">github.com/ricotz/plank</a></p>
<p>The post <a href="https://hamradio.my/2025/06/plank-the-minimalist-dock-for-a-clean-linux-desktop/">Plank: The Minimalist Dock for a Clean Linux Desktop</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/plank-the-minimalist-dock-for-a-clean-linux-desktop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Swap Partition vs Swap File on Linux: Everything You Need to Know</title>
		<link>https://hamradio.my/2025/05/swap-partition-vs-swap-file-on-linux-everything-you-need-to-know/</link>
					<comments>https://hamradio.my/2025/05/swap-partition-vs-swap-file-on-linux-everything-you-need-to-know/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 31 May 2025 07:52:08 +0000</pubDate>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[hibernation]]></category>
		<category><![CDATA[linuxblog]]></category>
		<category><![CDATA[linuxperformance]]></category>
		<category><![CDATA[linuxswap]]></category>
		<category><![CDATA[memorymanagement]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[swapfile]]></category>
		<category><![CDATA[swappartition]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[zram]]></category>
		<category><![CDATA[zswap]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7708</guid>

					<description><![CDATA[<p>When installing or managing a Linux system, one of the most debated topics is whether to use a swap partition or a swap file—or even use swap at all. In this post, we’ll go back to the origin of swap, explore why swap was needed, how modern systems use (or avoid) it, and the advantages [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/swap-partition-vs-swap-file-on-linux-everything-you-need-to-know/">Swap Partition vs Swap File on Linux: Everything You Need to Know</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading"></h3>



<p class="wp-block-paragraph">When installing or managing a Linux system, one of the most debated topics is whether to use a <strong>swap partition</strong> or a <strong>swap file</strong>—or even use swap at all.</p>



<p class="wp-block-paragraph">In this post, we’ll go back to the <strong>origin of swap</strong>, explore <strong>why swap was needed</strong>, how modern systems use (or avoid) it, and the <strong>advantages and disadvantages</strong> of both swap partitions and swap files.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What is Swap?</h2>



<p class="wp-block-paragraph"><strong>Swap</strong> is disk space used by the operating system when <strong>physical RAM is full</strong>. It acts as an extension of RAM to allow the system to offload memory pages that are <strong>not immediately needed</strong>, keeping critical applications running smoothly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d3.png" alt="🧓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The Origin of Swap</h2>



<p class="wp-block-paragraph">Swap originated in the early days of computing, when:</p>



<ul class="wp-block-list">
<li>RAM was expensive and limited.</li>



<li>Storage (although slower) was more plentiful.</li>



<li>Systems needed a way to “extend” memory to run more processes than RAM allowed.</li>
</ul>



<p class="wp-block-paragraph">Unix systems implemented <strong>swap space</strong> as a way to avoid running out of memory entirely—this idea carried over to Linux.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why You Might Still Need Swap Today</h2>



<p class="wp-block-paragraph">Even with modern hardware, swap still has roles:</p>



<ol class="wp-block-list">
<li><strong>Prevent Out of Memory (OOM) crashes</strong>: If your system runs out of RAM, swap provides a safety net.</li>



<li><strong>Hibernation (suspend-to-disk)</strong>: Requires swap equal to or greater than your RAM size.</li>



<li><strong>Memory balancing</strong>: Swap allows the kernel to move idle pages out of RAM, freeing up space for active applications or disk cache.</li>



<li><strong>Low-memory devices</strong>: On systems like Raspberry Pi or small VPS servers, swap helps compensate for limited RAM.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f937.png" alt="🤷" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why You Might Not Need Swap</h2>



<p class="wp-block-paragraph">On the other hand:</p>



<ol class="wp-block-list">
<li><strong>Lots of RAM</strong>: If your system rarely uses all available memory, swap may never be touched.</li>



<li><strong>SSD wear concerns</strong>: Excessive swapping can reduce SSD lifespan (though this is largely exaggerated with modern SSDs).</li>



<li><strong>Performance-critical applications</strong>: Swap is much slower than RAM. If you&#8217;re running performance-sensitive workloads, using swap can be a bottleneck.</li>



<li><strong>Modern alternatives</strong>: Features like <strong>zram</strong> and <strong>zswap</strong> offer compressed RAM swap spaces, reducing or eliminating the need for disk-based swap.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5c3.png" alt="🗃" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Swap Partition</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advantages</h3>



<ul class="wp-block-list">
<li><strong>Stability</strong>: Less prone to fragmentation.</li>



<li><strong>Predictable performance</strong>: Constant location on disk can be slightly faster on spinning HDDs.</li>



<li><strong>Used by default in many legacy systems</strong>.</li>



<li><strong>Can be used even if root filesystem becomes read-only</strong>.</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Disadvantages</h3>



<ul class="wp-block-list">
<li><strong>Inflexible size</strong>: Hard to resize without repartitioning.</li>



<li><strong>Occupies a dedicated partition</strong>: Not space-efficient, especially on SSDs.</li>



<li><strong>Inconvenient for virtualized or cloud instances</strong>.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Swap File</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advantages</h3>



<ul class="wp-block-list">
<li><strong>Flexible</strong>: Easy to resize or remove.</li>



<li><strong>No need for a separate partition</strong>.</li>



<li><strong>Supported by all modern Linux kernels (since 2.6)</strong>.</li>



<li><strong>Works well with most filesystems including ext4, XFS, Btrfs (with limitations)</strong>.</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Disadvantages</h3>



<ul class="wp-block-list">
<li><strong>Can be slower</strong> on heavily fragmented file systems.</li>



<li><strong>Doesn’t work with hibernation on some setups</strong>.</li>



<li><strong>Needs correct permissions and configuration</strong> (e.g., no copy-on-write or compression with Btrfs unless configured properly).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Performance Considerations</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Criteria</th><th>Swap Partition</th><th>Swap File</th></tr></thead><tbody><tr><td>Resize Flexibility</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hard</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Easy</td></tr><tr><td>Setup Complexity</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Medium</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Easy</td></tr><tr><td>Performance (HDD)</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Slightly better</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Slightly worse</td></tr><tr><td>Performance (SSD)</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2696.png" alt="⚖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Similar</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2696.png" alt="⚖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Similar</td></tr><tr><td>Works with Hibernate</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Yes</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Depends on setup</td></tr><tr><td>Dynamic Management</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Manual</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resizable on-the-fly</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> When to Use What?</h2>



<h3 class="wp-block-heading">Use a <strong>Swap Partition</strong> if:</h3>



<ul class="wp-block-list">
<li>You’re setting up a traditional desktop or dual-boot Linux system.</li>



<li>You plan to use <strong>hibernation</strong> reliably.</li>



<li>You prefer separating system components into strict partitions.</li>
</ul>



<h3 class="wp-block-heading">Use a <strong>Swap File</strong> if:</h3>



<ul class="wp-block-list">
<li>You’re on a <strong>modern system</strong> with lots of RAM and SSD.</li>



<li>You want to add swap after install easily.</li>



<li>You’re using <strong>cloud or VPS environments</strong> with flexible resources.</li>



<li>You don’t plan to use hibernation.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bonus: zram and zswap</h2>



<p class="wp-block-paragraph">Modern Linux kernels support <strong>zram</strong> and <strong>zswap</strong>, which compress memory pages before swapping to disk:</p>



<ul class="wp-block-list">
<li><strong>zram</strong> creates a compressed RAM-based block device as swap.</li>



<li><strong>zswap</strong> is a compressed cache for swap pages before writing to disk.</li>
</ul>



<p class="wp-block-paragraph">These are great for <strong>low-memory systems</strong> like Raspberry Pi or embedded devices.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h2>



<p class="wp-block-paragraph">Swap is not dead—it’s evolved.</p>



<p class="wp-block-paragraph">Whether you choose a <strong>swap partition</strong> or a <strong>swap file</strong> depends on your needs:</p>



<ul class="wp-block-list">
<li>Flexibility? Go for <strong>swap file</strong>.</li>



<li>Predictability and hibernation? Use a <strong>swap partition</strong>.</li>



<li>Want better performance with low RAM? Consider <strong>zram</strong>.</li>
</ul>



<p class="wp-block-paragraph">As always with Linux, the choice is yours—and that’s the power of open systems.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> TL;DR</h3>



<ul class="wp-block-list">
<li><strong>Swap partition</strong>: Reliable, but rigid.</li>



<li><strong>Swap file</strong>: Flexible and modern.</li>



<li><strong>No swap</strong>: Fine if you have lots of RAM and don’t use hibernation.</li>



<li><strong>zram/zswap</strong>: Smart memory compression alternatives.</li>
</ul>
<p>The post <a href="https://hamradio.my/2025/05/swap-partition-vs-swap-file-on-linux-everything-you-need-to-know/">Swap Partition vs Swap File on Linux: Everything You Need to Know</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/swap-partition-vs-swap-file-on-linux-everything-you-need-to-know/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exploring gLinux: Google’s In-House Debian-Based Operating System</title>
		<link>https://hamradio.my/2025/05/exploring-glinux-googles-in-house-debian-based-operating-system/</link>
					<comments>https://hamradio.my/2025/05/exploring-glinux-googles-in-house-debian-based-operating-system/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 31 May 2025 07:01:49 +0000</pubDate>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux desktop]]></category>
		<category><![CDATA[linux server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[customlinux]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[debianlinux]]></category>
		<category><![CDATA[developerlife]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[enterpriseit]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[glinux]]></category>
		<category><![CDATA[googletech]]></category>
		<category><![CDATA[linuxdesktop]]></category>
		<category><![CDATA[linuxdistro]]></category>
		<category><![CDATA[linuxos]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[softwareengineering]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[TechBlog]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7686</guid>

					<description><![CDATA[<p>In the world of tech giants, custom tools and platforms are often developed in-house to meet unique needs at scale. One such example is gLinux, Google’s internal Linux distribution, tailored specifically for the company&#8217;s engineering workflows and infrastructure. While it’s not available to the public, gLinux plays a critical role in powering the work of [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/exploring-glinux-googles-in-house-debian-based-operating-system/">Exploring gLinux: Google’s In-House Debian-Based Operating System</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">In the world of tech giants, custom tools and platforms are often developed in-house to meet unique needs at scale. One such example is <strong>gLinux</strong>, Google’s internal Linux distribution, tailored specifically for the company&#8217;s engineering workflows and infrastructure. While it’s not available to the public, gLinux plays a critical role in powering the work of thousands of Googlers worldwide.</p>



<p class="wp-block-paragraph">Let’s dive deep into the origin, evolution, advantages, and usage of gLinux to understand why Google made the switch and how it leverages the power of open-source Linux in its operations.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dc.png" alt="📜" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Origin and History</h2>



<p class="wp-block-paragraph">Before gLinux, Google engineers used a Linux distribution called <strong>Goobuntu</strong>—a customized version of <strong>Ubuntu LTS</strong> (Long Term Support). Goobuntu was maintained internally and closely followed Ubuntu&#8217;s upstream releases, offering the stability and security required for large-scale engineering work. However, it had some limitations, particularly in terms of <strong>release cycles</strong> and <strong>package control</strong>.</p>



<p class="wp-block-paragraph">In 2018, Google publicly revealed that it had begun transitioning from Goobuntu to a new internal distribution: <strong>gLinux</strong>. This new system was based on <strong>Debian Testing</strong>, chosen for its balance between cutting-edge features and system stability.</p>



<h3 class="wp-block-heading">Timeline of Events:</h3>



<ul class="wp-block-list">
<li><strong>Pre-2010s</strong>: Google internally adopts Ubuntu LTS and customizes it into Goobuntu.</li>



<li><strong>2012–2017</strong>: Goobuntu evolves with each new LTS release, but internal friction with Ubuntu&#8217;s release cadence begins to show.</li>



<li><strong>2018</strong>: Google announces its shift to gLinux, built on Debian Testing.</li>



<li><strong>Post-2018</strong>: gLinux becomes the standard desktop OS for Google engineers, with updates and packages managed through a custom internal build system.</li>
</ul>



<p class="wp-block-paragraph">This move also reflected Google’s broader support for the Debian community and allowed greater control over updates, security, and tooling.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why the Switch? Goobuntu vs. gLinux</h2>



<p class="wp-block-paragraph">Here are some of the core reasons why Google replaced Goobuntu with gLinux:</p>



<h3 class="wp-block-heading">1. <strong>More Predictable Upgrade Path</strong></h3>



<p class="wp-block-paragraph">Ubuntu’s release cycle meant that Google had to perform large-scale migrations every two years. Debian Testing, in contrast, allows for <strong>rolling updates</strong>, which are easier to manage incrementally.</p>



<h3 class="wp-block-heading">2. <strong>Greater Flexibility and Control</strong></h3>



<p class="wp-block-paragraph">Debian gives Google more control over its packages and dependencies. With gLinux, Google can apply custom patches, test packages internally, and push updates as needed—<strong>without waiting for upstream Ubuntu changes</strong>.</p>



<h3 class="wp-block-heading">3. <strong>Security and Compliance</strong></h3>



<p class="wp-block-paragraph">With a custom Debian base, gLinux could be tailored to meet strict internal security standards. This includes features like secure boot, sandboxed applications, and custom kernel modules.</p>



<h3 class="wp-block-heading">4. <strong>Alignment with Upstream Open Source</strong></h3>



<p class="wp-block-paragraph">Google has a long-standing relationship with open-source communities. Debian’s transparent development and packaging philosophy made it a better match for Google’s collaborative approach.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How gLinux Works Internally</h2>



<p class="wp-block-paragraph">While the exact details of gLinux’s architecture and infrastructure are proprietary, some high-level features are known:</p>



<ul class="wp-block-list">
<li><strong>Based on Debian Testing</strong>: It pulls from the Debian Testing branch, allowing for a balance of new features and reasonable stability.</li>



<li><strong>Custom Internal Tooling</strong>: Google uses its own build systems to manage, test, and deploy gLinux packages.</li>



<li><strong>Tight Integration with Google’s Workspace</strong>: Everything from developer tools to secure network access is configured and maintained through gLinux-specific policies.</li>



<li><strong>Support for Internal Software Development</strong>: gLinux is optimized for Google’s software stack, including tools for coding, code reviews, builds, and containerization.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advantages of gLinux</h2>



<p class="wp-block-paragraph">Here are some of the key benefits of gLinux as seen internally at Google:</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Enhanced Security</h3>



<p class="wp-block-paragraph">gLinux is hardened to comply with Google’s internal security policies. This includes kernel-level protections, patch management, encryption, and advanced access controls.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Faster and Flexible Updates</h3>



<p class="wp-block-paragraph">By using Debian Testing and an internal update mechanism, gLinux allows Google to push out security patches and software upgrades quickly without being tied to third-party timelines.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Optimized Developer Experience</h3>



<p class="wp-block-paragraph">gLinux comes preloaded with Google&#8217;s development environment tools, code review systems, and internal APIs—ready to go out of the box.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Modular and Customizable</h3>



<p class="wp-block-paragraph">Google engineers can request and deploy specific packages, and gLinux supports modular installations for different roles—whether it’s frontend development, backend infrastructure, or machine learning research.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f331.png" alt="🌱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Open Source Friendly</h3>



<p class="wp-block-paragraph">Because Debian is a fully community-driven project, Google benefits from a robust and widely supported ecosystem—while also contributing fixes and enhancements back to Debian in some cases.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Usage and Deployment</h2>



<p class="wp-block-paragraph">gLinux is used across Google by thousands of employees, particularly software engineers and infrastructure developers. It powers:</p>



<ul class="wp-block-list">
<li><strong>Workstations and laptops</strong> for developers.</li>



<li><strong>Build environments</strong> for large-scale codebases.</li>



<li><strong>Testing and automation frameworks</strong> for QA and CI/CD.</li>



<li><strong>Internal security scanning</strong> and policy enforcement systems.</li>
</ul>



<p class="wp-block-paragraph">It’s important to note that <strong>gLinux is not meant for production servers</strong>—Google uses other systems like <strong>gVisor</strong>, <strong>Borg</strong>, and containerized environments for running its services at scale.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Is gLinux Available to the Public?</h2>



<p class="wp-block-paragraph">No, <strong>gLinux is strictly an internal operating system</strong>. Unlike Ubuntu or Debian, you can&#8217;t download gLinux or install it on your own machine. It&#8217;s built to interface with Google’s internal tools and infrastructure, making it unsuitable for general use outside the company.</p>



<p class="wp-block-paragraph">That said, Google’s choice to base it on Debian means that some of their contributions may benefit the wider Debian community over time.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h2>



<p class="wp-block-paragraph">While gLinux remains hidden behind Google’s walls, it represents a powerful example of how large organizations can adapt open-source software to meet enterprise-scale demands. By choosing Debian over Ubuntu, Google prioritized long-term flexibility, internal control, and deeper open-source alignment.</p>



<p class="wp-block-paragraph">For Linux enthusiasts and enterprise IT architects, gLinux is a testament to the power of customizing open-source platforms for specific organizational needs. It might not be available to the public—but its influence on how Linux can scale in enterprise environments is undeniable.</p>
<p>The post <a href="https://hamradio.my/2025/05/exploring-glinux-googles-in-house-debian-based-operating-system/">Exploring gLinux: Google’s In-House Debian-Based Operating System</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/exploring-glinux-googles-in-house-debian-based-operating-system/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Essential Linux Commands Every System Administrator Should Know</title>
		<link>https://hamradio.my/2025/05/essential-linux-commands-every-system-administrator-should-know/</link>
					<comments>https://hamradio.my/2025/05/essential-linux-commands-every-system-administrator-should-know/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 31 May 2025 06:48:10 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free operating system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu server]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[infosec]]></category>
		<category><![CDATA[itadmin]]></category>
		<category><![CDATA[itops]]></category>
		<category><![CDATA[linuxadmin]]></category>
		<category><![CDATA[linuxbasics]]></category>
		<category><![CDATA[linuxcommands]]></category>
		<category><![CDATA[linuxserver]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[servermanagement]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[systemadministration]]></category>
		<category><![CDATA[systemmonitoring]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7668</guid>

					<description><![CDATA[<p>As a system administrator, mastering the command line is critical. Whether you&#8217;re maintaining servers, managing users, monitoring performance, or securing your system, knowing the right tools can make your job faster, easier, and more efficient. Here’s a comprehensive list of the most important Linux commands every sysadmin should know — organized by category, explained in [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/essential-linux-commands-every-system-administrator-should-know/">Essential Linux Commands Every System Administrator Should Know</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">As a system administrator, mastering the command line is critical. Whether you&#8217;re maintaining servers, managing users, monitoring performance, or securing your system, knowing the right tools can make your job faster, easier, and more efficient.</p>



<p class="wp-block-paragraph">Here’s a comprehensive list of the <strong>most important Linux commands</strong> every sysadmin should know — organized by category, explained in plain language, and ready to turn you into a command-line ninja <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f977.png" alt="🥷" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> System Monitoring &amp; Performance</h3>



<p class="wp-block-paragraph">Keeping your system healthy starts with knowing what’s going on behind the scenes.</p>



<ul class="wp-block-list">
<li><strong><code>top</code> / <code>htop</code></strong><br>View real-time system processes, CPU, and memory usage.<br><code>htop</code> is an enhanced version of <code>top</code> with a cleaner UI.</li>



<li><strong><code>uptime</code></strong><br>Shows how long the system has been running and the average load.</li>



<li><strong><code>vmstat</code></strong><br>Displays information about memory, processes, I/O, and CPU.</li>



<li><strong><code>iostat</code></strong><br>Useful for monitoring disk I/O stats and CPU load.</li>



<li><strong><code>free -h</code></strong><br>Human-readable memory usage summary (RAM + swap).</li>



<li><strong><code>sar</code></strong><br>Historical system activity reports — useful for spotting trends.</li>



<li><strong><code>ps aux</code></strong><br>List all running processes with their CPU and memory usage.</li>



<li><strong><code>lsof</code></strong><br>List open files. Great for checking what&#8217;s locking a file or port.</li>



<li><strong><code>strace</code></strong><br>Debugging tool to trace system calls and signals.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Filesystem &amp; Disk Usage</h3>



<p class="wp-block-paragraph">Disk space issues are common — be ready to investigate and clean up.</p>



<ul class="wp-block-list">
<li><strong><code>df -h</code></strong><br>Shows disk usage for all mounted filesystems in human-readable form.</li>



<li><strong><code>du -sh *</code></strong><br>Quickly estimate the size of directories/files in the current folder.</li>



<li><strong><code>lsblk</code></strong><br>Displays block devices and their mount points.</li>



<li><strong><code>mount</code> / <code>umount</code></strong><br>Mount or unmount filesystems.</li>



<li><strong><code>fdisk -l</code> / <code>parted -l</code></strong><br>Inspect disk partitions.</li>



<li><strong><code>blkid</code></strong><br>Shows UUIDs and labels of block devices — handy for <code>/etc/fstab</code>.</li>



<li><strong><code>find / -name filename</code></strong><br>Searches the entire system for a file.</li>



<li><strong><code>file</code></strong><br>Determines a file&#8217;s type — especially useful for unknown extensions.</li>



<li><strong><code>stat</code></strong><br>Displays detailed file metadata including timestamps and permissions.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d1-200d-1f4bb.png" alt="🧑‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> User &amp; Permission Management</h3>



<p class="wp-block-paragraph">Managing users and access rights is at the heart of system security.</p>



<ul class="wp-block-list">
<li><strong><code>adduser</code> / <code>useradd</code></strong><br>Create new users (note: <code>adduser</code> is more user-friendly).</li>



<li><strong><code>passwd</code></strong><br>Set or change a user’s password.</li>



<li><strong><code>usermod</code></strong><br>Modify a user’s attributes, like group or shell.</li>



<li><strong><code>deluser</code> / <code>userdel</code></strong><br>Remove users from the system.</li>



<li><strong><code>groupadd</code>, <code>groupdel</code>, <code>gpasswd</code></strong><br>Manage user groups.</li>



<li><strong><code>chmod</code></strong><br>Change file permissions (e.g. <code>chmod 755</code>).</li>



<li><strong><code>chown</code> / <code>chgrp</code></strong><br>Change file owner or group.</li>



<li><strong><code>id</code></strong><br>Show a user’s UID, GID, and group memberships.</li>



<li><strong><code>who</code>, <code>w</code>, <code>last</code></strong><br>Show active users and login history.</li>



<li><strong><code>sudo</code></strong><br>Run commands with elevated (root) privileges.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Networking</h3>



<p class="wp-block-paragraph">Networking is critical on any server. These tools help diagnose and configure network connections.</p>



<ul class="wp-block-list">
<li><strong><code>ip a</code> / <code>ip link</code></strong><br>Show all network interfaces and IP addresses.</li>



<li><strong><code>ip r</code></strong><br>View the routing table.</li>



<li><strong><code>ss -tuln</code></strong> / <strong><code>netstat -tuln</code></strong><br>Show open ports and listening services.</li>



<li><strong><code>ping</code> / <code>traceroute</code></strong><br>Test network connectivity and route paths.</li>



<li><strong><code>dig</code> / <code>nslookup</code></strong><br>Perform DNS lookups to debug name resolution.</li>



<li><strong><code>curl</code> / <code>wget</code></strong><br>Download files or make web/API requests from the command line.</li>



<li><strong><code>nmap</code></strong><br>Network scanner for discovering hosts and open ports.</li>



<li><strong><code>tcpdump</code></strong><br>Capture and inspect network packets.</li>



<li><strong><code>hostname</code></strong><br>View or set the system’s hostname.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Security &amp; Access Control</h3>



<p class="wp-block-paragraph">Security is non-negotiable. These commands help you lock things down.</p>



<ul class="wp-block-list">
<li><strong><code>ufw</code></strong> / <strong><code>iptables</code></strong><br>Configure and manage firewall rules.</li>



<li><strong><code>fail2ban-client</code></strong><br>Control Fail2Ban — protects against brute-force attacks.</li>



<li><strong><code>auditctl</code>, <code>ausearch</code></strong><br>View or search audit logs to monitor system access.</li>



<li><strong><code>getenforce</code>, <code>setenforce</code></strong><br>Manage SELinux modes.</li>



<li><strong><code>ssh</code> / <code>sshd</code></strong><br>Secure shell access and SSH server management.</li>



<li><strong><code>scp</code>, <code>rsync</code></strong><br>Securely copy files between systems.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Package Management</h3>



<p class="wp-block-paragraph">Installing and managing software is essential. Use the right tool based on your distro:</p>



<h4 class="wp-block-heading">Debian/Ubuntu</h4>



<ul class="wp-block-list">
<li><code>apt</code>, <code>dpkg</code>, <code>apt-cache</code></li>
</ul>



<h4 class="wp-block-heading">RedHat/CentOS</h4>



<ul class="wp-block-list">
<li><code>yum</code>, <code>dnf</code>, <code>rpm</code></li>
</ul>



<h4 class="wp-block-heading">Arch Linux</h4>



<ul class="wp-block-list">
<li><code>pacman</code></li>
</ul>



<h4 class="wp-block-heading">Universal</h4>



<ul class="wp-block-list">
<li><code>snap</code>, <code>flatpak</code></li>
</ul>



<p class="wp-block-paragraph">Examples:</p>



<pre class="wp-block-code"><code>apt update &amp;&amp; apt upgrade
dnf install nginx
pacman -S htop
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> System Maintenance &amp; Logs</h3>



<p class="wp-block-paragraph">Keep your system running smoothly by managing services and watching logs.</p>



<ul class="wp-block-list">
<li><strong><code>journalctl</code></strong><br>View <code>systemd</code> logs.</li>



<li><strong><code>dmesg</code></strong><br>Kernel ring buffer — shows hardware and boot messages.</li>



<li><strong><code>systemctl</code></strong><br>Manage services on <code>systemd</code> systems (start, stop, enable, etc.).</li>



<li><strong><code>service</code></strong><br>Older init-based service management.</li>



<li><strong><code>crontab -e</code></strong><br>Edit scheduled tasks (cron jobs).</li>



<li><strong><code>at</code></strong><br>Run one-off tasks at a specific time.</li>



<li><strong><code>logrotate</code></strong><br>Manages log file rotation to prevent disk overuse.</li>



<li><strong><code>shutdown</code>, <code>reboot</code></strong><br>Schedule or perform system reboots/shutdowns.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Backup &amp; Automation</h3>



<p class="wp-block-paragraph">Protect data and automate your tasks for efficiency.</p>



<ul class="wp-block-list">
<li><strong><code>rsync -avh</code></strong><br>Sync directories or backup data.</li>



<li><strong><code>tar -czf archive.tar.gz folder/</code></strong><br>Create compressed archive.</li>



<li><strong><code>scp user@host:file .</code></strong><br>Secure file copy over SSH.</li>



<li><strong><code>cron</code>, <code>anacron</code></strong><br>Automate repetitive tasks.</li>



<li><strong><code>bash</code> / <code>sh</code></strong><br>Write scripts to automate system administration tasks.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ce.png" alt="📎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bonus Tools &amp; Utilities</h3>



<ul class="wp-block-list">
<li><strong><code>tmux</code> / <code>screen</code></strong><br>Terminal multiplexers — resume sessions, split terminals.</li>



<li><strong><code>ncdu</code></strong><br>Disk usage visualizer. Much better than <code>du</code> for quick inspection.</li>



<li><strong><code>glances</code></strong><br>Real-time monitoring of CPU, RAM, disk, and more.</li>



<li><strong><code>nc</code> (netcat)</strong><br>Versatile networking tool — useful for debugging or testing.</li>



<li><strong><code>alias</code></strong><br>Create custom shortcuts for your most used commands.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h3>



<p class="wp-block-paragraph">These Linux commands are not just helpful — they’re the foundation of any good system administrator&#8217;s toolbox. Mastering them will give you confidence to manage, troubleshoot, and optimize Linux systems whether you&#8217;re working with a single server or an entire fleet of machines.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/05/essential-linux-commands-every-system-administrator-should-know/">Essential Linux Commands Every System Administrator Should Know</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/essential-linux-commands-every-system-administrator-should-know/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Understanding the Linux Boot Process: From Power On to Login</title>
		<link>https://hamradio.my/2025/05/understanding-the-linux-boot-process-from-power-on-to-login/</link>
					<comments>https://hamradio.my/2025/05/understanding-the-linux-boot-process-from-power-on-to-login/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 30 May 2025 15:02:16 +0000</pubDate>
				<category><![CDATA[archlinux]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[bios]]></category>
		<category><![CDATA[bootprocess]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[initramfs]]></category>
		<category><![CDATA[linuxboot]]></category>
		<category><![CDATA[linuxcommands]]></category>
		<category><![CDATA[linuxguide]]></category>
		<category><![CDATA[linuxkernel]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[penguinpower]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[TechBlog]]></category>
		<category><![CDATA[uefi]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7662</guid>

					<description><![CDATA[<p>Whether you&#8217;re a seasoned sysadmin or just diving into Linux, understanding the boot process is key to mastering how your system starts up. The Linux boot process is a fascinating journey that transforms powered-off hardware into a fully operational system. In this post, we&#8217;ll walk through the entire boot sequence, breaking down each stage with [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/understanding-the-linux-boot-process-from-power-on-to-login/">Understanding the Linux Boot Process: From Power On to Login</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">Whether you&#8217;re a seasoned sysadmin or just diving into Linux, understanding the boot process is key to mastering how your system starts up. The Linux boot process is a fascinating journey that transforms powered-off hardware into a fully operational system. In this post, we&#8217;ll walk through the entire boot sequence, breaking down each stage with technical clarity.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50c.png" alt="🔌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Stage 1: BIOS or UEFI – The System’s First Breath</h2>



<p class="wp-block-paragraph">The process begins the moment you press the power button.</p>



<h3 class="wp-block-heading">BIOS (Legacy Systems)</h3>



<ul class="wp-block-list">
<li><strong>POST (Power-On Self Test)</strong> is triggered to check RAM, CPU, keyboard, and basic hardware.</li>



<li>Searches for a bootable device by scanning the boot order (HDD, SSD, USB, etc.).</li>



<li>Once a bootable device is found, BIOS reads the <strong>Master Boot Record (MBR)</strong>, which contains the bootloader.</li>
</ul>



<h3 class="wp-block-heading">UEFI (Modern Systems)</h3>



<ul class="wp-block-list">
<li>Replaces BIOS with a more advanced firmware interface.</li>



<li>Reads the <strong>EFI System Partition (ESP)</strong>, which contains EFI applications like <code>GRUB.efi</code>.</li>



<li>Supports <strong>Secure Boot</strong>, GUID Partition Table (GPT), and faster booting.</li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Note:</strong> UEFI is now the standard for most modern hardware.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bd.png" alt="💽" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Stage 2: Bootloader – The Linux Gatekeeper</h2>



<p class="wp-block-paragraph">The bootloader is the program that loads and starts the Linux kernel.</p>



<h3 class="wp-block-heading">Common Bootloaders:</h3>



<ul class="wp-block-list">
<li><strong>GRUB (GRand Unified Bootloader)</strong> – Most common in Linux systems.</li>



<li><strong>systemd-boot</strong> – Lightweight bootloader for UEFI systems.</li>



<li><strong>LILO (older systems)</strong> – Largely deprecated.</li>
</ul>



<p class="wp-block-paragraph">The bootloader:</p>



<ul class="wp-block-list">
<li>Loads the selected <strong>kernel image</strong> (e.g., <code>/boot/vmlinuz-linux</code>).</li>



<li>Loads the <strong>initramfs/initrd</strong> – a temporary root filesystem used during early boot.</li>



<li>Passes control and parameters (e.g., root device path, kernel options) to the kernel.</li>
</ul>



<p class="wp-block-paragraph">Example of GRUB config:</p>



<pre class="wp-block-code"><code>linux /boot/vmlinuz-6.1.0 root=/dev/sda2 ro quiet splash
initrd /boot/initrd.img-6.1.0
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Stage 3: Kernel Initialization – The Heart of Linux</h2>



<p class="wp-block-paragraph">Now, the <strong>Linux kernel</strong> takes control.</p>



<h3 class="wp-block-heading">What the Kernel Does:</h3>



<ul class="wp-block-list">
<li>Sets up low-level system components: memory management, I/O scheduling, and CPU initialization.</li>



<li>Loads drivers for essential hardware (from initramfs).</li>



<li>Mounts the <strong>real root filesystem</strong> (e.g., from ext4, btrfs, XFS).</li>



<li>Starts the <strong><code>init</code> process</strong> (PID 1) – the first user-space program.</li>
</ul>



<p class="wp-block-paragraph">If anything goes wrong here (like missing root filesystem), you&#8217;ll see a <strong>kernel panic</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Stage 4: Init System – Orchestrating the System Startup</h2>



<p class="wp-block-paragraph">The init system is the &#8220;conductor&#8221; that starts all necessary services.</p>



<h3 class="wp-block-heading">Common Init Systems:</h3>



<ul class="wp-block-list">
<li><strong>systemd</strong> (default on most modern distros like Debian, Ubuntu, Fedora)</li>



<li><strong>SysVinit</strong> (traditional)</li>



<li><strong>OpenRC</strong> (used in Alpine, Gentoo)</li>
</ul>



<h3 class="wp-block-heading">If using <code>systemd</code>, it:</h3>



<ul class="wp-block-list">
<li>Reads <strong>unit files</strong> from <code>/etc/systemd/system/</code> and <code>/usr/lib/systemd/system/</code>.</li>



<li>Mounts local filesystems, activates swap, configures networking.</li>



<li>Starts system services like <code>sshd</code>, <code>NetworkManager</code>, <code>cron</code>, and more.</li>
</ul>



<p class="wp-block-paragraph">You can inspect boot performance using:</p>



<pre class="wp-block-code"><code>systemd-analyze
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Stage 5: Login Prompt – Ready for Action</h2>



<p class="wp-block-paragraph">Once all services are up and running:</p>



<ul class="wp-block-list">
<li><strong>CLI systems</strong>: <code>getty</code> spawns login prompts on virtual terminals (e.g., tty1–tty6).</li>



<li><strong>GUI systems</strong>: A <strong>Display Manager</strong> (GDM, LightDM, SDDM) launches, leading to your graphical desktop environment (GNOME, KDE, etc.).</li>
</ul>



<p class="wp-block-paragraph">After login, the system is fully operational, ready for your commands or applications.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5fa.png" alt="🗺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Visual Summary of the Linux Boot Flow</h2>



<pre class="wp-block-code"><code>&#91; Power On ]
     ↓
&#91; BIOS / UEFI ]
     ↓
&#91; Bootloader (GRUB/systemd-boot) ]
     ↓
&#91; Kernel + initramfs ]
     ↓
&#91; Init system (systemd, etc.) ]
     ↓
&#91; System Services + Targets ]
     ↓
&#91; Login Prompt / GUI ]
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bonus: Useful Commands to Explore Boot</h2>



<ul class="wp-block-list">
<li>View last boot duration: <code>systemd-analyze</code></li>



<li>See the breakdown of each service&#8217;s boot time: <code>systemd-analyze blame</code></li>



<li>Inspect boot logs: <code>journalctl -b</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">The Linux boot process may seem complex, but each stage is logically structured to ensure a flexible, powerful, and modular startup system. Whether you&#8217;re debugging a failed boot or optimizing your boot time, understanding this process equips you with the tools to handle your system like a pro.</p>



<p class="wp-block-paragraph">If you&#8217;re using Linux in embedded projects, servers, or even on low-power SBCs like Raspberry Pi, this knowledge becomes even more critical.</p>
<p>The post <a href="https://hamradio.my/2025/05/understanding-the-linux-boot-process-from-power-on-to-login/">Understanding the Linux Boot Process: From Power On to Login</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/understanding-the-linux-boot-process-from-power-on-to-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Story of Debian: From Hacker Roots to Global Impact</title>
		<link>https://hamradio.my/2025/05/the-story-of-debian-from-hacker-roots-to-global-impact/</link>
					<comments>https://hamradio.my/2025/05/the-story-of-debian-from-hacker-roots-to-global-impact/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Tue, 27 May 2025 05:56:59 +0000</pubDate>
				<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[ham radio]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source operating system]]></category>
		<category><![CDATA[AmateurRadio]]></category>
		<category><![CDATA[APRS]]></category>
		<category><![CDATA[debiancommunity]]></category>
		<category><![CDATA[debiandistro]]></category>
		<category><![CDATA[debianhamradio]]></category>
		<category><![CDATA[debianlinux]]></category>
		<category><![CDATA[DigitalModes]]></category>
		<category><![CDATA[fldigi]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[linuxdesktop]]></category>
		<category><![CDATA[linuxserver]]></category>
		<category><![CDATA[lora]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[packetradio]]></category>
		<category><![CDATA[RaspberryPi]]></category>
		<category><![CDATA[remotestation]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[WSJTX]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7632</guid>

					<description><![CDATA[<p>🌍 Introduction: What Makes Debian So Important? If you&#8217;re using Linux today — whether on a desktop, server, or embedded device — there&#8217;s a good chance the foundation of your system can be traced back to Debian. Debian is one of the oldest, most respected, and most influential GNU/Linux distributions ever created. It has quietly [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/the-story-of-debian-from-hacker-roots-to-global-impact/">The Story of Debian: From Hacker Roots to Global Impact</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Introduction: What Makes Debian So Important?</h2>



<p class="wp-block-paragraph">If you&#8217;re using Linux today — whether on a desktop, server, or embedded device — there&#8217;s a good chance the foundation of your system can be traced back to Debian. Debian is one of the oldest, most respected, and most influential GNU/Linux distributions ever created. It has quietly shaped the digital world around us — from powering large-scale web servers and scientific clusters to forming the basis of popular distributions like Ubuntu, Raspbian, and countless others.</p>



<p class="wp-block-paragraph">But Debian is more than just a technical achievement. It is a social, ethical, and political project — one rooted in the ideals of <strong>freedom, transparency, and community governance</strong>.</p>



<p class="wp-block-paragraph">This article takes a detailed journey through Debian&#8217;s origins, evolution, and its unique capabilities in desktop and server environments — and highlights why <strong>Debian is a perfect match for amateur radio operators</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3db.png" alt="🏛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The Origin of Debian: A Manifesto Becomes a Movement</h2>



<p class="wp-block-paragraph">In the early 1990s, the Linux kernel was still a new and evolving project. While Linus Torvalds was actively developing the kernel itself, various individuals and small groups were creating their own Linux distributions. These early distributions were often difficult to maintain, poorly documented, and inconsistent.</p>



<p class="wp-block-paragraph">Enter <strong>Ian Murdock</strong>, a young computer science student at Purdue University. On <strong>August 16, 1993</strong>, he released the <strong>Debian Manifesto</strong>, which laid out a bold vision: a completely free, open, and community-developed operating system that adhered to the values of the <strong>Free Software Foundation</strong>.</p>



<p class="wp-block-paragraph">He named it &#8220;Debian&#8221; — a portmanteau of his name and that of his then-girlfriend, Debra.</p>



<p class="wp-block-paragraph">From the beginning, Debian sought to be different:</p>



<ul class="wp-block-list">
<li>It would not be controlled by a single person or company.</li>



<li>It would emphasize openness, stability, and quality.</li>



<li>It would be built <strong>by volunteers</strong> and <strong>for the community</strong>.</li>
</ul>



<p class="wp-block-paragraph">Debian was not only a software project — it was a <strong>social contract</strong>, a <strong>movement</strong>, and a model for how free software could be built cooperatively.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dc.png" alt="📜" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Historical Milestones: Debian Through the Years</h2>



<h3 class="wp-block-heading">1993–1995: The Early Days</h3>



<p class="wp-block-paragraph">Debian 0.91 was the first version that gained traction, introducing the <code>.deb</code> package format and the <code>dpkg</code> package manager. From the start, Debian aimed to be modular, reliable, and secure.</p>



<h3 class="wp-block-heading">1996: The Birth of APT</h3>



<p class="wp-block-paragraph">One of Debian’s greatest innovations was the introduction of <strong>APT (Advanced Package Tool)</strong> — a front-end that made it easier to install, upgrade, and remove software while managing dependencies automatically. This was a huge leap over what other distributions offered at the time.</p>



<h3 class="wp-block-heading">Late 1990s: A Social and Ethical Framework</h3>



<p class="wp-block-paragraph">Debian formalized its values through documents like:</p>



<ul class="wp-block-list">
<li><strong>The Debian Social Contract</strong></li>



<li><strong>The Debian Free Software Guidelines (DFSG)</strong></li>



<li><strong>The Debian Constitution</strong></li>
</ul>



<p class="wp-block-paragraph">These were radical moves. Debian became the <strong>first Linux distribution to explicitly define its governance</strong>, its commitment to users, and its ethical foundations.</p>



<h3 class="wp-block-heading">2000s–2010s: Becoming a Foundation for the World</h3>



<p class="wp-block-paragraph">Debian’s popularity surged. It became the base for:</p>



<ul class="wp-block-list">
<li><strong>Ubuntu</strong></li>



<li><strong>Raspbian (now Raspberry Pi OS)</strong></li>



<li><strong>Kali Linux</strong></li>



<li><strong>Linux Mint (Debian Edition)</strong></li>



<li>Countless server deployments in enterprises and universities</li>
</ul>



<p class="wp-block-paragraph">Debian evolved to support multiple CPU architectures, introduced <code>udev</code> for dynamic device management, and transitioned to <code>systemd</code> in later years for improved boot and service handling.</p>



<p class="wp-block-paragraph">Today, <strong>Debian is developed by over 1,000 active developers</strong>, with tens of thousands of contributors and mirror servers in almost every country on Earth.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Debian on the Desktop: A Powerhouse of Possibility</h2>



<p class="wp-block-paragraph">Although Debian has a reputation as a server distribution, it is <strong>equally capable as a desktop system</strong>, especially for users who value <strong>stability, freedom, and control</strong>.</p>



<h3 class="wp-block-heading">Why Choose Debian for Desktop Computing?</h3>



<h4 class="wp-block-heading">1. <strong>Unmatched Stability</strong></h4>



<p class="wp-block-paragraph">Debian’s &#8220;Stable&#8221; release is tested for months, sometimes years, before finalization. This makes it ideal for users who prioritize <strong>reliability over bleeding-edge features</strong>.</p>



<h4 class="wp-block-heading">2. <strong>Custom Desktop Environments</strong></h4>



<p class="wp-block-paragraph">Whether you prefer <strong>GNOME, KDE Plasma, XFCE, LXQt, Mate, Cinnamon</strong>, or even minimalist setups like <strong>i3wm</strong>, Debian allows full flexibility during installation.</p>



<h4 class="wp-block-heading">3. <strong>Freedom From Bloatware</strong></h4>



<p class="wp-block-paragraph">Unlike commercial operating systems that come pre-loaded with unnecessary software and background tracking, Debian installs only what <strong>you choose</strong> — nothing more.</p>



<h4 class="wp-block-heading">4. <strong>Vast Software Library</strong></h4>



<p class="wp-block-paragraph">With more than <strong>59,000 precompiled packages</strong>, almost every piece of software you could need is available directly via <code>apt</code>. From graphic design and media editing to office work and development tools — Debian has it all.</p>



<h4 class="wp-block-heading">5. <strong>Privacy and Security</strong></h4>



<p class="wp-block-paragraph">Debian has <strong>no telemetry</strong>. It does not collect or transmit user data, ever. Plus, it receives <strong>security updates</strong> from a dedicated security team that supports each Stable release for five years or more.</p>



<h4 class="wp-block-heading">6. <strong>Perfect for Developers and Hackers</strong></h4>



<p class="wp-block-paragraph">Debian is an ideal workstation for programmers, sysadmins, researchers, and makers. It supports development tools in C, Python, Rust, Go, Java, and more — all easily installable through the package manager.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Debian as a Server: The Gold Standard of Stability</h2>



<p class="wp-block-paragraph">When it comes to deploying mission-critical applications, few operating systems are as trusted as Debian.</p>



<h3 class="wp-block-heading">Why Debian Dominates Server Rooms</h3>



<h4 class="wp-block-heading">1. <strong>Long-Term Stability</strong></h4>



<p class="wp-block-paragraph">Debian&#8217;s conservative release cycle ensures that servers can run for <strong>years without interruption</strong>, even through major upgrades.</p>



<h4 class="wp-block-heading">2. <strong>Excellent Security Practices</strong></h4>



<p class="wp-block-paragraph">Debian takes security seriously. With signed packages, trusted repositories, and an active security team, administrators can sleep better knowing their systems are protected.</p>



<h4 class="wp-block-heading">3. <strong>Universal Hardware Support</strong></h4>



<p class="wp-block-paragraph">From Raspberry Pis to enterprise-grade x86 servers, from old legacy boxes to modern ARM64 devices — Debian supports them all.</p>



<h4 class="wp-block-heading">4. <strong>Container and Virtualization Ready</strong></h4>



<p class="wp-block-paragraph">Debian is the default base image for <strong>Docker containers</strong>, is heavily used in <strong>cloud infrastructure</strong>, and runs perfectly on <strong>KVM</strong>, <strong>Xen</strong>, <strong>LXC</strong>, and <strong>VMware</strong>.</p>



<h4 class="wp-block-heading">5. <strong>Flexible Roles</strong></h4>



<p class="wp-block-paragraph">Debian can easily be configured as:</p>



<ul class="wp-block-list">
<li>Web server (Apache, NGINX)</li>



<li>Mail server (Postfix, Dovecot)</li>



<li>DNS server (BIND, Unbound)</li>



<li>Database server (PostgreSQL, MySQL, MariaDB)</li>



<li>File server (Samba, NFS)</li>



<li>VPN (WireGuard, OpenVPN)</li>
</ul>



<h4 class="wp-block-heading">6. <strong>Efficient Resource Usage</strong></h4>



<p class="wp-block-paragraph">Without bloated GUIs or unnecessary background services, Debian performs <strong>faster and lighter</strong> than most alternatives. It’s ideal for headless systems and energy-efficient servers.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4fb.png" alt="📻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Debian for Amateur Radio Operators: A Perfect Match</h2>



<h3 class="wp-block-heading">How Debian Enhances Ham Radio Operations</h3>



<h4 class="wp-block-heading">1. <strong>Wide Selection of Ham Software</strong></h4>



<p class="wp-block-paragraph">Debian’s repository includes a treasure trove of amateur radio tools:</p>



<ul class="wp-block-list">
<li><strong>AX.25 and APRS</strong>: <code>ax25-tools</code>, <code>direwolf</code>, <code>xastir</code>, <code>aprx</code></li>



<li><strong>Digital Modes</strong>: <code>flrig</code>, <code>fldigi</code>, <code>wsjtx</code>, <code>js8call</code>, <code>qsstv</code></li>



<li><strong>Logging and Contesting</strong>: <code>tlf</code>, <code>xlog</code>, <code>cqrlog</code></li>



<li><strong>Packet Radio and Winlink</strong>: <code>pat</code>, <code>linpac</code>, <code>soundmodem</code></li>



<li><strong>Satellite Tracking</strong>: <code>gpredict</code></li>
</ul>



<p class="wp-block-paragraph">No need to compile from source — just install with <code>apt</code>.</p>



<h4 class="wp-block-heading">2. <strong>Runs on Low-Power Devices</strong></h4>



<p class="wp-block-paragraph">Debian is lightweight and can run on Raspberry Pi, Odroid, or old laptops — perfect for <strong>portable stations, field days, and emergency communications</strong>.</p>



<h4 class="wp-block-heading">3. <strong>Custom Automation and Gateways</strong></h4>



<p class="wp-block-paragraph">You can build your own:</p>



<ul class="wp-block-list">
<li><strong>APRS iGate or Digipeater</strong></li>



<li><strong>LoRa gateways</strong></li>



<li><strong>Remote HF control stations</strong></li>



<li><strong>Telemetry collection systems</strong></li>
</ul>



<p class="wp-block-paragraph">With scripting and cron jobs, you can automate nearly everything.</p>



<h4 class="wp-block-heading">4. <strong>Stable Uptime for Remote Stations</strong></h4>



<p class="wp-block-paragraph">Need a node to run unattended in a rural area? Debian’s reputation for <strong>rock-solid uptime</strong> is exactly what hams need for off-grid repeaters, gateways, or remote logging setups.</p>



<h4 class="wp-block-heading">5. <strong>Hackable and Modular</strong></h4>



<p class="wp-block-paragraph">Debian doesn’t get in your way. You can build exactly the shack system you want — and even write your own software, drivers, or tools using Python, Bash, or C.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion: Why Debian Should Be Your OS of Choice</h2>



<p class="wp-block-paragraph">Whether you&#8217;re a sysadmin, hobbyist, student, ham radio operator, or casual Linux user, Debian has something for you.</p>



<ul class="wp-block-list">
<li>It’s <strong>ethically grounded</strong>, built by a <strong>global community</strong>, and <strong>entirely free</strong>.</li>



<li>It powers <strong>desktops</strong>, <strong>laptops</strong>, <strong>servers</strong>, <strong>cloud platforms</strong>, and <strong>IoT devices</strong> with equal confidence.</li>



<li>It respects your <strong>freedom</strong>, your <strong>time</strong>, and your <strong>intelligence</strong>.</li>



<li>And for the amateur radio community, it is the perfect companion in the shack.</li>
</ul>



<p class="wp-block-paragraph">If you haven’t tried Debian yet, now’s the time. Download the ISO, write it to a USB drive, and join the movement that’s been quietly powering the internet, science, and innovation for over <strong>30 years</strong>.</p>



<p class="wp-block-paragraph"><strong>Debian isn’t just a Linux distro. It’s the soul of free software.</strong></p>
<p>The post <a href="https://hamradio.my/2025/05/the-story-of-debian-from-hacker-roots-to-global-impact/">The Story of Debian: From Hacker Roots to Global Impact</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/the-story-of-debian-from-hacker-roots-to-global-impact/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DockFlare: Securely Expose Docker Services with Cloudflare Tunnels</title>
		<link>https://hamradio.my/2025/05/dockflare-securely-expose-docker-services-with-cloudflare-tunnels/</link>
					<comments>https://hamradio.my/2025/05/dockflare-securely-expose-docker-services-with-cloudflare-tunnels/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Fri, 23 May 2025 06:55:38 +0000</pubDate>
				<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[cloudflare tunnel]]></category>
		<category><![CDATA[containerization]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[apigateway]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[cloudflareaccess]]></category>
		<category><![CDATA[cloudflaretunnel]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercompose]]></category>
		<category><![CDATA[dockflare]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[networksecurity]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[reverseproxy]]></category>
		<category><![CDATA[securehosting]]></category>
		<category><![CDATA[securewebapps]]></category>
		<category><![CDATA[selfhostedapps]]></category>
		<category><![CDATA[selfhosting]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[tunneling]]></category>
		<category><![CDATA[webhosting]]></category>
		<category><![CDATA[zerotrust]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7540</guid>

					<description><![CDATA[<p>🌟 Introduction: What Is DockFlare? Self-hosting applications has become increasingly popular among developers, tech enthusiasts, and homelabbers. However, securely exposing internal services to the internet is often a complicated task. It involves: This is where DockFlare comes in. DockFlare is a lightweight, self-hosted Cloudflare Tunnel automation tool for Docker users. It simplifies the process of [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/dockflare-securely-expose-docker-services-with-cloudflare-tunnels/">DockFlare: Securely Expose Docker Services with Cloudflare Tunnels</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="h-introduction-what-is-dockflare"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f31f.png" alt="🌟" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Introduction: What Is DockFlare?</h2>



<p class="wp-block-paragraph">Self-hosting applications has become increasingly popular among developers, tech enthusiasts, and homelabbers. However, securely exposing internal services to the internet is often a complicated task. It involves:</p>



<ul class="wp-block-list">
<li>Opening firewall ports</li>



<li>Dealing with dynamic IPs</li>



<li>Managing TLS certificates</li>



<li>Handling reverse proxies</li>



<li>Setting up access control</li>
</ul>



<p class="wp-block-paragraph">This is where <strong>DockFlare</strong> comes in.</p>



<p class="wp-block-paragraph"><strong>DockFlare</strong> is a lightweight, self-hosted <strong>Cloudflare Tunnel automation tool for Docker users</strong>. It simplifies the process of publishing your internal Docker services to the public internet through <strong>Cloudflare Tunnels</strong>, while providing optional <strong>Zero Trust security</strong>, DNS record automation, and a sleek web interface for real-time management.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-objectives-of-dockflare"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Objectives of DockFlare</h2>



<p class="wp-block-paragraph">DockFlare was created to solve three key problems:</p>



<ol class="wp-block-list">
<li><strong>Simplicity</strong>: Configure secure public access to your Docker containers using just labels—no reverse proxy, SSL setup, or manual DNS records needed.</li>



<li><strong>Security</strong>: Protect your services behind Cloudflare&#8217;s <strong>Zero Trust Access</strong>, supporting identity-based authentication (Google, GitHub, OTP, and more).</li>



<li><strong>Automation</strong>: Automatically create tunnels, subdomains, and security policies based on your Docker service metadata. No scripting. No re-deploys.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-why-use-dockflare"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Use DockFlare?</h2>



<p class="wp-block-paragraph">Here’s how DockFlare benefits its users:</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Quick Setup</strong>: Set up secure tunnels and expose services in seconds with Docker labels.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Zero Trust Security</strong>: Enforce authentication for any service using Cloudflare Access.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>No Public IP Required</strong>: No need to forward ports or expose your home IP—perfect for CG-NAT and mobile ISPs.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e1.png" alt="🛡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Safe by Default</strong>: TLS encryption, no open ports, and access rules built-in.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5a5.png" alt="🖥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>User-Friendly UI</strong>: Visualize tunnels, view logs, and manage configurations in a web dashboard.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>DevOps Ready</strong>: Works seamlessly in CI/CD pipelines or home labs.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-how-to-install-dockflare"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How to Install DockFlare</h2>



<h3 class="wp-block-heading" id="h-requirements"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Requirements</h3>



<ul class="wp-block-list">
<li>Docker and Docker Compose</li>



<li>A Cloudflare account</li>



<li>A domain connected to Cloudflare</li>



<li>A Cloudflare API Token with:
<ul class="wp-block-list">
<li>Zone DNS edit</li>



<li>Zero Trust policy management</li>



<li>Tunnel management</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading" id="h-step-1-create-your-project-directory"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Create Your Project Directory</h3>



<pre class="wp-block-code"><code>mkdir dockflare &amp;&amp; cd dockflare
</code></pre>



<h3 class="wp-block-heading" id="h-step-2-create-env-file"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Create <code>.env</code> File</h3>



<p class="wp-block-paragraph">Create a file named <code>.env</code> with the following contents:</p>



<pre class="wp-block-code"><code>CLOUDFLARE_API_TOKEN=your_token_here
CLOUDFLARE_ACCOUNT_ID=your_account_id
CLOUDFLARE_ZONE_ID=your_zone_id
TZ=Asia/Kuala_Lumpur
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Keep this file private!</p>
</blockquote>



<h3 class="wp-block-heading" id="h-step-3-create-docker-compose-yml"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f433.png" alt="🐳" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Create <code>docker-compose.yml</code></h3>



<pre class="wp-block-code"><code>version: '3.8'

services:
  dockflare:
    image: alplat/dockflare:stable
    container_name: dockflare
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "5000:5000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - dockflare_data:/app/data
    labels:
      - cloudflare.tunnel.enable=true
      - cloudflare.tunnel.hostname=dockflare.yourdomain.com
      - cloudflare.tunnel.service=http://dockflare:5000

volumes:
  dockflare_data:
</code></pre>



<h3 class="wp-block-heading" id="h-step-4-deploy-dockflare"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Deploy DockFlare</h3>



<pre class="wp-block-code"><code>docker compose up -d
</code></pre>



<p class="wp-block-paragraph">Access the UI: <a href="http://localhost:5000/">http://localhost:5000</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-exposing-a-docker-service"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Exposing a Docker Service</h2>



<p class="wp-block-paragraph">Here’s an example of exposing a service like <code>myapp</code> running on port 8080:</p>



<pre class="wp-block-code"><code>services:
  myapp:
    image: myapp:latest
    labels:
      cloudflare.tunnel.enable: "true"
      cloudflare.tunnel.hostname: "app.yourdomain.com"
      cloudflare.tunnel.service: "http://myapp:8080"
      cloudflare.tunnel.access.policy: "authenticate"
      cloudflare.tunnel.access.allowed_idps: "your-idp-uuid"
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> This will automatically:</p>



<ul class="wp-block-list">
<li>Create a Cloudflare Tunnel</li>



<li>Point your subdomain to it</li>



<li>Enforce secure login</li>
</ul>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-add-non-docker-services"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Add Non-Docker Services</h2>



<p class="wp-block-paragraph">Want to expose your home router or NAS?</p>



<ol class="wp-block-list">
<li>Go to DockFlare UI.</li>



<li>Click <strong>&#8220;Add Hostname&#8221;</strong>.</li>



<li>Enter:
<ul class="wp-block-list">
<li>Hostname (e.g., nas.yourdomain.com)</li>



<li>Internal IP/port</li>



<li>Access policy (bypass/authenticate)</li>
</ul>
</li>



<li>Done!</li>
</ol>



<p class="wp-block-paragraph">This works for <strong>any service</strong>, not just Docker.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-configuring-zero-trust-access"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Configuring Zero Trust Access</h2>



<p class="wp-block-paragraph">To secure your services:</p>



<ul class="wp-block-list">
<li>Go to <a href="https://dash.teams.cloudflare.com/">Cloudflare Zero Trust dashboard</a></li>



<li>Add an identity provider (Google, GitHub, etc.)</li>



<li>Use the IDP UUID in your container labels</li>



<li>Example:</li>
</ul>



<pre class="wp-block-code"><code>cloudflare.tunnel.access.policy: authenticate
cloudflare.tunnel.access.allowed_idps: abc123-def456
cloudflare.tunnel.access.session_duration: 8h
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-advanced-tips"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Advanced Tips</h2>



<ul class="wp-block-list">
<li>Expose multiple hostnames:<br><code>cloudflare.tunnel.hostname=api.domain.com,admin.domain.com</code></li>



<li>Customize session duration:<br><code>cloudflare.tunnel.access.session_duration=12h</code></li>



<li>Monitor logs via the web UI or <code>docker logs dockflare</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-resources"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resources</h2>



<ul class="wp-block-list">
<li>GitHub: <a href="https://github.com/ChrispyBacon-dev/DockFlare">ChrispyBacon-dev/DockFlare</a></li>



<li>Docker Compose Docs: <a href="https://docs.docker.com/compose/">docker.com/compose</a></li>



<li>Cloudflare Tunnels Guide: <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/">developers.cloudflare.com</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusion"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c1.png" alt="🏁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h2>



<p class="wp-block-paragraph">DockFlare is a game-changer for developers, sysadmins, and homelabbers who want an easy, secure, and automated way to expose their applications to the web. With support for Cloudflare Tunnels, Zero Trust Access, DNS automation, and a clean UI—it&#8217;s the only tool you&#8217;ll need to publish your services safely.</p>



<p class="wp-block-paragraph">No more port forwarding. No more SSL headaches.</p>



<p class="wp-block-paragraph"><strong>Just Docker + DockFlare + Cloudflare = Done. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong></p>
<p>The post <a href="https://hamradio.my/2025/05/dockflare-securely-expose-docker-services-with-cloudflare-tunnels/">DockFlare: Securely Expose Docker Services with Cloudflare Tunnels</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/dockflare-securely-expose-docker-services-with-cloudflare-tunnels/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Understanding Network Time Protocol (NTP), Atomic Clocks, and GPS: How Precise Timekeeping Powers the Modern World</title>
		<link>https://hamradio.my/2025/05/understanding-network-time-protocol-ntp-atomic-clocks-and-gps-how-precise-timekeeping-powers-the-modern-world/</link>
					<comments>https://hamradio.my/2025/05/understanding-network-time-protocol-ntp-atomic-clocks-and-gps-how-precise-timekeeping-powers-the-modern-world/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Thu, 22 May 2025 07:40:08 +0000</pubDate>
				<category><![CDATA[network time protocol]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[Time Synchronization]]></category>
		<category><![CDATA[atomicclock]]></category>
		<category><![CDATA[chrony]]></category>
		<category><![CDATA[DIYtech]]></category>
		<category><![CDATA[embeddedlinux]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[gpsd]]></category>
		<category><![CDATA[hamradio]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MakerProject]]></category>
		<category><![CDATA[networktime]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[openhardware]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[pps]]></category>
		<category><![CDATA[preciseclock]]></category>
		<category><![CDATA[RaspberryPi]]></category>
		<category><![CDATA[stratum1]]></category>
		<category><![CDATA[TechBlog]]></category>
		<category><![CDATA[timeserver]]></category>
		<category><![CDATA[timesync]]></category>
		<category><![CDATA[timesynchronization]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7404</guid>

					<description><![CDATA[<p>In the digital age, accurate timekeeping is more critical than ever. From ensuring data consistency across global servers to enabling GPS navigation and military operations, the precision of our clocks underpins modern infrastructure. This post explores how Network Time Protocol (NTP), atomic clocks, and the Global Positioning System (GPS) work together to synchronize time around [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/understanding-network-time-protocol-ntp-atomic-clocks-and-gps-how-precise-timekeeping-powers-the-modern-world/">Understanding Network Time Protocol (NTP), Atomic Clocks, and GPS: How Precise Timekeeping Powers the Modern World</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">In the digital age, <strong>accurate timekeeping</strong> is more critical than ever. From ensuring data consistency across global servers to enabling GPS navigation and military operations, the precision of our clocks underpins modern infrastructure. This post explores how <strong>Network Time Protocol (NTP)</strong>, <strong>atomic clocks</strong>, and the <strong>Global Positioning System (GPS)</strong> work together to synchronize time around the world—and what <strong>stratum levels</strong> really mean in timekeeping hierarchy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-what-is-network-time-protocol-ntp"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f552.png" alt="🕒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is Network Time Protocol (NTP)?</h2>



<p class="wp-block-paragraph"><strong>NTP (Network Time Protocol)</strong> is a protocol used to synchronize the clocks of computers and devices over a network. It allows systems to keep time within milliseconds of Coordinated Universal Time (UTC), which is the global time standard.</p>



<p class="wp-block-paragraph">NTP works using a hierarchical structure of <strong>stratum levels</strong>, with each level representing the &#8220;distance&#8221; from the reference clock (usually an atomic clock or GPS-based source).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-how-ntp-works"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4f6.png" alt="📶" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How NTP Works</h2>



<p class="wp-block-paragraph">Here’s a simplified overview of the process:</p>



<ol class="wp-block-list">
<li>A client computer sends a request to an NTP server.</li>



<li>The NTP server responds with the current time along with information about when the request was received and replied to.</li>



<li>The client calculates the <strong>round-trip delay</strong> and <strong>clock offset</strong>.</li>



<li>The local clock is adjusted accordingly, either gradually or immediately.</li>
</ol>



<p class="wp-block-paragraph">This process often repeats at regular intervals to maintain synchronization.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-understanding-ntp-stratum-levels"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Understanding NTP Stratum Levels</h2>



<p class="wp-block-paragraph">NTP servers are organized into <strong>strata</strong> based on how close they are to the original time source:</p>



<ul class="wp-block-list">
<li><strong>Stratum 0</strong>: These are the <strong>reference clocks</strong>—usually <strong>atomic clocks</strong>, <strong>GPS receivers</strong>, or <strong>radio clocks</strong>. They don’t connect directly to the internet.</li>



<li><strong>Stratum 1</strong>: Servers directly connected to stratum 0 devices. These are often publicly available NTP servers and offer highly accurate time.</li>



<li><strong>Stratum 2</strong>: Servers that sync with stratum 1 servers. Most users rely on these.</li>



<li><strong>Stratum 3–15</strong>: Each additional level syncs from the level above, with increasing latency and reduced accuracy.</li>



<li><strong>Stratum 16</strong>: Designated for unsynchronized servers or devices.</li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example:<br>If your Raspberry Pi is syncing from time.google.com (a stratum 1 server), your device becomes a <strong>stratum 2</strong> client.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-what-is-an-atomic-clock"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f1.png" alt="⏱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is an Atomic Clock?</h2>



<p class="wp-block-paragraph">An <strong>atomic clock</strong> is the most precise timekeeping device available. It uses the natural oscillations of atoms—commonly <strong>cesium-133</strong> or <strong>rubidium</strong>—as a reference.</p>



<h3 class="wp-block-heading" id="h-key-characteristics">Key Characteristics:</h3>



<ul class="wp-block-list">
<li><strong>Accuracy</strong>: Can measure time with precision better than 1 second in millions of years.</li>



<li><strong>Stability</strong>: Remains extremely consistent over long periods.</li>



<li><strong>Use Cases</strong>: GPS satellites, NTP stratum 0 devices, scientific labs, telecom networks.</li>
</ul>



<p class="wp-block-paragraph">The international definition of one second is based on the radiation cycles of cesium-133:<br><strong>9,192,631,770 transitions = 1 second</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-how-gps-provides-accurate-time"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6f0.png" alt="🛰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How GPS Provides Accurate Time</h2>



<p class="wp-block-paragraph">The <strong>Global Positioning System (GPS)</strong> is not just for navigation—it’s also a <strong>precise time distribution network</strong>. Each GPS satellite contains multiple atomic clocks. When your GPS receiver locks onto satellites, it can:</p>



<ul class="wp-block-list">
<li>Determine location using <strong>trilateration</strong></li>



<li>Calculate the <strong>exact time</strong> from satellite signals</li>
</ul>



<h3 class="wp-block-heading" id="h-gps-time-vs-utc">GPS Time vs UTC:</h3>



<ul class="wp-block-list">
<li>GPS time started in 1980 and does <strong>not account for leap seconds</strong>, unlike UTC.</li>



<li>GPS receivers convert GPS time to UTC using data in the satellite’s almanac.</li>
</ul>



<p class="wp-block-paragraph">For time servers, GPS receivers act as <strong>Stratum 0 sources</strong>, making GPS-based NTP servers (Stratum 1) popular for time-critical systems.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-real-world-applications"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Real-World Applications</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Field</th><th>Application</th></tr></thead><tbody><tr><td><strong>Telecom</strong></td><td>4G/5G networks use NTP or PTP (Precision Time Protocol) for synchronization.</td></tr><tr><td><strong>Military</strong></td><td>GPS-based timing for secure communications, missile launches, and coordination.</td></tr><tr><td><strong>Finance</strong></td><td>Timestamps for trades and transactions require sub-millisecond accuracy.</td></tr><tr><td><strong>IT/Cloud</strong></td><td>Data centers rely on NTP for distributed logs, certificates, and system clocks.</td></tr><tr><td><strong>Ham Radio</strong></td><td>Tools like WSJT-X, FT8, and APRS depend on accurate system clocks.</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-when-accuracy-matters"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26d3.png" alt="⛓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> When Accuracy Matters</h2>



<p class="wp-block-paragraph">A tiny time drift can cause:</p>



<ul class="wp-block-list">
<li><strong>Log mismatch</strong> in security systems</li>



<li><strong>Transaction failures</strong> in banking</li>



<li><strong>Packet loss or desync</strong> in VoIP and online gaming</li>



<li><strong>Routing issues</strong> in network infrastructure</li>
</ul>



<p class="wp-block-paragraph">Thus, reliable NTP configuration, ideally syncing from multiple stratum 1 servers or running your own GPS-based server, is best practice for critical systems.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-"></h2>



<h2 class="wp-block-heading" id="h-summary"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cd.png" alt="📍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Summary</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Component</th><th>Role</th></tr></thead><tbody><tr><td><strong>Atomic Clock</strong></td><td>Master reference for defining the second</td></tr><tr><td><strong>GPS</strong></td><td>Delivers accurate time from satellites to Earth</td></tr><tr><td><strong>NTP</strong></td><td>Protocol to synchronize clocks across networks</td></tr><tr><td><strong>Stratum Level</strong></td><td>Indicates distance from reference clock source</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Together, atomic clocks, GPS, and NTP form a <strong>robust global timekeeping system</strong> that powers everything from Google’s servers to battlefield operations and your APRS messages.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Build Your Own Stratum 1 NTP Server (Raspberry Pi + GPS + Chrony)</h2>



<p class="wp-block-paragraph">Creating your own <strong>Stratum 1 NTP server</strong> is a rewarding project, especially for ham radio operators, makers, and sysadmins who want reliable, low-latency timekeeping without relying on the internet.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What You Need:</h3>



<ul class="wp-block-list">
<li>Raspberry Pi (any model with GPIO, preferably Pi 3/4/5)</li>



<li>GPS module with <strong>PPS (Pulse Per Second)</strong> output (e.g. u-blox NEO-6M or NEO-M8N)</li>



<li>Serial connection to GPS (UART)</li>



<li>Internet for installation (optional afterward)</li>



<li>Linux with <code>chrony</code>, <code>gpsd</code>, and PPS support</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Hardware Setup</h3>



<ol class="wp-block-list">
<li>Connect the <strong>GPS module</strong>:
<ul class="wp-block-list">
<li><strong>TX (GPS)</strong> to <strong>GPIO 15 (RXD)</strong> on the Pi</li>



<li><strong>PPS pin</strong> to <strong>GPIO 18 (Pin 12)</strong></li>



<li><strong>VCC and GND</strong> appropriately</li>
</ul>
</li>



<li>Enable UART and PPS on the Pi: <code>sudo raspi-config</code>
<ul class="wp-block-list">
<li>Interface Options → Enable Serial (disable console over serial, enable hardware UART)</li>



<li>Reboot when prompted.</li>
</ul>
</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Install Required Packages</h3>



<pre class="wp-block-code"><code>sudo apt update
sudo apt install gpsd gpsd-clients chrony pps-tools
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Enable and Test PPS</h3>



<ol class="wp-block-list">
<li>Add the PPS overlay:</li>
</ol>



<p class="wp-block-paragraph">Edit <code>/boot/config.txt</code> and add:</p>



<pre class="wp-block-code"><code>dtoverlay=pps-gpio,gpiopin=18
</code></pre>



<ol start="2" class="wp-block-list">
<li>Reboot:</li>
</ol>



<pre class="wp-block-code"><code>sudo reboot
</code></pre>



<ol start="3" class="wp-block-list">
<li>Check if <code>/dev/pps0</code> appears:</li>
</ol>



<pre class="wp-block-code"><code>ls -l /dev/pps*
</code></pre>



<ol start="4" class="wp-block-list">
<li>Test PPS signal:</li>
</ol>



<pre class="wp-block-code"><code>sudo ppstest /dev/pps0
</code></pre>



<p class="wp-block-paragraph">You should see output like:</p>



<pre class="wp-block-code"><code>source 0 - assert 1716165796.000000000, sequence: 1234 - clear 1716165796.000001234
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e1.png" alt="📡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Configure GPSD</h3>



<p class="wp-block-paragraph">Edit <code>/etc/default/gpsd</code>:</p>



<pre class="wp-block-code"><code>START_DAEMON="true"
DEVICES="/dev/serial0"
GPSD_OPTIONS="-n"
</code></pre>



<p class="wp-block-paragraph">Restart the service:</p>



<pre class="wp-block-code"><code>sudo systemctl restart gpsd
</code></pre>



<p class="wp-block-paragraph">Verify:</p>



<pre class="wp-block-code"><code>cgps -s
</code></pre>



<p class="wp-block-paragraph">You should see satellite data and GPS time.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f1.png" alt="⏱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 5: Configure Chrony for GPS + PPS</h3>



<p class="wp-block-paragraph">Edit <code>/etc/chrony/chrony.conf</code> and <strong>add these lines at the top</strong>:</p>



<pre class="wp-block-code"><code>refclock SHM 0 offset 0.5 delay 0.2 refid GPS
refclock PPS /dev/pps0 refid PPS lock GPS
</code></pre>



<p class="wp-block-paragraph">Also, comment out any existing <code>pool</code> or <code>server</code> lines if you want it to be completely standalone.</p>



<p class="wp-block-paragraph">Restart Chrony:</p>



<pre class="wp-block-code"><code>sudo systemctl restart chrony
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 6: Verify Chrony Status</h3>



<pre class="wp-block-code"><code>chronyc sources -v
</code></pre>



<p class="wp-block-paragraph">You should see entries like:</p>



<pre class="wp-block-code"><code>#x  Name/IP address            Stratum  Poll Reach  LastRx Last sample
===============================================================================
#?  GPS                          0       4   377     10     -4ns&#91;  +23ns] +/- 30us
#*  PPS                          0       4   377     9      -1ns&#91;   -5ns] +/- 0.1us
</code></pre>



<p class="wp-block-paragraph">The <code>*</code> next to PPS indicates it&#8217;s the preferred source.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">🖧 Optional: Share NTP on Your Network</h3>



<p class="wp-block-paragraph">Edit <code>/etc/chrony/chrony.conf</code> to allow LAN clients:</p>



<pre class="wp-block-code"><code>allow 192.168.1.0/24
</code></pre>



<p class="wp-block-paragraph">Replace with your local subnet. Restart Chrony to apply.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-"></h2>



<p class="wp-block-paragraph">This allows you to sync your entire home lab or shack with millisecond precision without depending on the internet.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/05/understanding-network-time-protocol-ntp-atomic-clocks-and-gps-how-precise-timekeeping-powers-the-modern-world/">Understanding Network Time Protocol (NTP), Atomic Clocks, and GPS: How Precise Timekeeping Powers the Modern World</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/understanding-network-time-protocol-ntp-atomic-clocks-and-gps-how-precise-timekeeping-powers-the-modern-world/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Set Up Chrony as a Local NTP Server Using Docker</title>
		<link>https://hamradio.my/2025/05/how-to-set-up-chrony-as-a-local-ntp-server-using-docker/</link>
					<comments>https://hamradio.my/2025/05/how-to-set-up-chrony-as-a-local-ntp-server-using-docker/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sun, 18 May 2025 14:28:00 +0000</pubDate>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[network time protocol]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[chrony]]></category>
		<category><![CDATA[chronyd]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[ham radio tools]]></category>
		<category><![CDATA[homelab]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[local network]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[system admin]]></category>
		<category><![CDATA[time server]]></category>
		<category><![CDATA[time sync]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7390</guid>

					<description><![CDATA[<p>In a local network where you want to keep your devices synchronized with accurate time, running a lightweight and efficient NTP server is essential. Chrony, a modern alternative to ntpd, is a great choice and in this guide, I’ll show you how to set it up inside a Docker container that fetches time from global [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/05/how-to-set-up-chrony-as-a-local-ntp-server-using-docker/">How to Set Up Chrony as a Local NTP Server Using Docker</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">In a local network where you want to keep your devices synchronized with accurate time, running a lightweight and efficient NTP server is essential. <strong>Chrony</strong>, a modern alternative to <code>ntpd</code>, is a great choice and in this guide, I’ll show you how to set it up inside a Docker container that fetches time from global sources and distributes it across your LAN.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-why-chrony"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Chrony?</h3>



<p class="wp-block-paragraph">Chrony is:</p>



<ul class="wp-block-list">
<li>More accurate than <code>ntpd</code> in many conditions (especially with intermittent connectivity)</li>



<li>Lightweight and easy to configure</li>



<li>Ideal for both clients and servers</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-what-you-ll-set-up"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f433.png" alt="🐳" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What You&#8217;ll Set Up</h3>



<ul class="wp-block-list">
<li>A <strong>Docker container</strong> running Chrony</li>



<li>Configured to <strong>sync with global NTP servers</strong></li>



<li>Act as a <strong>time server for your LAN</strong></li>



<li>With optional <strong>logging and control access</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-1-create-a-dockerfile-for-chrony"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Create a Dockerfile for Chrony</h2>



<p class="wp-block-paragraph">Start by creating a simple <code>Dockerfile</code> to build a minimal Chrony container.</p>



<pre class="wp-block-code"><code># Dockerfile
FROM debian:stable-slim

RUN apt-get update &amp;&amp; \
    apt-get install -y chrony &amp;&amp; \
    apt-get clean &amp;&amp; \
    rm -rf /var/lib/apt/lists/*

COPY chrony.conf /etc/chrony/chrony.conf

EXPOSE 123/udp

CMD &#91;"chronyd", "-d", "-f", "/etc/chrony/chrony.conf"]
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-2-create-the-chrony-conf"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Create the <code>chrony.conf</code></h2>



<p class="wp-block-paragraph">Here’s a sample <code>chrony.conf</code> tailored for <strong>local server use</strong> and syncing with global time sources:</p>



<pre class="wp-block-code"><code># chrony.conf

# Time sources (use pool.ntp.org or your regional servers)
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst

# Allow all clients on your LAN (edit this according to your subnet)
allow 192.168.1.0/24

# Local stratum fallback if Internet is down
local stratum 10

# Drift file to track clock error over time
driftfile /var/lib/chrony/chrony.drift

# Log tracking data
log tracking measurements statistics

# Log files location
logdir /var/log/chrony

# Optional: control access
cmdport 0  # Use 0 to disable remote control; use 323 if needed
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Replace <code>192.168.1.0/24</code> with your actual LAN subnet.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-3-build-and-run-the-docker-container"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ea.png" alt="🧪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Build and Run the Docker Container</h2>



<pre class="wp-block-code"><code>docker build -t chrony-server .
</code></pre>



<p class="wp-block-paragraph">Now run the container with:</p>



<pre class="wp-block-code"><code>docker run -d \
  --name chrony \
  --restart unless-stopped \
  --network host \
  --cap-add=NET_BIND_SERVICE \
  chrony-server
</code></pre>



<h3 class="wp-block-heading" id="h-explanation"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Explanation:</h3>



<ul class="wp-block-list">
<li><code>--network host</code> allows the container to bind directly to port 123/UDP</li>



<li><code>--cap-add=NET_BIND_SERVICE</code> is required to bind to low-numbered ports like 123</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-step-4-test-your-ntp-server"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Test Your NTP Server</h2>



<p class="wp-block-paragraph">From a client machine on your LAN:</p>



<pre class="wp-block-code"><code>ntpdate -q &lt;chrony-server-ip&gt;
</code></pre>



<p class="wp-block-paragraph">or</p>



<pre class="wp-block-code"><code>chronyc sources -a
</code></pre>



<p class="wp-block-paragraph">You should see that the time is being served and synchronized.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-optional-run-as-a-local-time-authority"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Optional: Run as a Local Time Authority</h2>



<p class="wp-block-paragraph">If you want to run <strong>fully offline</strong>, or ensure internal time continuity even without internet:</p>



<ol class="wp-block-list">
<li>Remove the <code>server</code> lines from <code>chrony.conf</code></li>



<li>Set: <code>local stratum 8</code></li>



<li>Start the server with a <strong>stable internal clock source</strong></li>
</ol>



<p class="wp-block-paragraph">This makes your Chrony instance a <strong>local time authority</strong> for your network.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-firewall-notes"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Firewall Notes</h2>



<p class="wp-block-paragraph">Make sure UDP port <strong>123</strong> is allowed <strong>inbound</strong> from your LAN on your Docker host:</p>



<pre class="wp-block-code"><code>sudo ufw allow proto udp from 192.168.1.0/24 to any port 123
</code></pre>



<p class="wp-block-paragraph">Or for <code>iptables</code>:</p>



<pre class="wp-block-code"><code>iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 123 -j ACCEPT
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusion"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ce.png" alt="📎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h2>



<p class="wp-block-paragraph">With this setup, you&#8217;ve created a <strong>portable, containerized NTP server</strong> using Chrony that:</p>



<ul class="wp-block-list">
<li>Syncs with global servers</li>



<li>Serves accurate time to all local devices</li>



<li>Works even if your external internet connection drops</li>
</ul>



<p class="wp-block-paragraph">Perfect for <strong>homelabs</strong>, <strong>IoT networks</strong>, or <strong>offline environments</strong>.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://hamradio.my/2025/05/how-to-set-up-chrony-as-a-local-ntp-server-using-docker/">How to Set Up Chrony as a Local NTP Server Using Docker</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/05/how-to-set-up-chrony-as-a-local-ntp-server-using-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
