<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[LinuxAstra]]></title><description><![CDATA[LinuxAstra shares tips on Linux, automation, dotfiles, DevOps, and containers. For hackers, tinkerers, and sysadmins who love building efficient, reproducible s]]></description><link>https://articles.linuxastra.in</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 16:42:26 GMT</lastBuildDate><atom:link href="https://articles.linuxastra.in/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🧨 PiForge: Provision Your Raspberry Pi Without Ever Plugging in a Monitor]]></title><description><![CDATA[I love Raspberry Pi. But you know what I don’t love?

Fumbling around with tiny HDMI cables

Hitting the “login” screen just to configure Wi-Fi

Not knowing what IP my Pi grabbed from the router

Doing it again and again for every new setup


If you’...]]></description><link>https://articles.linuxastra.in/piforge-provision-your-raspberry-pi-without-ever-plugging-in-a-monitor</link><guid isPermaLink="true">https://articles.linuxastra.in/piforge-provision-your-raspberry-pi-without-ever-plugging-in-a-monitor</guid><category><![CDATA[Pi5]]></category><category><![CDATA[PiCluster]]></category><category><![CDATA[ZeroTouchProvisioning]]></category><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[Linux]]></category><category><![CDATA[automation]]></category><category><![CDATA[Devops]]></category><category><![CDATA[iot]]></category><category><![CDATA[Homelab]]></category><category><![CDATA[home automation]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Pankaj Patel (Jackson)]]></dc:creator><pubDate>Sun, 20 Apr 2025 15:38:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745162198720/28e932ec-08f7-4a57-a3ce-94d7f18e5bc0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I love Raspberry Pi. But you know what I don’t love?</p>
<ul>
<li><p>Fumbling around with tiny HDMI cables</p>
</li>
<li><p>Hitting the “login” screen just to configure Wi-Fi</p>
</li>
<li><p>Not knowing what IP my Pi grabbed from the router</p>
</li>
<li><p>Doing it <strong>again and again</strong> for every new setup</p>
</li>
</ul>
<p>If you’ve been through that ritual, I feel your pain.</p>
<p>That's exactly why I built <strong>PiForge</strong> — an automation script that <strong>flashes</strong> and <strong>provisions</strong> a Raspberry Pi OS image so completely that you never need to plug in a display, keyboard, or even a mouse. It’s like a zero-touch setup, but for hobbyists, homelabbers, and tinkerers like us.</p>
<p><a target="_blank" href="https://github.com/pankajackson/PiForge">👉 Check it out on GitHub</a></p>
<hr />
<h2 id="heading-what-is-piforge">🛠️ What is PiForge?</h2>
<p>Imagine this:</p>
<p>You plug in your SD card, run one command, and walk away.<br />Next time you insert it into your Pi, it boots up with:</p>
<ul>
<li><p>✅ Your custom hostname</p>
</li>
<li><p>✅ Your Wi-Fi or Ethernet already configured</p>
</li>
<li><p>✅ Your SSH keys in place</p>
</li>
<li><p>✅ A known static IP address</p>
</li>
<li><p>✅ No need to scan your network to find it</p>
</li>
<li><p>✅ A running post-boot provisioning service that ties it all together</p>
</li>
</ul>
<p>No guessing. No display. No hassle.</p>
<p>PiForge turns a dumb SD card into a smart, pre-configured boot drive.</p>
<hr />
<h2 id="heading-real-world-use-cases">⚡ Real-World Use Cases</h2>
<h3 id="heading-1-home-automation-setup">1. <strong>Home Automation Setup</strong></h3>
<p>Setting up <strong>Home Assistant</strong> or <strong>Zigbee2MQTT</strong> on a Pi 5?<br />With PiForge, you can configure the Pi <strong>before</strong> even inserting it into the device. Add static IPs for MQTT, enable SSH, and you're good to go.</p>
<h3 id="heading-2-iot-or-sensor-network-deployment">2. <strong>IoT or Sensor Network Deployment</strong></h3>
<p>Need to deploy 10 Pis around your home, farm, or office?<br />PiForge lets you flash and configure each one with a <strong>unique hostname and IP</strong>, so you just plug, power, and forget.</p>
<h3 id="heading-3-teaching-amp-workshops">3. <strong>Teaching &amp; Workshops</strong></h3>
<p>If you're running a Raspberry Pi workshop or class, setting up 20 devices can be chaos. With PiForge, you can prep all the cards ahead of time and hand them out like candy 🍬.</p>
<h3 id="heading-4-cluster-computing-pi-cluster">4. <strong>Cluster Computing (Pi Cluster)</strong></h3>
<p>Building a Raspberry Pi Kubernetes or Docker Swarm cluster?<br />Use PiForge to preconfigure static IPs and SSH across all nodes, so they can talk right away. No login required.</p>
<hr />
<h2 id="heading-why-this-beats-imaging-tools">💥 Why This Beats Imaging Tools</h2>
<p>Yes, tools like Raspberry Pi Imager and BalenaEtcher are great…<br /><strong>But they only flash</strong>.</p>
<p>They don’t <strong>provision</strong>.</p>
<p>PiForge provisions everything <strong>before</strong> first boot. No post-flash juggling. No hand-editing files on the boot partition. No weird errors.</p>
<hr />
<h2 id="heading-tested-on-pi-5">🧪 Tested on Pi 5</h2>
<p>And yes—this works flawlessly on the brand new <strong>Raspberry Pi 5</strong>.<br />(And should be backward-compatible with Pi 4, 3, etc., too.)</p>
<p>Faster boot, cleaner automation, and more fun tinkering.</p>
<hr />
<h2 id="heading-behind-the-scenes-how-it-works">🔥 Behind the Scenes: How It Works</h2>
<ul>
<li><p><strong>Step 1</strong>: You run <a target="_blank" href="http://flasher.py"><code>flasher.py</code></a></p>
</li>
<li><p><strong>Step 2</strong>: It downloads the latest Raspberry Pi OS image (Lite/Desktop/Full — your choice)</p>
</li>
<li><p><strong>Step 3</strong>: It detects your USB or SD card and flashes the image</p>
</li>
<li><p><strong>Step 4</strong>: It mounts the partitions and injects your config:</p>
<ul>
<li><p>Hostname, Timezone</p>
</li>
<li><p>SSH keys and user credentials</p>
</li>
<li><p>Wi-Fi/Ethernet (static or DHCP)</p>
</li>
</ul>
</li>
<li><p><strong>Step 5</strong>: It adds a postboot systemd service to finalize everything on first boot</p>
</li>
<li><p><strong>Step 6</strong>: It logs everything for you to debug later if needed</p>
</li>
</ul>
<p>You just plug the SD into your Pi and power it up. Done.<br />Your Pi appears on the network with the name and IP you expected.</p>
<hr />
<h2 id="heading-bonus-view-logs-in-browser-after-boot">🌐 Bonus: View Logs in Browser After Boot</h2>
<p>Wanna know what happened during the first boot?<br />Point your browser to:</p>
<pre><code class="lang-http"><span class="hljs-attribute">http://&lt;your-pi-ip&gt;:8182/logview.html</span>
</code></pre>
<p>Yup, no SSH needed. It serves up its own logs via a micro webserver.<br />How cool is that?</p>
<hr />
<h2 id="heading-final-thoughts">🧠 Final Thoughts</h2>
<p>When you’ve set up one Raspberry Pi, you’ve set up them all.<br />But <strong>PiForge</strong> turns that process from a chore into a <strong>one-liner</strong>.</p>
<p>For hobbyists, educators, homelabbers, and automation nerds—it’s a game changer.</p>
<p>Give it a try. And the next time someone asks,</p>
<blockquote>
<p>“Hey, how’d you set up that Pi so fast?”</p>
</blockquote>
<p>Just smile. 😎</p>
<hr />
<h3 id="heading-get-started-now">📥 Get Started Now</h3>
<pre><code class="lang-bash">git <span class="hljs-built_in">clone</span> https://github.com/pankajackson/PiForge.git
<span class="hljs-built_in">cd</span> PiForge
sudo python flasher.py
</code></pre>
<p>🚀 <a target="_blank" href="https://github.com/pankajackson/PiForge">https://github.com/pankajackson/PiForge</a></p>
<hr />
<h3 id="heading-stay-in-the-loop">🔔 <strong>Stay in the Loop</strong></h3>
<p>PiForge is just getting started. New features, support for more OS flavors, advanced provisioning workflows, and maybe even a web dashboard are on the horizon.</p>
<p>Want to be the first to know?<br /><strong>Star the repo</strong>, <strong>watch for updates</strong>, or follow along at <a target="_blank" href="http://github.com/pankajackson/PiForge">github.com/pankajackson/PiForge</a> 🚀</p>
<p>Let’s forge the future of Pi provisioning—together. 🧪💻</p>
]]></content:encoded></item><item><title><![CDATA[🚀 Introducing a New Era of System Configuration Management – Say hello to DotCtl!]]></title><description><![CDATA[After months of research, design, and hands-on coding, I’m excited to launch a completely new concept of system automation and dotfile management — one that brings profiling, synchronization, automation, and Git integration into a single powerful CLI...]]></description><link>https://articles.linuxastra.in/say-hello-to-dotctl</link><guid isPermaLink="true">https://articles.linuxastra.in/say-hello-to-dotctl</guid><category><![CDATA[dotctl]]></category><category><![CDATA[dotfiles]]></category><category><![CDATA[dotfile]]></category><category><![CDATA[Linux]]></category><category><![CDATA[ArchLinux]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[Devops]]></category><category><![CDATA[automation]]></category><category><![CDATA[Python]]></category><category><![CDATA[Python 3]]></category><category><![CDATA[python projects]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[configurationmanagement ]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[cli]]></category><dc:creator><![CDATA[Pankaj Patel (Jackson)]]></dc:creator><pubDate>Sat, 05 Apr 2025 14:45:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1744035214251/7ee8a47e-da11-430b-a823-813ab654ded6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After months of research, design, and hands-on coding, I’m excited to launch a <strong>completely new concept</strong> of system automation and dotfile management — one that brings <strong>profiling, synchronization, automation, and Git integration</strong> into a single powerful CLI tool: <a target="_blank" href="https://github.com/pankajackson/dotctl"><strong>DotCtl</strong></a>.</p>
<hr />
<h3 id="heading-the-concept">🧠 The Concept</h3>
<p>What if you could <strong>capture the full configuration of your system as a portable "profile"</strong>, version it in Git, apply it on any machine with one command, and run pre/post install scripts to bootstrap the whole environment?</p>
<p><strong>DotCtl</strong> is not just a dotfile manager. It’s a <strong>config profiling system</strong> designed for developers, sysadmins, and IT professionals who manage multiple environments — desktops, servers, containers, VMs — and want to keep everything consistent, reproducible, and shareable.</p>
<hr />
<h3 id="heading-what-dotctl-does">⚙️ What DotCtl Does</h3>
<ul>
<li><p>🌐 <strong>Track your entire system config</strong> (dotfiles, services, packages, env vars) as a named <em>profile</em>.</p>
</li>
<li><p>🔄 <strong>Sync profiles with Git</strong> for reliable versioning and deployment across machines.</p>
</li>
<li><p>🔧 <strong>Define pre/post hooks</strong> to automate package installations, service restarts, and more.</p>
</li>
<li><p>📤 <strong>Export profiles</strong> to portable <code>.dtsv</code> files for backup or sharing.</p>
</li>
<li><p>🧪 <strong>Apply any profile</strong> to configure a fresh system instantly.</p>
</li>
</ul>
<hr />
<h3 id="heading-use-case">🧰 Use Case</h3>
<p><strong>DevOps Teams / Remote Onboarding</strong><br />Imagine onboarding a new developer into your company or project. Instead of handing over a doc with 15+ setup steps, you hand them this:</p>
<pre><code class="lang-sh">pip install dotctl
dotctl import company_dev_stack.dtsv
dotctl apply
</code></pre>
<p>That’s it — their environment is up and running with exactly the configs, tools, aliases, themes, and services used by the rest of the team.</p>
<hr />
<h3 id="heading-want-to-explore-or-contribute">🔗 Want to explore or contribute?</h3>
<p>Check out the full README, command examples, and source on GitHub:<br />👉 <a target="_blank" href="https://github.com/pankajackson/dotctl">https://github.com/pankajackson/dotctl</a></p>
<p>I’d love feedback, collaborations, or use-case discussions — especially from fellow infrastructure folks, power users, and open-source enthusiasts.</p>
<hr />
<p>💬 Curious how DotCtl could simplify your own environment setup or CI workflows? Let’s talk! Drop a comment or message me directly. 🙌</p>
]]></content:encoded></item></channel></rss>