<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pankaj Jackson</title>
    <description>The latest articles on DEV Community by Pankaj Jackson (@pankajackson).</description>
    <link>https://dev.to/pankajackson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3020484%2Fce982c17-6d66-48a1-af3b-f82c98e6c155.jpeg</url>
      <title>DEV Community: Pankaj Jackson</title>
      <link>https://dev.to/pankajackson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pankajackson"/>
    <language>en</language>
    <item>
      <title>🧨 PiForge: Provision Your Raspberry Pi Without Ever Plugging in a Monitor</title>
      <dc:creator>Pankaj Jackson</dc:creator>
      <pubDate>Sun, 20 Apr 2025 15:38:07 +0000</pubDate>
      <link>https://dev.to/pankajackson/piforge-provision-your-raspberry-pi-without-ever-plugging-in-a-monitor-jp0</link>
      <guid>https://dev.to/pankajackson/piforge-provision-your-raspberry-pi-without-ever-plugging-in-a-monitor-jp0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mnr70bwmd4qc3mgxvht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mnr70bwmd4qc3mgxvht.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
I love Raspberry Pi. But you know what I dont love?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fumbling around with tiny HDMI cables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hitting the login screen just to configure Wi-Fi&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not knowing what IP my Pi grabbed from the router&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Doing it &lt;strong&gt;again and again&lt;/strong&gt; for every new setup&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If youve been through that ritual, I feel your pain.&lt;/p&gt;

&lt;p&gt;That's exactly why I built &lt;strong&gt;PiForge&lt;/strong&gt; an automation script that &lt;strong&gt;flashes&lt;/strong&gt; and &lt;strong&gt;provisions&lt;/strong&gt; a Raspberry Pi OS image so completely that you never need to plug in a display, keyboard, or even a mouse. Its like a zero-touch setup, but for hobbyists, homelabbers, and tinkerers like us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pankajackson/PiForge" rel="noopener noreferrer"&gt;👉 Check it out on GitHub&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🛠 What is PiForge?
&lt;/h2&gt;

&lt;p&gt;Imagine this:&lt;/p&gt;

&lt;p&gt;You plug in your SD card, run one command, and walk away.&lt;br&gt;&lt;br&gt;
Next time you insert it into your Pi, it boots up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Your custom hostname&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your Wi-Fi or Ethernet already configured&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your SSH keys in place&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A known static IP address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No need to scan your network to find it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A running post-boot provisioning service that ties it all together&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No guessing. No display. No hassle.&lt;/p&gt;

&lt;p&gt;PiForge turns a dumb SD card into a smart, pre-configured boot drive.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. &lt;strong&gt;Home Automation Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Setting up &lt;strong&gt;Home Assistant&lt;/strong&gt; or &lt;strong&gt;Zigbee2MQTT&lt;/strong&gt; on a Pi 5?&lt;br&gt;&lt;br&gt;
With PiForge, you can configure the Pi &lt;strong&gt;before&lt;/strong&gt; even inserting it into the device. Add static IPs for MQTT, enable SSH, and you're good to go.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. &lt;strong&gt;IoT or Sensor Network Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Need to deploy 10 Pis around your home, farm, or office?&lt;br&gt;&lt;br&gt;
PiForge lets you flash and configure each one with a &lt;strong&gt;unique hostname and IP&lt;/strong&gt; , so you just plug, power, and forget.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. &lt;strong&gt;Teaching &amp;amp; Workshops&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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 🍬.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. &lt;strong&gt;Cluster Computing (Pi Cluster)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Building a Raspberry Pi Kubernetes or Docker Swarm cluster?&lt;br&gt;&lt;br&gt;
Use PiForge to preconfigure static IPs and SSH across all nodes, so they can talk right away. No login required.&lt;/p&gt;


&lt;h2&gt;
  
  
  💥 Why This Beats Imaging Tools
&lt;/h2&gt;

&lt;p&gt;Yes, tools like Raspberry Pi Imager and BalenaEtcher are great&lt;br&gt;&lt;br&gt;
&lt;strong&gt;But they only flash&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They dont &lt;strong&gt;provision&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;PiForge provisions everything &lt;strong&gt;before&lt;/strong&gt; first boot. No post-flash juggling. No hand-editing files on the boot partition. No weird errors.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧪 Tested on Pi 5
&lt;/h2&gt;

&lt;p&gt;And yesthis works flawlessly on the brand new &lt;strong&gt;Raspberry Pi 5&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
(And should be backward-compatible with Pi 4, 3, etc., too.)&lt;/p&gt;

&lt;p&gt;Faster boot, cleaner automation, and more fun tinkering.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔥 Behind the Scenes: How It Works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; : You run &lt;a href="http://flasher.py" rel="noopener noreferrer"&gt;&lt;code&gt;flasher.py&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : It downloads the latest Raspberry Pi OS image (Lite/Desktop/Full your choice)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : It detects your USB or SD card and flashes the image&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : It mounts the partitions and injects your config:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; : It adds a postboot systemd service to finalize everything on first boot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt; : It logs everything for you to debug later if needed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You just plug the SD into your Pi and power it up. Done.&lt;br&gt;&lt;br&gt;
Your Pi appears on the network with the name and IP you expected.&lt;/p&gt;


&lt;h2&gt;
  
  
  🌐 Bonus: View Logs in Browser After Boot
&lt;/h2&gt;

&lt;p&gt;Wanna know what happened during the first boot?&lt;br&gt;&lt;br&gt;
Point your browser to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;your-pi-ip&amp;gt;:8182/logview.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yup, no SSH needed. It serves up its own logs via a micro webserver.&lt;br&gt;&lt;br&gt;
How cool is that?&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;When youve set up one Raspberry Pi, youve set up them all.&lt;br&gt;&lt;br&gt;
But &lt;strong&gt;PiForge&lt;/strong&gt; turns that process from a chore into a &lt;strong&gt;one-liner&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For hobbyists, educators, homelabbers, and automation nerdsits a game changer.&lt;/p&gt;

&lt;p&gt;Give it a try. And the next time someone asks,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hey, howd you set up that Pi so fast?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just smile. 😎&lt;/p&gt;




&lt;h3&gt;
  
  
  📥 Get Started Now
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/pankajackson/PiForge.git
cd PiForgesudo 
python flasher.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚀 &lt;a href="https://github.com/pankajackson/PiForge" rel="noopener noreferrer"&gt;https://github.com/pankajackson/PiForge&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🔔 &lt;strong&gt;Stay in the Loop&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Want to be the first to know?&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Star the repo&lt;/strong&gt; , &lt;strong&gt;watch for updates&lt;/strong&gt; , or follow along at &lt;a href="http://github.com/pankajackson/PiForge" rel="noopener noreferrer"&gt;github.com/pankajackson/PiForge&lt;/a&gt; 🚀&lt;/p&gt;

&lt;p&gt;Lets forge the future of Pi provisioning together. 🧪💻&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>linux</category>
      <category>automation</category>
      <category>iot</category>
    </item>
    <item>
      <title>🚀 Introducing a New Era of System Configuration Management – Say hello to DotCtl!</title>
      <dc:creator>Pankaj Jackson</dc:creator>
      <pubDate>Sat, 05 Apr 2025 14:45:35 +0000</pubDate>
      <link>https://dev.to/pankajackson/introducing-a-new-era-of-system-configuration-management-say-hello-to-dotctl-19pk</link>
      <guid>https://dev.to/pankajackson/introducing-a-new-era-of-system-configuration-management-say-hello-to-dotctl-19pk</guid>
      <description>&lt;p&gt;After months of research, design, and hands-on coding, Im excited to launch a &lt;strong&gt;completely new concept&lt;/strong&gt; of system automation and dotfile management one that brings &lt;strong&gt;profiling, synchronization, automation, and Git integration&lt;/strong&gt; into a single powerful CLI tool: &lt;a href="https://github.com/pankajackson/dotctl" rel="noopener noreferrer"&gt;&lt;strong&gt;DotCtl&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe44d5z4dqs59ykyjanc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe44d5z4dqs59ykyjanc.png" alt="Image description" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 The Concept
&lt;/h3&gt;

&lt;p&gt;What if you could &lt;strong&gt;capture the full configuration of your system as a portable "profile"&lt;/strong&gt; , version it in Git, apply it on any machine with one command, and run pre/post install scripts to bootstrap the whole environment?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DotCtl&lt;/strong&gt; is not just a dotfile manager. Its a &lt;strong&gt;config profiling system&lt;/strong&gt; designed for developers, sysadmins, and IT professionals who manage multiple environments desktops, servers, containers, VMs and want to keep everything consistent, reproducible, and shareable.&lt;/p&gt;




&lt;h3&gt;
  
  
  What DotCtl Does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🌐 &lt;strong&gt;Track your entire system config&lt;/strong&gt; (dotfiles, services, packages, env vars) as a named &lt;em&gt;profile&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔄 &lt;strong&gt;Sync profiles with Git&lt;/strong&gt; for reliable versioning and deployment across machines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔧 &lt;strong&gt;Define pre/post hooks&lt;/strong&gt; to automate package installations, service restarts, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📤 &lt;strong&gt;Export profiles&lt;/strong&gt; to portable &lt;code&gt;.dtsv&lt;/code&gt; files for backup or sharing.&lt;a href="https://articles.linuxastra.in/" rel="noopener noreferrer"&gt;https://articles.linuxastra.in/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🧪 &lt;strong&gt;Apply any profile&lt;/strong&gt; to configure a fresh system instantly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧰 Use Case
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DevOps Teams / Remote Onboarding&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Imagine onboarding a new developer into your company or project. Instead of handing over a doc with 15+ setup steps, you hand them this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install dotctl
dotctl import company_dev_stack.dtsv
dotctl apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thats it their environment is up and running with exactly the configs, tools, aliases, themes, and services used by the rest of the team.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔗 Want to explore or contribute?
&lt;/h3&gt;

&lt;p&gt;Check out the full README, command examples, and source on GitHub:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/pankajackson/dotctl" rel="noopener noreferrer"&gt;https://github.com/pankajackson/dotctl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Id love feedback, collaborations, or use-case discussions especially from fellow infrastructure folks, power users, and open-source enthusiasts.&lt;/p&gt;




&lt;p&gt;💬 Curious how DotCtl could simplify your own environment setup or CI workflows? Lets talk! Drop a comment or message me directly. 🙌&lt;/p&gt;

</description>
      <category>dotctl</category>
      <category>dotfiles</category>
      <category>dotfile</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
