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

<channel>
	<title>Stephen Foskett, Pack Rat</title>
	<atom:link href="https://blog.fosketts.net/feed/" rel="self" type="application/rss+xml"/>
	<link>https://blog.fosketts.net/</link>
	<description></description>
	<lastBuildDate>Fri, 11 Jul 2025 16:31:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Rescue Your Belkin Wemo with Apple HomeKit</title>
		<link>https://blog.fosketts.net/2025/07/11/rescue-your-belkin-wemo-with-apple-homekit/</link>
					<comments>https://blog.fosketts.net/2025/07/11/rescue-your-belkin-wemo-with-apple-homekit/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Fri, 11 Jul 2025 16:27:03 +0000</pubDate>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[Belkin]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[HomeKit]]></category>
		<category><![CDATA[Matter]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10185</guid>

					<description><![CDATA[<p>This morning, Belkin announced that they are pulling the plug on their Wemo home automation ecosystem and shutting down the app, cloud, and devices as of January 31, 2026. This is seriously bad news for those of us who bought Wemo smart switches and other devices, since they will cease to function on that date. But there is hope: Most Wemo devices can be connected to Apple's HomeKit before the shutdown date and will continue to function afterwards! Here's how to keep your Belkin Wemo devices from becoming e-waste.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2025/07/11/rescue-your-belkin-wemo-with-apple-homekit/">Rescue Your Belkin Wemo with Apple HomeKit</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>This morning, <a href="https://www.belkin.com/support-article/?articleNum=335419">Belkin announced that they are pulling the plug on their Wemo home automation ecosystem</a> and shutting down the app, cloud, and devices as of January 31, 2026. This is seriously bad news for those of us who bought Wemo smart switches and other devices, since they will cease to function on that date. But there is hope: Most Wemo devices can be connected to Apple&#8217;s HomeKit before the shutdown date and will continue to function afterwards! Here&#8217;s how to keep your Belkin Wemo devices from becoming e-waste.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="500" height="500" src="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-500x500.png" alt="" class="wp-image-10188" srcset="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-500x500.png 500w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-300x300.png 300w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-150x150.png 150w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-768x768.png 768w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627-100x100.png 100w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2627.png 1206w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Rescue your Belkin Wemo switches by adding them to your Apple Home using HomeKit Protocol &#8211; before it&#8217;s too late!</figcaption></figure>
</div>


<h2 class="wp-block-heading">What is Belkin Wemo?</h2>



<p>Wemo was a brand of home automation devices produced by Belkin from 2011 through 2023. They released a few Matter/Thread devices after that and these are unaffected by this announcement.</p>



<p>The most-common Wemo device (in my experience) is their plug-in &#8220;Smart Plug&#8221; line, which was widely available at retail. I purchased four of their &#8220;Smart Plug Mini&#8221; devices at Costco a few years back and was very happy with their performance, functionality, and integration into Home Assistant. They also produced other smart devices, notably light switches, lights, and even crock pots, heaters, coffee makers, and baby monitors! Most of these devices required cloud connectivity for use and will become e-waste when Belkin cuts them off after January 2026.</p>



<p>Classic Wemo devices rely on Belkin&#8217;s cloud for configuration and everyday functionality, including integration with Amazon Alexa, Google Home, and IFTTT. All of this will cease to function following the Wemo cloud shutdown.</p>



<p><a href="https://www.belkin.com/support-article/?articleNum=335419#DevicesAffected">The complete list of Belkin devices</a>, including their support and HomeKit status, is available in their Wemo FAQ.</p>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-large is-resized"><img decoding="async" width="500" height="564" src="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623-500x564.jpeg" alt="" class="wp-image-10186" style="width:300px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623-500x564.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623-266x300.jpeg 266w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623-133x150.jpeg 133w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623-768x866.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2623.jpeg 1206w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Belkin&#8217;s Wemo devices were compatible with Amazon, Google, and IFTTT, but only Apple HomeKit will continue working</figcaption></figure>
</div>


<h2 class="wp-block-heading">Apple HomeKit to the Rescue?</h2>



<p>Over time, Belkin added Apple HomeKit support as an option to many of their light switches, dimmers, and plugs, and this is independent of the native app and cloud connectivity. This support for Apple HomeKit offers a ray of hope: HomeKit devices connect locally over Wi-Fi with HomeKit Accessory Protocol (HAP) and this doesn&#8217;t require Belkin&#8217;s app or cloud! </p>



<p>Belkin&#8217;s Wemo FAQ is explicitly about this: &#8220;Wemo products configured for use with Apple HomeKit prior to January 31, 2026 will continue to function via HomeKit in the absence of Wemo cloud services and the Wemo app.&#8221;</p>



<p>This means you can &#8220;rescue&#8221; your compatible switches and plugs by enabling HomeKit support and continue to use them. But configuring HomeKit requires the Belkin Wemo app (at least for my Wemo Mini plugs) so you have to do this before the Wemo shutoff date. I recommend doing a factory reset and enabling HomeKit sooner rather than later to avoid losing your Wemo devices next year.</p>



<h2 class="wp-block-heading">Enable HomeKit in Your Wemo Switches</h2>



<p>Enabling HomeKit is a straightforward process <em>as long as the Wemo app is still working</em>. Regardless of whether or not the device includes the HomeKit logo and number on the back, the following devices appear to be compatible:</p>



<ul class="wp-block-list">
<li>WLS0403 &#8211; Wemo Smart Light Switch 3-Way</li>



<li>WDS060 &#8211; Wemo Wi-Fi Smart Light Switch w/ Dimmer</li>



<li>WLS040 &#8211; Wemo Smart Light Switch</li>



<li>F7C064 &#8211; Wemo?HomeKit</li>



<li>F7C059 &#8211; Wemo?Dimmer Light Switch</li>



<li>F7C063 &#8211; Wemo?Mini Plugin Switch</li>



<li>WSP090 &#8211; Wemo?Outdoor Plug</li>



<li>WSP080 &#8211; Wemo Mini Smart Plug</li>
</ul>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-large is-resized"><img decoding="async" width="500" height="545" src="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624-500x545.jpeg" alt="" class="wp-image-10187" style="width:300px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624-500x545.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624-275x300.jpeg 275w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624-138x150.jpeg 138w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624-768x837.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2025/07/IMG_2624.jpeg 1206w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Belkin&#8217;s Wemo devices connect directly to Apple Home using HomeKit Accessory Protocol</figcaption></figure>
</div>


<p>Before you begin, make sure you have the Apple Home app installed and configured. I suggest doing a factory reset of the Wemo switch as well, just to make sure it&#8217;s really &#8220;clean&#8221; and ready to configure. Also, you might want to give it a few minutes after adding it to the Wemo app before trying to configure HomeKit.</p>



<ol class="wp-block-list">
<li>In the Wemo app, tap the &#8220;&#8230; More&#8221; button at the bottom, then tap &#8220;Connect to Other Services&#8221;, then &#8220;Apple Home App&#8221;</li>



<li>Tap &#8220;Get Started&#8221; and the Wemo app will scan for compatible devices</li>



<li>Tap &#8220;Connect&#8221; next to a compatible Wemo device to start the process</li>



<li>This will bring up an Apple Home pop-up &#8211; select a Home (if you have more than one), then tap &#8220;Add to Home&#8221;, select a Location and tap &#8220;Continue&#8221;, give the switch a name and tap &#8220;Continue&#8221;, select Outlet and tap &#8220;Continue&#8221;</li>



<li>And you&#8217;re done!</li>
</ol>



<p>The Wemo device will now show up in your Apple Home app and can be operated directly from there with no need for the Wemo app or cloud. It should continue to work after the cloud is shut down, but you will likely not be able to reconfigure the device after this date. At least you can avoid having to toss these Wemo devices into the e-waste pile for a while!</p>



<h2 class="wp-block-heading">What About Home Assistant?</h2>



<p>Home Assistant has a native <a href="https://www.home-assistant.io/integrations/wemo/">Belkin Wemo integration</a> which appears to operate locally without involvement of the Wemo cloud. This may continue to work without HomeKit after the shutdown date, since <a href="https://community.home-assistant.io/t/the-end-of-wemo-cloud-and-app/909663">many people are already firewalling off their Wemo devices</a> and using them exclusively from Home Assistant. We can&#8217;t be sure, but Home Assistant might be another way to keep your Wemo devices working past January.</p>



<p>You may also be able to access Wemo devices via HomeKit protocol by adding them as an Apple HomeKit Device in Home Assistant. If you aren&#8217;t an Apple ecosystem user, this might be a way to re-enable Wemo devices for your chosen ecosystem: Convert them to HomeKit, add them to Home Assistant, and present them to other devices. But this might prove too complex to be reliable or even desirable.</p>



<h2 class="wp-block-heading">Stephen&#8217;s Stance</h2>



<p>Proprietary products, especially cloud-based ones, pose real problems. This is especially troubling for devices that are physically installed like light switches or appliances. I have serious concerns about the long-term viability of connected devices and am turning away from anything that has a proprietary ecosystem, but it&#8217;s sometimes impossible to avoid them. Time and again, standards-based devices have longer useful lives than proprietary ones: The fact that Belkin&#8217;s Matter/Thread devices will continue to function, not to mention HomeKit compatibility, gives me some hope for the future of connected devices! I&#8217;m especially positive about open source devices using ESP Home, <a href="https://blog.fosketts.net/tag/tasmota/">Tasmota</a>, and so on, but will accept Matter devices as a minimum viable option. I encourage you to do the same!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2025/07/11/rescue-your-belkin-wemo-with-apple-homekit/">Rescue Your Belkin Wemo with Apple HomeKit</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2025/07/11/rescue-your-belkin-wemo-with-apple-homekit/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>JetKVM Gives You a Keyboard, Video, and More From Anywhere</title>
		<link>https://blog.fosketts.net/2025/02/17/jetkvm-gives-you-a-keyboard-video-and-more-from-anywhere/</link>
					<comments>https://blog.fosketts.net/2025/02/17/jetkvm-gives-you-a-keyboard-video-and-more-from-anywhere/#respond</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Mon, 17 Feb 2025 23:30:34 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[ATX]]></category>
		<category><![CDATA[iLO]]></category>
		<category><![CDATA[IPMI]]></category>
		<category><![CDATA[JetKVM]]></category>
		<category><![CDATA[Kickstarter]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[remote administration]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10161</guid>

					<description><![CDATA[<p>The JetKVM is an excellent little device, and a real steal at $69. It's wonderfully useful right out of the box and the planned software updates ought to make it even better. If you're like me and have a few critical PCs without integrated out-of-band management (like HPE iLO or Supermicro IPMI) this little device is a lifesaver. And it even offers a few tricks those expensive enterprise solutions don't offer!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2025/02/17/jetkvm-gives-you-a-keyboard-video-and-more-from-anywhere/">JetKVM Gives You a Keyboard, Video, and More From Anywhere</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve used a lot of KVM (keyboard, video, and mouse) switches over the years, but the JetKVM is a whole new ballgame. It&#8217;s a tiny and high-quality device that gives access to any computer from anywhere. Launched as a Kickstarter, it&#8217;s way more mature than I expected, and a lot cheaper than the competition at under $70. I bought four for me (and one as a gift) and wish I got more!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1280" height="1280" src="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738.jpeg" alt="" class="wp-image-10162" style="width:600px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738.jpeg 1280w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1738-100x100.jpeg 100w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption">The JetKVM is a compact but full-featured device that lets you control a computer from anywhere</figcaption></figure>
</div>


<p><em>Note: The &#8220;Jet&#8221; in JetKVM makes me think of the 1973 single by Paul McCartney &amp; Wings, so I&#8217;m using their songs as headers in this article. Turn on some power pop to get the full experience.</em></p>



<h3 class="wp-block-heading">Band on the Run</h3>



<p>I&#8217;m a nerd and I have lots of computers. Web servers, routers, home automation, and a whole lot more. Too many, really. <a href="https://blog.fosketts.net/2017/05/25/core-i7-macintosh-se/">I built a server into an old Macintosh SE</a> and <a href="https://blog.fosketts.net/2016/08/03/hello-freenas-goodbye-drobo-iomega/">built a giant file server</a>. That sort of thing. I even repatriated all of my web servers (which I swear I will eventually document), my <a href="https://www.activepieces.com">Activepieces</a> instance, my YOURLS link shortener, and more. Kubernetes? Yeah, <a href="https://blog.fosketts.net/2020/09/10/introducing-rabbit-i-bought-a-cloud/">I got that in my coffee table</a>.</p>



<p>The problem is, none of this is really production-ready. And it always seems to fall over whenever I go out of town. So I&#8217;ve been relying on a combination of Home Assistant-driven Z-Wave switches, <a href="https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/">big honkin&#8217; batteries</a>, jump hosts, and luck to keep things running. But sometimes all this can fail: What if the server is powered off? Or stuck at POST? And what if you need to adjust something in the BIOS screen? Wouldn&#8217;t it be amazing to be able to reset the power or plug in a USB drive from anywhere?</p>



<p>Sure some computers have out-of-band management built in: My <s>FreeNAS</s> TrueNAS server uses a Supermicro motherboard with (sketchy) IPMI, and I&#8217;ve been using a really nice HPE ProLiant server with built-in iLO. But most of my devices are sorely lacking when it comes to remote management! Think of JetKVM as iLO for Everyone!</p>



<h3 class="wp-block-heading">Let &#8216;Em In</h3>



<p>That&#8217;s where the <a href="https://jetkvm.com">JetKVM</a> comes in. While most KVMs are focused on multiplexing your keyboard and monitor for local servers, the JetKVM is a new kind of device: It&#8217;s designed to allow you to access one server from anywhere. It&#8217;s a simple-looking device with USB, HDMI, Ethernet, and Extension ports on the back and a cute color screen on the front. The whole thing is packaged in a sturdy die cast housing that sits solidly in place. And it&#8217;s tiny &#8211; about the size of the power brick for your NUC or external hard drive.</p>



<p>I&#8217;ve had pretty good luck with <a href="https://blog.fosketts.net/2015/07/28/aio-robotics-zeus-3d-printer-review/">Kickstarters</a> (<a href="https://grail-watch.com/2018/04/25/xeric-xeriscope-an-amusing-piece-of-junk/">though there have been some busts&#8230;</a>) and the JetKVM is no exception: It was delivered pretty much on schedule and worked perfectly out of the box. The software is surprisingly mature (though not perfect) and the whole experience has been a good one. I&#8217;ve got no qualm about giving one to a nerdy friend at <a href="https://TechFieldDay.com">Cloud Field Day</a>!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1280" height="1280" src="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737.jpeg" alt="" class="wp-image-10163" style="width:600px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737.jpeg 1280w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1737-100x100.jpeg 100w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption">The JetKVM is well-built, well-designed, and nicely-packaged</figcaption></figure>
</div>


<h3 class="wp-block-heading">Silly Love Songs</h3>



<p>This is no 3D-printed beta-test monstrosity. Far from it: The JetKVM device is solid, textured, and feels better in the hand than 95% of IT gear out there. It reminds me of unboxing <a href="https://blog.fosketts.net/2009/09/04/drobo-impressions/">my first Drobo</a>, with sleek smoked-glass solidity that inspires confidence. The packaging isn&#8217;t quite Apple-level, but I&#8217;m glad they didn&#8217;t waste time or money on that. It&#8217;s nice enough to be on store shelves and a heck of a lot nicer than the last KVM I bought!</p>



<p>Another nice aspect of the JetKVM experience is that it comes with everything you need to <a href="https://jetkvm.com/docs/getting-started/quick-start">get started</a> and plugs right in. There&#8217;s no need to read the manual or fiddle with configuration: Plug the mini-HDMI-to-HDMI cable and USB-C-to-A cable into your server, plug the Ethernet cable in, and you&#8217;re up and running. The little screen shows all you need to know to get started: The IP address and connectivity state are simply and elegantly displayed along with the MAC address and JetKVM logo. This is literally a 1-minute setup!</p>



<h3 class="wp-block-heading">Coming Up</h3>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-full is-resized"><img loading="lazy" decoding="async" width="962" height="597" src="https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID.png" alt="" class="wp-image-10164" style="width:400px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID.png 962w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID-300x186.png 300w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID-500x310.png 500w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID-150x93.png 150w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-Video-EDID-768x477.png 768w" sizes="auto, (max-width: 962px) 100vw, 962px" /></figure>
</div>


<p>The software works great on mobile or desktop and thankfully seems solid in Safari. The device emulates a USB keyboard and mouse and can pass through your device keyboard or use an on-screen virtual keyboard. The HDMI video can emulate a few popular monitors if needed, and you can even upload your own custom EDID file if you need some specific resolution.</p>



<p>I do wish the EDID selection included a lower-resolution option, since the text can be hard to read on a browser window. I tend to pick the Dell D7271H since it&#8217;s 1080p, but I&#8217;ve been thinking of whipping up a 1024&#215;768 option called &#8220;NEC MultiSync&#8221; for giggles!</p>



<h3 class="wp-block-heading">No More Lonely Nights</h3>



<p>The JetKVM also includes a handy virtual media function, allowing you to mount an ISO image uploaded to the device or from a URL. A forthcoming update will allow you to stream an image directly through your browser too!</p>



<p>This is incredibly useful for provisioning new servers. I set up a &#8220;crash cart&#8221; JetKVM device in the basement, connected it to a spare PC, and did a complete Ubuntu install from the comfy couch upstairs. It was much easier than writing the image to a USB drive and huddling over the machine.</p>



<p>Unfortunately, the virtual media function only emulates a USB optical drive, so I first had to reconfigure the BIOS to boot from CD/DVD. Happily this is pretty easy to do using the virtual Ctrl-Alt-Delete and function keys, which don&#8217;t require a two-finger combination like most modern &#8220;multimedia&#8221; keyboards. But I had to be quick about it, since it takes a moment for the HDMI to &#8220;sync&#8221; and show up in the browser, so the BIOS tends to fly by.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="2598" height="2338" src="https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI.png" alt="" class="wp-image-10165" style="width:600px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI.png 2598w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-300x270.png 300w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-500x450.png 500w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-150x135.png 150w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-768x691.png 768w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-1536x1382.png 1536w, https://blog.fosketts.net/wp-content/uploads/2025/02/JetKVM-UI-2048x1843.png 2048w" sizes="auto, (max-width: 2598px) 100vw, 2598px" /><figcaption class="wp-element-caption">The JetKVM UI is reasonably up to date, though it could use a few features</figcaption></figure>
</div>


<h3 class="wp-block-heading">Live and Let Die</h3>



<p>The JetKVM is so good as-is that I&#8217;m already dreaming of enhancements to this little platform. Here&#8217;s a smattering of wish-it-was-better ideas:</p>



<ol class="wp-block-list">
<li>I&#8217;d love a full-screen mode, preferably with picture-in-picture on iPadOS</li>



<li>Power over Ethernet support would be incredible (it&#8217;s apparently in the works)</li>



<li>The whole power situation is a little odd: It has a power splitter cable, but when I power my &#8220;crash cart&#8221; using a USB-C wall wart the JetKVM reboots when the attached PC shuts down</li>



<li>The Ctrl-Alt-Delete button should be on the main screen since I often open the virtual keyboard just for this one key combo</li>



<li>I&#8217;ve had a few instances of the virtual optical drive getting &#8220;stuck&#8221; with media so it would be nice to be able to completely turn that on and off</li>



<li>Speaking of that, I&#8217;d love a reboot button since I&#8217;ve had the whole device lock up once</li>



<li>I discovered accidentally that the cute little screen is a touchscreen, though the swipe-in-from-left menu only gives moderately-useful device info</li>



<li>I wish it had a full-sized HDMI port instead of the maddening mini-HDMI; at least it&#8217;s not a micro!</li>



<li>I hate that JetKVM Cloud can only authenticate using a Google account</li>
</ol>



<p>One more thing: That <a href="https://jetkvm.com/docs/peripheral-devices/extension-port">RJ11 Extension port</a> is very cool, promising incredible control over an ATX PC (using the ATX Power Control board). But I&#8217;m still waiting on my ATX extension boards so I couldn&#8217;t test it out. In theory the board sits between the power supply and motherboard, enabling you to remotely hard- and soft-reset the PC. And it powers the JetKVM even when the PC is off! But this is all theoretical since my boards are nowhere to be seen and apparently <a href="https://github.com/jetkvm/kvm/issues/129">the software isn&#8217;t ready</a> anyway. I&#8217;ll update this post when/if they arrive!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1280" height="961" src="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773.jpeg" alt="" class="wp-image-10166" style="width:600px" srcset="https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773.jpeg 1280w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773-300x225.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773-500x375.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773-150x113.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2025/02/IMG_1773-768x577.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption">The JetKVM is an excellent device, and well worth the price!</figcaption></figure>
</div>


<h3 class="wp-block-heading">Listen to What the Man Said</h3>



<p>The JetKVM is an excellent little device, and a real steal at $69. It&#8217;s wonderfully useful right out of the box and the planned software updates ought to make it even better. If you&#8217;re like me and have a few critical PCs without integrated out-of-band management (like HPE iLO or Supermicro IPMI) this little device is a lifesaver. And it even offers a few tricks those expensive enterprise solutions don&#8217;t offer!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2025/02/17/jetkvm-gives-you-a-keyboard-video-and-more-from-anywhere/">JetKVM Gives You a Keyboard, Video, and More From Anywhere</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2025/02/17/jetkvm-gives-you-a-keyboard-video-and-more-from-anywhere/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Monitor Linux Server Stats in Home Assistant</title>
		<link>https://blog.fosketts.net/2024/12/30/how-to-monitor-linux-server-stats-in-home-assistant/</link>
					<comments>https://blog.fosketts.net/2024/12/30/how-to-monitor-linux-server-stats-in-home-assistant/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Mon, 30 Dec 2024 22:55:59 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[systems administration]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[yaml]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10125</guid>

					<description><![CDATA[<p>I've been using Home Assistant to show system metrics. This blog post shows how to monitor Linux servers over MQTT using Home Assistant dashboards.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2024/12/30/how-to-monitor-linux-server-stats-in-home-assistant/">How to Monitor Linux Server Stats in Home Assistant</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m a long-time Home Assistant user, and have found it an incredible way to control and monitor a wide variety of devices. Home Assistant just keeps getting better at displaying information in a friendly format, and I&#8217;ve been using it to show dashboards for everything from office lighting to server stats. The latter is the focus for this blog post: Monitoring Linux servers over MQTT using Home Assistant dashboards!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="407" src="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-500x407.png" alt="" class="wp-image-10129" srcset="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-500x407.png 500w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-300x244.png 300w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-150x122.png 150w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-768x625.png 768w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats-1536x1249.png 1536w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-and-MacSE-Stats.png 1812w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Just look at these pretty system graphs!</figcaption></figure>
</div>


<h3 class="wp-block-heading">Monitoring Linux Server Stats</h3>



<p>I&#8217;ve been a Unix admin for over 3 decades, and have spent much of that time fighting with various software packages to monitor server stats. SNMP is anything but simple, and commercial packages traditionally made a significant dent on CPU and memory resources. Then there was the issue of collecting, formatting, and filtering stats to create a useful dashboard.</p>



<p>Home Assistant excels at collecting information, organizing it in a database, and displaying useful graphs and dashboards. But it&#8217;s not meant to handle system statistics &#8211; Home Assistant is primarily a platform for IoT devices. Although there is an official System Monitor service, it&#8217;s intended to monitor the local server running Home Assistant, not a remote server.</p>



<p>Happily, there is an excellent lightweight system monitor package designed for exactly this purpose: <a href="https://pypi.org/project/linux2mqtt/">Linux2MQTT</a> collects system stats and exports them via MQTT. As developer Cyrill Raccaud says, &#8220;linux2mqtt is a lightweight wrapper around psutil that publishes CPU utilization, free memory, and other system-level stats to a MQTT broker. The primary use case is to collect system performance metrics for ingestion into Home Assistant (HA) for alerting, reporting, and firing off any number of automations.&#8221; I&#8217;m happy to report that it works quite well, even if it is a little fiddly.</p>



<p>In case you&#8217;re not familiar with <a href="https://en.wikipedia.org/wiki/MQTT">MQTT</a>, it&#8217;s a lightweight publish-subscribe message queueing protocol that&#8217;s found a niche in the IoT space. MQTT clients pass messages through an MQTT broker using &#8220;topics&#8221; that other clients can subscribe to. Home Assistant has an open source MQTT broker Add-On called Mosquitto as well as an MQTT client, and many IoT devices like my <a href="https://tasmota.github.io/docs/">Tasmota</a> lights and <a href="https://us.shelly.com">Shelly</a> switches already use this protocol for control and metrics. A client like linux2mqtt can easily publish system stats to a broker like Mosquitto for use in Home Assistant.</p>



<h3 class="wp-block-heading">Installing and Running linux2mqtt in Ubuntu</h3>



<p><a href="https://pypi.org/project/systemctl2mqtt/">The linux2mqtt package</a> is written in Python and is available on Pypi, making it easy to install and maintain. But I do have a few tips and tricks to share to get it up and running monitoring Ubuntu servers.</p>



<p>A best practice in Debian and Ubuntu (and frankly all Unix systems) is to install Python packages in a <a href="https://docs.python.org/3/library/venv.html">virtual environment</a> to maintain proper version of the Python interpreter and libraries. This functions something like a container (though less isolated or portable) and overcomes many of the headaches of maintaining a usable Python environment.</p>



<p>Note that linux2mqtt runs as a user, not as root. This should be reassuring but also poses some issues we will overcome!</p>



<p>Creating a venv for linux2mqtt is our first step:</p>



<pre class="wp-block-code"><code>sudo apt update
sudo apt install python3-venv
python3 -m venv ~/linux2mqtt</code></pre>



<p>Now that we have a proper venv set up in our user home directory we can install linux2mqtt inside:</p>



<pre class="wp-block-code"><code>~/linux2mqtt/bin/pip install linux2mqtt</code></pre>



<p>We now have a version of linux2mqtt installed and ready to test out!</p>



<h3 class="wp-block-heading">Preparing Home Assistant</h3>



<p>Configuring Mosquitto and the MQTT client in Home Assistant is far beyond the subject of this article. Suffice to say, the built-in Home Assistant Mosquitto broker and client are sufficient for everything we are doing here, though you could also use any other broker if you choose.</p>



<p>The important thing is that you have the IP address, username, and password of your MQTT broker. For purposes of this illustration I will use the following:</p>



<ul class="wp-block-list">
<li>MQTT Broker IP: 192.168.1.31</li>



<li>MQTT Broker User: mosquitto</li>



<li>MQTT Broker Password: password</li>
</ul>



<p>Make sure the MQTT client is up and running in &#8220;Devices &amp; Services&#8221; and is configured to query the Mosquitto broker. By default, Home Assistant uses &#8220;homeassistant&#8221; as the MQTT auto-discovery prefix, and this is also the default for linux2mqtt. If you change this prefix you will need to specify the new one using the &#8211;homeassistant-prefix command line parameter.</p>



<p>Happily, Home Assistant will properly receive and organize incoming data from linux2mqtt without any other setup. As soon as you start publishing system data to the broker a new device and associated entities will appear in Home Assistant!</p>



<h3 class="wp-block-heading">Selecting System Metrics</h3>



<p>It&#8217;s a good idea to pick out the specific system metrics to send to Home Assistant before running linux2mqtt for the first time. For the purposes of this article, we will send CPU percentage, CPU temperature, network utilization, and filesystem usage. Some of these requires a little preparation work, so let&#8217;s dive in!</p>



<p>We&#8217;ll build a metric set to send to the MQTT broker interactively, but here&#8217;s a good baseline:</p>



<pre class="wp-block-code"><code>~/linux2mqtt/bin/linux2mqtt \
--name $HOSTNAME \
--cpu=15 \
--vm \
--temp \
--fan \
--du='/' \
--du='/home' \
--net=enp0s1,15 \
--host=192.168.1.31 \
--username=mosquitto \
--password=password \
-vvvvv</code></pre>



<p>One of the most important command line parameters is &#8220;<strong>&#8211;name $HOSTNAME</strong>&#8220;. This identifies all of the state metrics in MQTT and Home Assistant. You can use $HOSTNAME (as I did here) or specify a name manually. I like Initial Capital Letters so I generally specify the hostname manually.</p>



<p>The easiest sensor to add is CPU. Just add &#8220;&#8211;cpu=60&#8221; to the linux2mqtt command line and it will send overall CPU usage plus a number of detailed state attributes (see below) each minute. I actually like to use &#8220;<strong>&#8211;cpu=15</strong>&#8221; to get more frequent updates (every 15 seconds) but you&#8217;re free to choose any value you like.</p>



<p>Another useful sensor is virtual memory. Add &#8220;<strong>&#8211;vm</strong>&#8221; to the command line to send virtual memory usage plus detailed state attributes. I wish there was more instrumentation for physical memory, but I can&#8217;t find it.</p>



<p>Each server platform will have its own set of temperature metrics, and mine are all over the map. Some provide a ton of detailed thermal info with &#8220;<strong>&#8211;temp</strong>&#8221; for various zones while others just show the CPU. Not all systems will show fan status, but it doesn&#8217;t break anything to add &#8220;<strong>&#8211;fan</strong>&#8221; just in case. If your server doesn&#8217;t have fan sensors you could leave this off the final parameter list.</p>



<p>Next we want to collect disk usage stats. Most people will add &#8220;<strong>&#8211;du=&#8217;/&#8217;</strong>&#8221; to collect root directory stats. Being a veteran sysadmin and storage nerd I like to use separate filesystems for things that might fill up, including /home, /var/lib/docker, and various application directories in /srv. Just run &#8220;df -h&#8221; on the command line and decide which volumes you want to include. Then add multiple parameters like &#8220;<strong>&#8211;du=&#8217;/home&#8217;</strong>&#8221; to the list.</p>



<p>You can also monitor one or more network interfaces. You will need to specify the specific interface name on the command line, and the easiest way to get this is by typing &#8220;ip address show | more&#8221; on the command line. If you&#8217;re using Docker or similar tools you might have quite a few! I&#8217;ve simplified it above to just &#8220;<strong>&#8211;net=enp0s1,15</strong>&#8220;, which will send stats for the interface called enp0s1 every 15 seconds. You can add multiple parameters with different network names to monitor multiple interfaces.</p>



<p>Next we have to specify the MQTT Broker with &#8220;<strong>&#8211;host=192.168.1.31</strong>&#8221; and authenticate with &#8220;<strong>&#8211;username=mosquitto</strong>&#8221; and &#8220;<strong>&#8211;password=password</strong>&#8220;. Obviously you&#8217;ll use your own broker IP address, username, and password.</p>



<p>Finally we can add &#8220;<strong>-vvvvv</strong>&#8221; to show verbose debugging info on our first run. We will leave this out when we put this into production.</p>



<p>Now that you have figured out which parameters to use for your particular host, you can simply run linux2mqtt on the command line:</p>



<pre class="wp-block-code"><code>~/linux2mqtt/bin/linux2mqtt --name $HOSTNAME --cpu=15 --vm --temp --fan --du='/' --du='/home' --net=enp0s1,15 --host=192.168.1.31 --username=mosquitto --password=password -vvvvv</code></pre>



<p>This will start collection and begin sending data to the MQTT broker. Within a few seconds you will see this show up in Home Assistant under the MQTT client! Once you&#8217;re satisfied you can stop this initial run with ctrl-c and proceed to put linux2mqtt into production!</p>



<h3 class="wp-block-heading">Creating a Systemd Service for linux2mqtt</h3>



<p>I am not a fan of <a href="https://en.wikipedia.org/wiki/Systemd">systemd</a> but that&#8217;s what Debian and Ubuntu use to run system services. And it works. So we&#8217;re going to use it.</p>



<p>Although many of us have mucked about with system services, I was less familiar with using systemd to run user-space services. But that&#8217;s the right way to run linux2mqtt, since it does not need root privileges.</p>



<p>We&#8217;ll create a systemd service file in our home directory for linux2mqtt:</p>



<pre class="wp-block-code"><code>mkdir -p ~/.config/systemd/user
vi ~/.config/systemd/user/linux2mqtt.service</code></pre>



<p>This service file will be pretty simple. The most important bit is the command used to run linux2mqtt, which we developed in the previous section. Copy whatever worked at the end there as the &#8220;ExecStart&#8221; command in the following template. You should specify the complete directory path rather than &#8220;/home/username&#8221; and the proper hostname in this file. I&#8217;ve bolded these below. And don&#8217;t include the &#8220;-vvvvv&#8221;.</p>



<pre class="wp-block-code"><code>&#91;Unit]
Description=Log system information via MQTT
DefaultDependencies=no

&#91;Service]
ExecStart=/home/<strong>username</strong>/linux2mqtt/bin/linux2mqtt --name <strong>Hostname</strong> --cpu=15 --vm --temp --fan --du='/' --du='/home' --net=enp0s1,15 --host=192.168.1.31 --username=mosquitto --password=password
Type=exec
Restart=always

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



<p>Assuming you&#8217;re ready to roll, just enable these using systemd and you&#8217;re done on the host side! Note that you need to enable &#8220;linger&#8221; so systemd can run things when you&#8217;re not actively logged in.</p>



<pre class="wp-block-code"><code>sudo loginctl enable-linger $USER 
systemctl --user daemon-reload
systemctl --user enable linux2mqtt.service
systemctl --user start linux2mqtt.service</code></pre>



<h3 class="wp-block-heading">Home Assistant State Attributes</h3>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-large is-resized"><img loading="lazy" decoding="async" width="500" height="665" src="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-500x665.png" alt="" class="wp-image-10127" style="width:300px" srcset="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-500x665.png 500w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-225x300.png 225w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-113x150.png 113w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-768x1022.png 768w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU-1154x1536.png 1154w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-CPU.png 1186w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Although you only see one metric by default, there are many more hidden under Attributes!</figcaption></figure>
</div>


<p>The first thing to understand about linux2mqtt is that it sends a basic state plus a number of state attributes for each sensor. For example, the CPU sensor displays percentage used by default but also sends User, Nice, System, Idle, and so on as &#8220;Attributes&#8221;. These can be seen in the Home Assistant UI by clicking the Attributes dropdown box below the sensor History graph. You can show these attributes in some (but far too few) dashboard cards, or you can create a helper template to use them anywhere.</p>



<p>I don&#8217;t love this. But it&#8217;s what we have to work with.</p>



<p>The easiest thing to do is simply use the basic/default sensor attributes when building Home Assistant cards. This works pretty well for CPU and temperature sensors, and I&#8217;m using those as-is. Total Rate isn&#8217;t too bad for network usage, but I would prefer to show transfer and receive rate. And I&#8217;m really not happy with a display of bytes used as my disk statistic.</p>



<p>Happily, the default Entity Card can show Attributes right from the GUI. I just selected Percent under Attributes, added &#8220;%&#8221; as the Unit, and added a sensible Name. Once you add this, Home Assistant will even show you a proper historic graph for this Attribute when you click on the value. Nice!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="279" src="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-500x279.png" alt="" class="wp-image-10128" srcset="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-500x279.png 500w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-300x167.png 300w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-150x84.png 150w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-768x428.png 768w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-1536x856.png 1536w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-2048x1141.png 2048w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-750x420.png 750w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-Virtual-Memory-630x350.png 630w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">The Entity Card can use Attributes directly from the Visual Editor</figcaption></figure>
</div>


<p>Looking in the Code Editor, we can see how the Entity Card specifies this Attribute in yaml:</p>



<pre class="wp-block-code"><code>type: entity
entity: sensor.pet_linux_disk_usage_volume
attribute: percent
unit: "%"
name: /</code></pre>



<p>This gives us clues as to how to present this information in other Cards. Some can handle Attributes if you enter them in the Code Editor, while others simply can&#8217;t display them. Sadly the Glance Card does not support Attributes, but I was able to create some slick Cards!</p>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-large is-resized"><img loading="lazy" decoding="async" width="500" height="840" src="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats-500x840.png" alt="" class="wp-image-10126" style="width:300px" srcset="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats-500x840.png 500w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats-179x300.png 179w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats-89x150.png 89w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats-768x1290.png 768w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-Linux-System-Stats.png 886w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">This dashboard combines the mini-graph-card with the basic Entity card</figcaption></figure>
</div>


<p>The linux2mqtt page suggests using <a href="https://github.com/kalkih/mini-graph-card?tab=readme-ov-file">kalkih&#8217;s mini-graph-card</a> to display graphs of sensor data, and I found it to be quite attractive once I customized it. This Card is available in HACS &#8211; just search for mini-graph-card!</p>



<p>Although mini-graph-card doesn&#8217;t support visual editing, it&#8217;s fairly easy to add Attributes to its graphs. For example, here&#8217;s my yaml for a slick network graph:</p>



<pre class="wp-block-code"><code>type: custom:mini-graph-card
entities:
  - entity: sensor.pet_linux_network_throughput_nic_enp2s0
    show_graph: false
  - entity: sensor.pet_linux_network_throughput_nic_enp2s0
    attribute: tx_rate
    name: Transmit
  - entity: sensor.pet_linux_network_throughput_nic_enp2s0
    attribute: rx_rate
    name: Receive
hours_to_show: 24
decimals: 0
name: Pet Network
lower_bound: 0
smoothing: false
show:
  legend: false
  fill: false
  points: false</code></pre>



<p>The resulting card shows aggregate throughput as well as transmit and receive graphs for the host Pet. You&#8217;ll note that the basic aggregate throughput is displayed but not graphed while the transmit and receive stats are graphed on the same scale. I hid the legend, points, and fill since they were simply visual clutter.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="308" src="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU-500x308.png" alt="" class="wp-image-10138" srcset="https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU-500x308.png 500w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU-300x185.png 300w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU-150x92.png 150w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU-768x472.png 768w, https://blog.fosketts.net/wp-content/uploads/2024/12/HA-Pet-CPU.png 956w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Here&#8217;s my updated CPU and memory card</figcaption></figure>
</div>


<p>Here&#8217;s a nice mini-graph-card setup for CPU and memory. Substitute your own sensor IDs as needed:</p>



<pre class="wp-block-code"><code>type: custom:mini-graph-card
entities:
  - entity: sensor.pet_linux_cpu
    show_graph: false
  - entity: sensor.pet_linux_thermal_zone_k10temp_tctl
    show_state: true
    show_graph: false
  - entity: sensor.pet_linux_virtual_memory
    attribute: percent
    unit: "% RAM"
    show_state: true
    show_graph: false
  - entity: sensor.pet_linux_cpu
    attribute: user
    name: User
  - entity: sensor.pet_linux_cpu
    attribute: system
    name: System
  - entity: sensor.pet_linux_cpu
    attribute: iowait
    name: Wait
hours_to_show: 24
decimals: 1
name: Pet CPU
smoothing: false
show:
  fill: false
  points: false</code></pre>



<h3 class="wp-block-heading">Stephen&#8217;s Stance</h3>



<p>This little project of adding remote system stats to a Dashboard illustrates what I love and hate about Home Assistant. It&#8217;s an excellent platform for collecting and displaying metrics and has an incredible ecosystem of add-ons and supported protocols. But actually getting what you want can be frustrating and fidgety, as witnessed by the spotty support for Attributes in various cards. It&#8217;s frustrating that Attributes are not supported in the Glance card or the new Badges, for instance. But I was ultimately able to make it all work, and the result was worth the effort.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2024/12/30/how-to-monitor-linux-server-stats-in-home-assistant/">How to Monitor Linux Server Stats in Home Assistant</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2024/12/30/how-to-monitor-linux-server-stats-in-home-assistant/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>How To Migrate From Docker Volumes to External Storage</title>
		<link>https://blog.fosketts.net/2024/11/01/how-to-migrate-from-docker-volumes-to-external-storage/</link>
					<comments>https://blog.fosketts.net/2024/11/01/how-to-migrate-from-docker-volumes-to-external-storage/#respond</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Fri, 01 Nov 2024 18:33:41 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[activepieces]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgres_data]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[redis_data]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[volumes]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10115</guid>

					<description><![CDATA[<p>Maybe I'm a caveman or a fool, but I don't love Docker volumes. By moving data to a host filesystem I can manage the data more easily using standard software, and can modify it more easily if needed. The little trick of using tar to pipe data out of a Docker volume allowed me to do this with applications like Postgres, Redis, and MySQL, not to mention WordPress. I hope this helps you get your data out of Docker volumes too!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2024/11/01/how-to-migrate-from-docker-volumes-to-external-storage/">How To Migrate From Docker Volumes to External Storage</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>Pretty much everything I do these days, at least in terms of systems administration, is done using Docker Compose. I love the ease and flexibility of running and upgrading containerized applications, and have developed a solid understanding of the whole stack. Although I love Kubernetes, it&#8217;s way too much for my simple applications, which consist mainly of WordPress and MediaWiki, as well as specialized applications like ActivePieces, Ubiquiti&#8217;s Unifi controller, and Home Assistant. But I don&#8217;t love the default configuration of many Docker Compose files: They too often store important data in Docker volumes or even in running containers!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="500" src="https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-500x500.jpeg" alt="" class="wp-image-10116" srcset="https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100-100x100.jpeg 100w, https://blog.fosketts.net/wp-content/uploads/2024/11/IMG_1100.jpeg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></figure>
</div>


<h3 class="wp-block-heading">My Standard Docker Compose Deployment</h3>



<p>I have a standardized Docker host setup running in various locations on-prem and in the cloud. I use Ubuntu Linux and store all of my containers in /srv/sites on a dedicated Linux volume. I also use a dedicated Linux volume for /var/lib/docker to make sure I never use up all the space with other tasks (hello backup) and kill it. It&#8217;s just my way.</p>



<p>Each application has a separate subdirectory in /srv/sites, with the Docker compose file, .env file, and so on stored in a subdirectory beneath that (e.g. /srv/sites/blogfoskettsnet/docker-bfn/docker-compose.yml). All application data is stored in subdirectories under a data directory (e.g. /srv/sites/blogfoskettsnet/data). This keeps everything nice and orderly and allows me to back up, migrate, and restore data with ease.</p>



<pre class="wp-block-code"><code>/srv/site/blogfoskettsnet/docker-bfn/docker-compose.yml
/srv/site/blogfoskettsnet/docker-bfn/.env
/srv/site/blogfoskettsnet/data/db/&lt;mariadb files>
/srv/site/blogfoskettsnet/data/site/wordpress-core/&lt;wordpress install files>
/srv/site/blogfoskettsnet/data/site/wp-content/&lt;wordpress content files></code></pre>



<p>I &#8220;inherited&#8221; this configuration from my OG web hosting approach, <a href="https://github.com/evertramos/">Evert Ramos</a>&#8216; &#8220;<a href="https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion">Docker Compose LetsEncrypt NGINX Proxy Companion</a>&#8220;. Although I relied on this setup for years, I have lately migrated to my own solution leveraging Cloudflare Tunnels, which I will document soon!</p>



<h3 class="wp-block-heading">Why Migrate From Docker Volumes?</h3>



<p>Today I am documenting how to migrate data out of a Docker volume to run it natively on the host. Why would you want to do this? Portability and maintainability is a big reason: If you want to migrate a container from one host to another you have to bring the data with you. And it&#8217;s not easy to do this with Docker&#8217;s native volumes, since they are stored in /var/lib/docker in an obscure format. It is possible to migrate a volume to another Docker host, but it&#8217;s much easier to simply move the data in a filesystem!</p>



<p>Every time I encounter a head-scratching issue with Docker I am reminded that it was designed more to facilitate software development than to run applications in production. I&#8217;ve been ranting for over a decade at the foolish trade-off of IOPS for capacity in the overlay filesystem, and I recently banged my head on my desk when I saw the foolish default network address space allocation.</p>



<p>I feel much the same way about Docker volumes: They&#8217;re cool, but they&#8217;re really not a good idea in practice.</p>



<p>Docker containers should be ephemeral. To realize the potential of containerization, one should be able to move just the Docker compose file, environment variables, and application data to another host or a fresh install and re-start it. To an old-school sysadmin like me, this is pure freaking magic: Blow away the entire system, re-build it fresh, and have it start as if nothing has changed.</p>



<p>Most package creators realize that storing critical application data inside a running container image is just plain dumb. But they have been lured in by the siren song of Docker volumes. The promise of volumes is to externalize data so containers can be re-built easily. But data in a Docker volume is still stored inside the Docker host&#8217;s environment in /var/lib/docker, placing it outside the reach of administrators and developers.</p>



<p>It is far superior to map external host storage into a container. Data remains easily accessible and can be manipulated, backed up, and restored using conventional tools. For example, having /etc/mysql/conf.d or /usr/local/etc/php/conf.d mapped to a regular host storage path allows you to tune the behavior of mysql or php without having to muck about inside containers or volumes. And having /var/www/html/wp-content mapped to a regular filesystem location instead of a Docker volume is a godsend when it comes to data protection!</p>



<h3 class="wp-block-heading">How To Migrate From Docker Volumes to External Storage</h3>



<p>What can you do if you&#8217;re faced with an application that uses Docker volumes and you want to migrate it to native host storage? The following approach worked for me and ought to work for you as well. This is based on <a href="https://www.guidodiepen.nl">Guido Diepen</a>&#8216;s 2016 guide to migrating data between Docker volumes and should be fairly straightforward if you have a reasonably strong understanding of Docker.</p>



<p class="has-text-align-center"><em><strong>I am intentionally not including step-by-step instructions here: It&#8217;s dangerous to muck about if you don&#8217;t have a good level of Linux sysadmin and Docker experience. If this sounds confusing, don&#8217;t do it!</strong></em></p>



<p>First, get to know the volumes at hand. For this example, I will migrate the Postgres and Redis data used by <a href="https://www.activepieces.com">ActivePieces</a> to native storage. ActivePieces creates two Docker volumes, postgres_data and redis_data. These are defined in the compose file and mounted to the Postgres and Redis containers, respectively.</p>



<pre class="wp-block-code"><code>sfoskett$ docker volume list
DRIVER    VOLUME NAME
local     activepieces_postgres_data
local     activepieces_redis_data</code></pre>



<p>Rather than worrying about where storage is mounted in a running container, Diepen realized you could directly map a Docker volume to a known location in a new container. He piped the output of a tar command to another tar running on a new Docker host, allowing the volume to be migrated. But it also allows us to export the data for use on native host storage!</p>



<p>Here&#8217;s a one-liner to export the activepieces_postgres_data volume to a local tar file:</p>



<pre class="wp-block-code"><code>sfoskett$ docker run --rm -v activepieces_postgres_data:/from alpine ash -c "cd /from ; tar -cf - . " > ~/activepieces_postgres_data.tar</code></pre>



<p>That&#8217;s it! Just substitute the name of any Docker volume for &#8220;activepieces_postgres_data&#8221; in two spots in this one-liner and you&#8217;ve got a tar file of the complete volume data.</p>



<p>From there, I simply un-tarred the data to the desired filesystem location on the host:</p>



<pre class="wp-block-code"><code>sfoskett$ cd /srv/sites/activepieces/data/postgres
sfoskett$ sudo tar -xvpf ~/activepieces_postgres_data.tar</code></pre>



<p>Note the &#8220;p&#8221; in there &#8211; this preserves the ownership (user and group) of the files. These are then mapped directly into the running container, which creates some weird-looking ownership on the host! For example, the Redis container uses uid 999 for its data, which is ZeroTier on my server! This is just a quirk of container storage mapping and should be ignored &#8211; don&#8217;t try to fix the ownership!</p>



<p>Then I just needed to fix the mapping in the ActivePieces Docker compose file:</p>



<pre class="wp-block-code"><code>sfoskett$ diff docker-compose.yml.bak docker-compose.yml
26c26
&lt;       - postgres_data:/var/lib/postgresql/data
---
>       - ./../data/postgres:/var/lib/postgresql/data
34c34
&lt;       - 'redis_data:/data'
---
>       - ./../data/redis:/data
37,39c37,39
&lt; volumes:
&lt;   postgres_data:
&lt;   redis_data:
---
> #volumes:
>   #postgres_data:
>   #redis_data:</code></pre>



<p>And voila! I now have ActivePieces running with data stored on the local filesystem instead of inside a Docker volume! This allows me to easily move my running ActivePieces instance from one host to another by creating a tar file (as root) of /srv/sites/activepieces and expanding it elsewhere. Magic!</p>



<p>&#8230;except it&#8217;s not magic because I also want to use Cloudflare Tunnels to hide all of my applications and allow them to be run anywhere, on any hardware, without opening up network ports. But that&#8217;s a story for a different post!</p>



<h3 class="wp-block-heading">Stephen&#8217;s Stance</h3>



<p>Maybe I&#8217;m a caveman or a fool, but I don&#8217;t love Docker volumes. By moving data to a host filesystem I can manage the data more easily using standard software, and can modify it more easily if needed. The little trick of using tar to pipe data out of a Docker volume allowed me to do this with applications like Postgres, Redis, and MySQL, not to mention WordPress. I hope this helps you get your data out of Docker volumes too!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2024/11/01/how-to-migrate-from-docker-volumes-to-external-storage/">How To Migrate From Docker Volumes to External Storage</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2024/11/01/how-to-migrate-from-docker-volumes-to-external-storage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Taming Power Outages in the Home and Small Office</title>
		<link>https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/</link>
					<comments>https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/#respond</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Tue, 28 Feb 2023 13:37:39 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[EcoFlow]]></category>
		<category><![CDATA[EcoFlow Delta Pro]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[solar]]></category>
		<category><![CDATA[UPS]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10041</guid>

					<description><![CDATA[<p>I worked primarily from home for over a decade, and though I now have an office with a few employees, many of the challenges remain the same. Key among these is power, or lack thereof, and the havoc it can wreak. I recently set about upgrading from my old consumer UPS approach to a real always-on power solution for the home, and thought my blog readers would like to follow along!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/">Taming Power Outages in the Home and Small Office</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>I worked primarily from home for over a decade, and though I now have an office with a few employees, many of the challenges remain the same. Key among these is power, or lack thereof, and the havoc it can wreak. I recently set about upgrading from my old consumer UPS approach to a real always-on power solution for the home, and thought my blog readers would like to follow along!</p>



<p>I&#8217;ll begin with an overview of what&#8217;s available for home and small office power backup. This is by no means exhaustive, but it reflects the realistic options I found when researching. I welcome your suggestions in the comments!</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="500" src="https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-500x500.jpeg" alt="" class="wp-image-10052" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag-100x100.jpeg 100w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-and-Portable-Solar-in-bag.jpeg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">EcoFlow Delta Pro &#8220;solar generator&#8221; with portable solar panel</figcaption></figure>
</div>


<h2 class="wp-block-heading">Office UPS Units</h2>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="300" height="300" src="https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-300x300.jpeg" alt="" class="wp-image-10046" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550-100x100.jpeg 100w, https://blog.fosketts.net/wp-content/uploads/2023/02/APC-Back-UPS-ES-550.jpeg 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption class="wp-element-caption">Most of us have a few of these around the home or office, typically with a dead battery&#8230;</figcaption></figure>
</div>


<p>By far the easiest approach to dealing with power outages is to use a consumer un-interruptable power system (UPS). These are widely available and start around $100, making them easy to deploy.</p>



<p>The biggest issue with consumer UPSes is that they lack any real long-term power capability. Despite the big numbers on the box the run time for a UPS is measured in minutes rather than hours, making them an incomplete solution if the power is out for long. Even larger or more expensive ones only last a few hours, and running them down to zero will destroy the expensive batteries inside. This is the other big issue. Expect to spend about the purchase price every few years to replace the sealed lead-acid batteries. Most UPS controls can&#8217;t actually detect a bad battery so you&#8217;re often surprised when your UPS instantly dies without warning. UPS units also can&#8217;t power high-wattage devices like the sump pump that keeps my basement dry. And their AC inverters are cheap, noisy square wave &#8220;choppers&#8221; so some equipment might not like the power.</p>



<p>Still, UPS units are a great way to quickly cover short-term power outages and can make a nice complement to a bigger power solution. In fact, I spent some money replacing the batteries in a few UPS units to make sure the rest of my solution is truly uninterrupted!</p>



<h2 class="wp-block-heading">Gas-Powered Generators</h2>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="300" height="211" src="https://blog.fosketts.net/wp-content/uploads/2023/02/640px-Honda_EBR2300CX_004-300x211.jpg" alt="" class="wp-image-10047" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/640px-Honda_EBR2300CX_004-300x211.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/640px-Honda_EBR2300CX_004-500x352.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/640px-Honda_EBR2300CX_004-150x105.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/640px-Honda_EBR2300CX_004.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption class="wp-element-caption"><a href="https://commons.wikimedia.org/w/index.php?curid=22960474">By Tennen-Gas &#8211; Own work, CC BY-SA 3.0</a></figcaption></figure>
</div>


<p>One popular solution to longer-term power outages is a generator. Smaller portable units typically cost around $1000 while large fixed generators can cost more than 10 times that much. They usually use liquid fuel (gasoline) or gas (propane or natural gas) to power a small piston engine (air or liquid cooled) and run an AC inverter. Portable generators usually have a few conventional AC outlets, so you would run extension cords inside to keep a few key appliances running, while larger units are usually hard-wired to the house.</p>



<p>Because they burn fossil fuels, generators must be vented and usually are placed outdoors when running. This complicates installation and use. Portable generators are usually stored in a garage or shed and rolled out manually when needed. So it takes a good hour to get up and running, since the generator must be moved into place and fueled and extension cables must be run to necessary appliances. As anyone with a lawnmower knows, small engines like these require maintenance and gasoline (even with fuel stabilizers) can go bad over time. Unless you are careful to regularly test and maintain your generator you might find that it won&#8217;t start or run reliably when you need it most! Propane is much better in this regard, since it is more stable and portable. Natural gas hookups are even better. But the engines still require maintenance (oil changes, air filter cleaning, etc) regardless of fuel.</p>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="300" height="300" src="https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator-300x300.jpeg" alt="" class="wp-image-10048" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator-100x100.jpeg 100w, https://blog.fosketts.net/wp-content/uploads/2023/02/Honeywell-22kW-Home-Standby-Generator.jpeg 680w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption class="wp-element-caption"><a href="https://www.costco.com/honeywell-22kw-home-standby-generator-with-transfer-switch.product.100767860.html">Honeywell 22kW Home Standby Generator, </a>Costco.com</figcaption></figure>
</div>


<p>&#8220;Whole house&#8221; generators are permanently installed, typically on a slab of concrete, and wired to a transfer switch inside the house. I talked to many friends and neighbors who spent the money (typically $10,000 to $20,000) for a complete whole-home generator setup and none was happy with theirs. The best setups use an automatic transfer switch (see below) and power on once a month, yet they often failed to perform as expected in outages. I&#8217;m sure people will disagree in the comments (especially dealers of whole-home generators) but the reviews of these solutions are awful. A family member is on their third unit and recently found that it needs to be replaced again! On the plus side, whole-home generators can power the entire house and (in theory) can be activated in a few minutes in the event of an outage.</p>



<p>One common issue with generator-based solutions is fuel consumption. Although manufacturers no longer publish &#8220;idle&#8221; numbers, it is clear that they are most efficient under moderate to heavy load. Most will &#8220;drink&#8221; 25% or even 50% as much at light load as at full throttle. This might not be a problem (apart from cost and pollution) when connected to a natural gas pipe or large tank, but it&#8217;s a real concern for portable units with small tanks. Because it&#8217;s not a good idea to store gasoline for months or years, be prepared to run to the station to fill up when the power goes out! This is one reason to consider propane instead: It&#8217;s stable for years and a 20 lb tank runs as long as 5 gallons of gasoline.</p>



<h2 class="wp-block-heading">Solar Panels</h2>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="294" height="300" src="https://blog.fosketts.net/wp-content/uploads/2023/02/706px-Children_of_the_Sun_Solar_Initiative_48132850231-294x300.jpg" alt="" class="wp-image-10049" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/706px-Children_of_the_Sun_Solar_Initiative_48132850231-294x300.jpg 294w, https://blog.fosketts.net/wp-content/uploads/2023/02/706px-Children_of_the_Sun_Solar_Initiative_48132850231-500x510.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/706px-Children_of_the_Sun_Solar_Initiative_48132850231-147x150.jpg 147w, https://blog.fosketts.net/wp-content/uploads/2023/02/706px-Children_of_the_Sun_Solar_Initiative_48132850231.jpg 706w" sizes="auto, (max-width: 294px) 100vw, 294px" /><figcaption class="wp-element-caption"><a href="https://commons.wikimedia.org/w/index.php?curid=79977287">By U.S. Department of Energy from United States &#8211; Children of the Sun Solar Initiative, Public Domain</a></figcaption></figure>
</div>


<p>Solar panels are amazing, but they don&#8217;t solve the problem alone. One of the common misconceptions about solar panels is that they will power your home or business in the event of an outage. In fact, this is illegal in most locations and is simply not practical. Solar panels are an excellent power source, help reduce greenhouse and CO2 emissions, and cost less than you would think. But most installations are grid-connected and do not provide power in the event of an outage, even on a sunny day! This would require the addition of a battery and transfer switch, which is much more costly and complex, as we will discuss.</p>



<p>Solar panels have really improved over the last few decades, and today&#8217;s panels can provide an incredibly amount of electric power at very low cost. In fact, it is now cheaper to buy and install solar than to use conventional power for just a few years. But the power they provide varies dramatically moment-to-moment. A shadow on a panel can reduce or stop production, and they must be properly angled to maximize output. And of course they only produce electricity in direct sunlight. Therefore most modern solar deployments are connected to the electric grid, offsetting your demand or even powering the local grid when the sun is shining. Many also use &#8220;micro inverters&#8221; to output AC from each panel to reduce the impact of local shadows or under-performing panels on the rest of the system.</p>



<p>For the purposes of this article, I will lump solar panels together with the public grid as a power source but not as a solution to cover mid- to long-term power outages for the home or office. I strongly recommend investing in solar, however, since it brings many benefits and doesn&#8217;t cost as much as you think! Many in the DiY community are buying bulk or surplus panels for well under $1000 and connecting them to the expensive systems listed here.</p>



<h2 class="wp-block-heading">Larger Battery Systems</h2>



<p>I&#8217;ve mentioned batteries a few times so far, so it&#8217;s time to tackle the peculiarities of these. When considering battery-backed power, it&#8217;s important to consider the cost and benefits of the various options. There are small battery systems like the UPS mentioned earlier and larger solutions like the Tesla Power Wall and similar devices. Then we must consider chemistry, from lead-acid to lithium-ion, and the variations on each.</p>



<p>Since we covered consumer UPS devices above, let&#8217;s focus only on larger units capable of supplying 1 kWh or more. If you&#8217;re on a budget, there are a variety of less-expensive battery systems designed for computer and telecom racks. These <a href="https://www.mobile-solarpower.com/server-rack-lifepo4.html">typically cost</a> $1000-$2000 for 5 kWh, which is remarkably affordable compared to name-brand packs. They can be paired with an inverter and solar panel management system for $1300 more, resulting in a functional system under $5000. There&#8217;s a whole world of DiY solar and battery hackers out there, and they&#8217;re doing <a href="https://www.youtube.com/channel/UCxsQVLAwuT_4UGewTEaHr0Q">amazing work</a> <a href="https://www.youtube.com/user/nocrf50here">building batteries out of surplus laptop cells</a>, but this is certainly not for everyone. Still, there are some amazing resources out there like Will Prouse&#8217;s <a href="https://www.mobile-solarpower.com">mobile-solarpower.com</a> and <a class="vglnk" href="https://diysolarforum.com/" rel="nofollow"><span>diysolarforum.com</span></a>.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="271" src="https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla-500x271.jpg" alt="" class="wp-image-10050" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla-500x271.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla-300x163.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla-150x81.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla-768x416.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/1280px-Batterie_Powerwall_de_Tesla.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption"><a href="https://www.flickr.com/photos/158096755@N08/41981900820">By Kenneth Lund</a>, CC BY 2.0</figcaption></figure>
</div>


<p>The Tesla Power Wall is a very nice integrated battery solution that works with or without solar panels. As of 2023 you can only buy a Tesla Power Wall with a complete solar solution, and the battery unit itself costs $12,850 for 13.5 kWh. Tesla uses lithium nickel manganese cobalt oxide (NMC) power cells in the Power Wall and carefully manages them (reducing usable capacity) to avoid damaging them. Tesla also sells solar roof tiles, but they are really not competitive: I priced out a Tesla solar and Power Wall solution for my home and it was over $100,000! Even a roof-mounted solar panel system with a power wall came out over $30k from a local provider.</p>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="300" height="225" src="https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3-300x225.jpeg" alt="" class="wp-image-10051" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3-300x225.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3-500x375.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3-150x113.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3-768x576.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/EcoFlow-Delta-Pro-3.jpeg 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption class="wp-element-caption">EcoFlow Delta Pro &#8220;solar generator&#8221;</figcaption></figure>
</div>


<p>There is also an emerging class of so-called &#8220;solar generators&#8221; which combine solar and other DC inputs with an AC inverter and battery in a single unit. Some of these are compact and portable while others are larger and heavier or even fixed in place. Technically even the Tesla Power Wall is a solar generator! Perhaps the best of breed as of 2023 is the <a href="https://www.ecoflow.com/us/delta-pro-portable-power-station">EcoFlow Delta Pro</a>, one of the most successful kickstarter projects of all time. It uses an advanced LFP battery and provides 3.6 kWh of power as part of an ecosystem of products. Spoiler alert: I just bought two!</p>



<h2 class="wp-block-heading">From Extension Cords to Transfer Switches</h2>



<p>One of the biggest issues for battery backup solutions is cabling. How do you connect your existing equipment to the generator or battery and how do you switch over (and back) when the power goes out? Most cheaper &#8220;solutions&#8221; rely on a nest of extension cords from the generator to the devices themselves, rolled out and plugged in by hand when the power goes out. This is especially an issue for portable generators since they must be placed outside when running! The inside/outside issue is one reason most people lack any kind of power protection and many generators remain unused even when the power does go out.</p>



<p>The recommended solution for generators is to hard-wire a power circuit from the pad or patio to the breaker board. This can be terminated inside as one or more electrical outlets, but this still requires extension cords or manual re-wiring inside. A better solution is a transfer switch, which cuts the connection of a whole circuit from the grid to the backup generator or battery. A cheap manual transfer switch costs about $200 but requires manual activation when the power goes out. Automatic transfer switches exist too, but they&#8217;re much more expensive, starting at $1000. And any transfer switch requires extensive electrical installation work.</p>



<p>High-end transfer switches are able to switch between supplies (grid, solar, battery, or generator) nearly instantly, often using an app or schedule, and the best can prioritize various circuits based on demand and supply of power. For example, all circuits could be cut over to battery or generator power when the power goes out and lower-priority circuits could be cut as the power reserve is depleted. These can also dynamically allocate power, for example running on solar on sunny days and switching to the grid or battery at night. <a href="https://www.ecoflow.com/us/whole-home-backup-power-solution">EcoFlow&#8217;s Smart Home Panel</a> is an example of this smart home transfer switch.</p>



<h2 class="wp-block-heading">What Solution is Right for You?</h2>



<p>There are a lot of options, but it&#8217;s difficult to recommend any one solution. Solar panels are amazing, but an integrated solar setup can be costly and still won&#8217;t power your equipment through an outage without a battery backup system. Generators are cheap but most people are disappointed by the (lack of) usability in practice. It&#8217;s incredibly challenging to select and construct a system that is affordable and user friendly, leading many people to simply make do without power.</p>



<p>Expect to pair multiple devices to arrive at a complete solution. Even the fastest automatic transfer switch or generator inverter will have a gap, so a downstream UPS is required to keep computers up and running. And solar panels work best when paired with a battery and automatic transfer switch. You get the picture: You&#8217;re going to be buying and integrating a few different components.</p>



<h2 class="wp-block-heading">Stephen&#8217;s Stance</h2>



<p>I recently went through the process of evaluating and selecting an emergency power solution, and this article is the first in a series to lay out the various options. Although I&#8217;m something of a hacker, I decided to go with an integrated ecosystem rather than DiY, yet I couldn&#8217;t justify the expense of a Tesla solar roof and Power Wall setup. I ended up purchasing <a href="https://www.ecoflow.com/collections/smart">a pair of EcoFlow Delta Pro &#8220;solar generators&#8221; and their Smart Home Panel switch</a>. I&#8217;ll go into more detail in later posts!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/">Taming Power Outages in the Home and Small Office</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2023/02/28/taming-power-outages-in-the-home-and-small-office/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Monitor Air Traffic With a Software-Defined Radio and a Raspberry Pi</title>
		<link>https://blog.fosketts.net/2023/02/16/monitor-air-traffic-with-a-software-defined-radio-and-a-raspberry-pi/</link>
					<comments>https://blog.fosketts.net/2023/02/16/monitor-air-traffic-with-a-software-defined-radio-and-a-raspberry-pi/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Thu, 16 Feb 2023 17:00:00 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[ADS-B]]></category>
		<category><![CDATA[FlightAware]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[SDR]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10030</guid>

					<description><![CDATA[<p>If you're a real hacker, you're interested in all sorts of tech, from computers and the internet to radio to airplanes. The intersection of all of these interests is ADS-B, the protocol used by aircraft to share data like position and speed. Widespread availability of cheap software-defined radio (SDR) receivers and cheap computers like the Raspberry Pi makes it easy for anyone to join a global network sharing ADS-B data. Read on to learn how to build your own ADS-B receiver for under $100 and get involved!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/16/monitor-air-traffic-with-a-software-defined-radio-and-a-raspberry-pi/">Monitor Air Traffic With a Software-Defined Radio and a Raspberry Pi</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>If you&#8217;re a <a href="https://en.wikipedia.org/wiki/Hacker_culture">real hacker</a>, you&#8217;re interested in all sorts of tech, from computers and the internet to radio to airplanes. The intersection of all of these interests is <a href="https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillance–Broadcast">ADS-B</a>, the protocol used by aircraft to share data like position and speed. Widespread availability of cheap software-defined radio (SDR) receivers and cheap computers like the Raspberry Pi makes it easy for anyone to join a global network sharing ADS-B data. Read on to learn how to build your own ADS-B receiver for under $100 and get involved!</p>



<h2 class="wp-block-heading">A Little Background on ADS-B</h2>



<p>Although it has a creepy name, <a href="https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillance–Broadcast">Automatic Dependent Surveillance–Broadcast (ADS-B)</a> is pretty cool. Most countries now require all aircraft to broadcast flight data, including position, altitude, speed, and heading, using a standard digital packet-based protocol. This data comes from on-board GPS receivers and other instruments. Larger, high-flying aircraft send these once per second at 1090 MHz. The goal of ADS-B is to augment or even replace radar as the primary means of coordinating flights and avoiding accidents.</p>



<p>Essentially, ADS-B lets receivers &#8220;see&#8221; every aircraft in the sky, and this data is used by pilots, air traffic control, and many others besides. Take a look at <a href="https://flightaware.com">FlightAware</a> and you&#8217;ll a real-time visualization of ADS-B data from thousands of receivers all around the world. But this data isn&#8217;t just collected and used by companies like FlightAware: A network of independent enthusiasts is also collecting, processing, and sharing this data. This was exemplified by ADSB Exchange, but <a href="https://arstechnica.com/tech-policy/2023/01/the-flight-tracker-that-powered-elonjet-has-taken-a-left-turn/">after they were purchased by a for-profit company</a> the task was picked up by <a href="https://globe.adsb.fi">ADSB.fi</a> and others.</p>



<p>As mentioned, all aircraft are required to broadcast ADS-B data, including private and military planes. But FlightAware and similar services only focus on commercial traffic, filtering out everything else. Wouldn&#8217;t it be interesting to see everything?</p>



<h2 class="wp-block-heading">Software-Defined Radio and the ADS-B Community</h2>



<p>A few years back, cheap USB TV tuners began appearing on the market. But hardware hackers quickly noted that the <a href="https://www.realtek.com/en/products/communications-network-ics/item/rtl2832u">RealTek RTL2832U ASIC</a> could receive much more than TV data. Indeed, custom software could enable this little chip to receiv data across the spectrum, including weather, emergency services, and even satellites. A whole world of hobbyist software-defined radio (SDR) applications was opened up!</p>



<p>It&#8217;s important to note that this chip is receive only. In other words, it can &#8220;listen&#8221; to nearly any frequency but can not transmit. There is no risk of interfering with fire fighters, astronomers, or air traffic controllers. And the USB device needs software and supporting hardware to function.</p>



<p>Thankfully, the ubiquitous Raspberry Pi has plenty of horsepower to support most SDR applications, and free software is widely available. Applications like <a href="https://github.com/antirez/dump1090">Dump1090</a> can extract and decode data transmissions from the RTL SDR device, making ADS-B data widely available and usable. This has been embraced both by FlightAware and by a broad international community. There are literally tens of thousands of independently-operated ADS-B receivers collecting and sharing this data all around the world.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="500" src="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-500x500.jpeg" alt="" class="wp-image-10034" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-500x500.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-300x300.jpeg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-150x150.jpeg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-768x768.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-1536x1536.jpeg 1536w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-2048x2048.jpeg 2048w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7174-100x100.jpeg 100w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">The <a class="vglnk" href="http://RTL-SDR.com" rel="nofollow"><span>RTL-SDR.com</span></a> kit has everything you need to set up your own home ADS-B receiver station!</figcaption></figure>
</div>


<h2 class="wp-block-heading">Build Your Own ADS-B Receiver!</h2>



<p>If you&#8217;re interested in exploring this community, it&#8217;s easy and cheap to build your own ADS-B station, using an RTL-SDR dongle and a Raspberry Pi. It literally took less than half an hour for me to start receiving data and sharing it with FlightAware and ADSB.fi! I&#8217;m going to list the simple steps here, but I encourage to to get involved with the community if you want to go deeper or try a different solution.</p>



<p>What you need:</p>



<ul class="wp-block-list">
<li>A Raspberry Pi &#8211; including appropriate power supply and SD card (I used a Model 3B that I had laying around)</li>



<li>An RTL-SDR dongle &#8211; <a href="https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/">I bought a kit from <span>rtl-sdr.com</span></a> and had it shipped direct from China but it&#8217;s also available from Amazon (watch out for fakes!)</li>



<li>An antenna &#8211; The RTL-SDR kit I bought came with an antenna that works fine</li>



<li>Software &#8211; <a href="https://www.raspberrypi.com/software/operating-systems/">Raspberry Pi OS Lite</a>, <a href="https://flightaware.com/adsb/piaware/build">PiAware</a>, <a href="https://github.com/d4rken/adsb-fi-scripts">adsb-fi-scripts</a> (there are a lot of software options but this works)</li>
</ul>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="214" height="300" src="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186-214x300.jpeg" alt="" class="wp-image-10039" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186-214x300.jpeg 214w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186-500x703.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186-107x150.jpeg 107w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186-768x1079.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7186.jpeg 911w" sizes="auto, (max-width: 214px) 100vw, 214px" /><figcaption class="wp-element-caption">My simple home ADS-B setup</figcaption></figure>
</div>


<p>What to do:</p>



<ol class="wp-block-list">
<li>Set up the Raspberry Pi
<ul class="wp-block-list">
<li>Install Raspberry Pi OS Lite (bullseye 32-bit) on a micro SD card</li>



<li>In raspi-config, configure localization, enable SSH, and set up Wi-Fi</li>



<li>Install fail2ban, add your ssh keys, and disable password-based and root login</li>



<li>I strongly recommend using an official Raspberry Pi power adapter, since generic ones often lack sufficient power and you&#8217;re going to have a juice-sucking USB device permanently attached and running!</li>
</ul>
</li>



<li>Connect the RTL-SDR dongle and antenna
<ul class="wp-block-list">
<li>Plug the dongle into any USB port on the Pi</li>



<li>Screw the antenna base cable to the dongle</li>



<li>Attach the long antennas to the antenna base</li>



<li>Arrange the antennas in a &#8220;T&#8221; shape but do not extend them further</li>



<li>Attach the antenna base to the tripod and arrange it so the antennas are vertical (pointing up and down)</li>



<li>Place the antenna near an outside wall, as high up as possible</li>
</ul>
</li>



<li>Set up the ADS-B software
<ul class="wp-block-list">
<li>Download and install the piaware-repository, dump1090, and dump978 <a href="https://flightaware.com/adsb/piaware/install">per the instructions from FlightAware</a></li>



<li>Reboot and you&#8217;re in business! Go to raspberrypi:8080 to see a web interface on your device!</li>



<li>Register for a FlightAware account and <a href="https://flightaware.com/adsb/piaware/claim">claim your PiAware instance</a> to get a free Enterprise account</li>



<li>Install the <a href="https://github.com/d4rken/adsb-fi-scripts">adsb-fi-scripts per their GitHub</a> to also send data to <a href="https://adsb.fi/">ADSB.fi</a></li>



<li>Install their local interface too (step 4 in the GitHub) and visit raspberrypi/adsbfi/ to see their graph</li>
</ul>
</li>
</ol>



<p>You will be tempted to stretch the antenna all the way out and arrange it like a &#8220;V.&#8221; Don&#8217;t do this. <a href="https://forum.planefinder.net/threads/most-common-mistakes-in-construction-of-diy-ads-b-antennas.1285/">Antennas are bizarre witchcraft</a>. A quarter wavelength antenna at 1090 MHz is just 65.3 mm (2.57 inches) and a half wave (twice this) is roughly the length of the longer metal antenna in the kit. That&#8217;s the longest antenna you want! And it&#8217;s best to orient it straight up and down (like a sideways &#8220;T&#8221;). Just do this for the time being until you&#8217;re ready to nerd out about the antenna.</p>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><img loading="lazy" decoding="async" width="218" height="300" src="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-218x300.jpeg" alt="" class="wp-image-10037" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-218x300.jpeg 218w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-500x687.jpeg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-109x150.jpeg 109w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-768x1056.jpeg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176-1117x1536.jpeg 1117w, https://blog.fosketts.net/wp-content/uploads/2023/02/IMG_7176.jpeg 1179w" sizes="auto, (max-width: 218px) 100vw, 218px" /><figcaption class="wp-element-caption">Hey look! A British A380 was flying overhead!</figcaption></figure>
</div>


<p>I love that the ADSB.fi interface generates a coverage map for you, as seen at right. It&#8217;s a rough indication of how far your rig can see, and is regenerated every time you boot. I recommend setting everything up and letting it run for a few hours in various spots around the house to fine the most convenient and effective spot. I did exactly this and my ADS-B station now covers most of Northeast Ohio! I&#8217;m tracking 13 aircraft and receiving over 80 messages per second as I type this.</p>



<h2 class="wp-block-heading">What&#8217;s The Point?</h2>



<p>Although I was excited enough about the prospect of my own ADS-B receiver to but the SDR dongle and set it up, I can imagine some people might be confused. What&#8217;s the point of tracking planes? I gave that a thought:</p>



<ol class="wp-block-list">
<li>The hacker ethos is all about seeing the unseen and investigating the unknown. It&#8217;s fun to slap together a few bits of hardware and software and have it do something unusual.</li>



<li>Because ADS-B is not encrypted or authenticated, some have suggested it could be spoofed or hacked. A proliferation of independent ground stations and robust data collection and processing can help detect or prevent this, keeping everyone safer.</li>



<li>If you&#8217;ve ever heard a plane and wondered what it was, nothing beats having your own receiver! Within 12 hours I spotted (and heard) a <a href="https://en.wikipedia.org/wiki/Lockheed_C-130_Hercules">Canadian CC-130</a>, an American <a href="https://en.wikipedia.org/wiki/Boeing_E-6_Mercury">E-6 Mercury</a>, and a rescue helicopter, and none of these were listed on the commercial flight tracker apps!</li>



<li>Nerds love radio, free software, and airplanes and this brings it all together.</li>



<li>Hey, free Enterprise-level FlightAware account?</li>
</ol>



<p>Yes, FlightAware is a for-profit company and they are selling the data I&#8217;m collecting. But I&#8217;ve used their data for free for years, and am ok with this trade. Plus it&#8217;s simple to contribute to the open community at ADSB.fi at the same time!</p>



<h2 class="wp-block-heading">Stephen&#8217;s Stance</h2>



<p>This whole process took about 30 minutes from unpacking to planespotting, plus a few hours tinkering with antennas. It&#8217;s a great way to explore the world of software-defined radio (SDR) while contributing a useful data source. Plus it&#8217;s fun to know what that plane was!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/16/monitor-air-traffic-with-a-software-defined-radio-and-a-raspberry-pi/">Monitor Air Traffic With a Software-Defined Radio and a Raspberry Pi</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2023/02/16/monitor-air-traffic-with-a-software-defined-radio-and-a-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>How to Disable Ads on Your YouTube Channel (Mostly)</title>
		<link>https://blog.fosketts.net/2023/02/04/how-to-disable-ads-on-your-youtube-channel-mostly/</link>
					<comments>https://blog.fosketts.net/2023/02/04/how-to-disable-ads-on-your-youtube-channel-mostly/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Sat, 04 Feb 2023 18:32:32 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[YouTube]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=10015</guid>

					<description><![CDATA[<p>YouTube is essentially the only game in town when it comes to Internet video, with a critical mass of viewers and tight integration with Google search. Back in 2020, Google enabled ads on all YouTube videos, even for publishers who had previously opted out. It is possible to disable ads in videos on your channel, but there are some serious limits. This post explains how to disable ads on your YouTube videos.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/04/how-to-disable-ads-on-your-youtube-channel-mostly/">How to Disable Ads on Your YouTube Channel (Mostly)</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>YouTube is essentially the only game in town when it comes to Internet video, with a critical mass of viewers and tight integration with Google search. Back in 2020, Google enabled ads on all YouTube videos, even for publishers who had previously opted out. It is possible to disable ads in videos on your channel, but there are some serious limits. This post explains how to disable ads on your YouTube videos.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="367" src="https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization-500x367.jpg" alt="" class="wp-image-10021" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization-500x367.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization-300x220.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization-150x110.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization-768x564.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/YouTube-Channel-Monetization.jpg 1371w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Not everyone wants to monetize their YouTube channel!</figcaption></figure>
</div>


<h2 class="wp-block-heading">YouTube, Google, and Advertising</h2>



<p>Ads are everywhere on the Internet, with most big tech companies relying on advertising for most of their revenue. This is obvious for big content companies like Google/Alphabet, Facebook/Meta, Twitter, and TikTok/ByteDance, but is even true of tech companies like Apple and Microsoft. The proliferation of advertising has enabled some content producers to build successful businesses, especially those with large and broad audiences. Google in particular has developed a lucrative but closed system of search, content hosting, and advertising. I&#8217;m not fundamentally opposed to advertising-driven business models, though I am disappointed that so many people think ads are the only way to make money.</p>



<p>Advertising has a dark side, with low-quality ads, distasteful pitches, and the ad-heavy layout of many websites. It seems that too many websites are designed to push ads rather than content, and this is doubly true of video content. Rather than getting to the point and sharing information or ideas, many YouTube videos are structured to maximize ad placement in a scramble for profit. I will say again that these creators have a right to make money in any legal way they can find, but this is not the only business model that can exist!</p>



<p>I don&#8217;t run ads on any website I manage. Instead, I draw a salary from my own business, which makes money producing content for enterprise IT companies. I host two weekly podcasts (<a href="https://gestaltit.com/podcasts/">On-Premise IT</a> and <a href="https://UtilizingTech.com">Utilizing Tech</a>) and <a href="https://gestaltit.com/rundown/">a weekly tech news program</a>, publish <a href="https://GestaltIT.com">a tech news website</a> with a full-time staff, and <a href="https://TechFieldDay.com">host regular IT events</a>, but none of this is ad-supported. Our events are directly sponsored by enterprise technology companies, and they also sponsor some (but not most) of the regular written and video content we produce. I don&#8217;t run any ads on my non-business websites or social media channels either (this one, plus <a href="https://Grail-Watch.com">Grail Watch</a>).</p>



<p>I long ago made the choice not to participate in the ad-driven economy. My content is too niche to draw a massive audience, so ads just don&#8217;t make sense. Even the <a href="https://YouTube.com/TechFieldDay">Tech Field Day YouTube channel</a> would only earn a few hundred dollars a year from YouTube ads. And this is with 45,000 subscribers and a million views watching well over 100,000 hours of content! Instead, I developed a different business model focused on content marketing professionally and simply open sharing personally.</p>



<p>The challenge for people like me is that YouTube as a business is funded by advertising. I don&#8217;t begrudge them, though I do wish they offered an alternative for people like me who don&#8217;t want ads in our content. I have been paying Vimeo for ad-free video hosting for over a decade and would happily pay YouTube for the same, but they simply don&#8217;t offer this option. And the tight integration between Google and YouTube makes it impractical and viewer-unfriendly to withhold our videos from the most popular video site on the internet. </p>



<p>For a while, YouTube allowed channels to (partially) opt out of advertising. But back in 2020 they enabled advertising on all content on the site. So we begrudgingly post videos to YouTube and grimace as our viewers sit through ads.</p>



<h2 class="wp-block-heading">How to (Mostly) Disable YouTube Ads</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Note: This is a post for YouTube publishers, not YouTube viewers. I am aware that there are some ad-blocking solutions for viewers, but that&#8217;s not the subject of this post.</p>
</blockquote>



<p>As of 2020, YouTube can run ads on all videos from all publishers and does run ads on most video views. It appears that ads don&#8217;t run in embedded videos or videos that are shown as part of a playlist, but this is not a certainty. What is certain is that YouTube is running ads on most videos viewed on their site, even for non-monetizing or smaller publishers.</p>



<p>That being said, it is now possible for some channels to disable advertising on their videos. The process is quite counter-intuitive, however, and is not well documented:</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="500" src="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-500x500.jpg" alt="" class="wp-image-10018" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-500x500.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-300x300.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-150x150.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-768x768.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM-100x100.jpg 100w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.47.52-AM.jpg 1000w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption"><strong>You have to enable advertising in order to disable ads!</strong></figcaption></figure>
</div>


<p>YouTube allows &#8220;Partners&#8221; to turn &#8220;monetization&#8221; on or off on individual videos on their channels and to modify the type of ads that run. This means that you can entirely disable advertising on a video-by-video basis and can entirely disable especially annoying ad types, including non-skippable, overlay, and sponsored card ads.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="276" src="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM-500x276.jpg" alt="" class="wp-image-10017" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM-500x276.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM-300x166.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM-150x83.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM-768x424.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-12.10.12-PM.jpg 956w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">The five types of YouTube ads</figcaption></figure>
</div>


<p>You must join the YouTube Partner Program (YPP) to have any say at all about the ads that run with your videos. But YouTube restricts access to the YPP to sites that meet certain criteria:</p>



<ol class="wp-block-list">
<li>You must have at least 1,000 subscribers</li>



<li>You must have at least 4,000 &#8220;watch hours&#8221; per year</li>



<li>You must meet <a href="https://support.google.com/youtube/answer/72851?hl=en#:~:text=Live%20in%20a%20country%20or,linked%20and%20approved%20AdSense%20account">some other qualifications as described in detail by Google</a></li>
</ol>



<p>This means that even some successful channels (including <a href="https://YouTube.com/GestaltITVideo">my own Gestalt IT channel</a>) are ineligible for YPP.</p>



<p>Once you join the YouTube Partner Program you will be able to turn off any of the five ad types shown above. This applies to your entire channel and all of your content. I personally dislike overlay ads, sponsored cards, and non-skippable video ads so I disabled those right away.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="330" src="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-500x330.jpg" alt="" class="wp-image-10019" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-500x330.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-300x198.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-150x99.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-768x507.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-1536x1014.jpg 1536w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.52.40-AM-2048x1352.jpg 2048w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">You can see monetization status and turn advertising on or off in the &#8220;Channel content&#8221; menu</figcaption></figure>
</div>


<p>You can also enable or disable monetization on a video-by-video basis. You do this from the &#8220;Channel content&#8221; menu in YouTube Studio:</p>



<ol class="wp-block-list">
<li>Select the videos</li>



<li>Click Edit</li>



<li>Click Monetization</li>



<li>Turn it on or off</li>



<li>Click Update Videos</li>
</ol>



<p>The sort and filter options on this list make it easier to select videos for this process. For example, you might want to enable or disable advertising for older or newer videos or for your most popular ones. But you can&#8217;t do it for an entire playlist, which would be nice.</p>



<p>You could theoretically disable advertising entirely for your entire channel using this process, but I recommend enabling some advertising on some videos. Perhaps turn it off for your newest content but leave it on for some of your &#8220;back catalog&#8221; or &#8220;greatest hits&#8221;. After all, YouTube is providing a service by hosting your videos and advertising revenue is their business model. And it might be against the terms of service for the YouTube Partner Program to disable all ads on your channel. I do wish they offered a paid &#8220;no ads&#8221; option for channel owners, though. And it would be nice if smaller channels could join YPP.</p>


<div class="wp-block-image">
<figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="317" src="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-500x317.jpg" alt="" class="wp-image-10020" srcset="https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-500x317.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-300x190.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-150x95.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-768x487.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM-1536x974.jpg 1536w, https://blog.fosketts.net/wp-content/uploads/2023/02/Screen-Shot-2023-02-04-at-10.51.17-AM.jpg 1980w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">As a YPP member, you can turn Monetization on or off on a video-by-video basis</figcaption></figure>
</div>


<h2 class="wp-block-heading">Stephen&#8217;s Stance</h2>



<p>I&#8217;m not entirely opposed to advertising as a business model, but it often gets out of hand. I don&#8217;t like the ad content I&#8217;m seeing on YouTube, Twitter, and especially ad-oriented websites, and have built my own business model around sponsorship rather than display ads. It&#8217;s nice that I can disable ads on some of my content, but the limits of the YPP approach are so strict that I suspect this won&#8217;t work for most people. I do with YouTube offered any other option for content creators!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2023/02/04/how-to-disable-ads-on-your-youtube-channel-mostly/">How to Disable Ads on Your YouTube Channel (Mostly)</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2023/02/04/how-to-disable-ads-on-your-youtube-channel-mostly/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>How To Auto-Post to Mastodon Using Zapier</title>
		<link>https://blog.fosketts.net/2022/11/13/how-to-auto-post-to-mastodon-using-zapier/</link>
					<comments>https://blog.fosketts.net/2022/11/13/how-to-auto-post-to-mastodon-using-zapier/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Sun, 13 Nov 2022 18:34:49 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[linkblog]]></category>
		<category><![CDATA[Mastodon]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Zapier]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=9999</guid>

					<description><![CDATA[<p>With the current turmoil at Twitter, many people are turning to the federated social media network built around Mastodon as their new social outlet. Once I started posting there, a few old friends asked me to share my #SymLink, #PackRat, and #GoodRead links on Mastodon, since they enjoyed reading the contents. Since my posting process is entirely automated using Zapier, I automated posting to Mastodon using it as well. Here's an easy way to add automatic posting to Mastodon using Zapier!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/11/13/how-to-auto-post-to-mastodon-using-zapier/">How To Auto-Post to Mastodon Using Zapier</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>With the current turmoil at Twitter, many people are turning to the federated social media network built around Mastodon as their new social outlet. Once I started posting there, a few old friends asked me to share my <a href="https://blog.fosketts.net/2015/04/16/my-symbolic-links/">#SymLink, #PackRat, and #GoodRead links</a> on Mastodon, since they enjoyed reading the contents. Since my posting process is entirely automated using Zapier, I automated posting to Mastodon using it as well. Here&#8217;s an easy way to add automatic posting to Mastodon using Zapier!</p>



<h2 class="wp-block-heading">Warning: Tread Lightly!</h2>



<p>Mastodon is not Twitter!</p>



<p>People will not take kindly to a flood of spam coming from your account and will block you. Quickly. They might even block your whole server, which will quickly get you kicked off by your admins.</p>



<p>I strongly suggest (nay, <em>demand</em>) that you establish your account, learn the social norms of your Mastodon instance, and play nice with the people there.</p>



<p>In fact, I thought about not sharing this at all. But frankly it&#8217;s so easy anyone could figure it out, and <a href="https://leancrew.com/all-this/2022/11/announcing-new-posts-on-mastodon/">Dr. Drang already shared his python method</a>. At least if I post it I can include the above warning.</p>



<p>Do not use this power for evil!</p>



<h2 class="wp-block-heading">What You Need</h2>



<p>In order to auto-post to Mastodon using this method you need to prepare a few things:</p>



<ol class="wp-block-list">
<li>You need a functional account on a Mastodon server that allows API access (<a href="https://hachyderm.io/web/@SFoskett">I use Hachyderm.io</a>)</li>



<li>You need to set up a new application with API keys (see below)</li>



<li>You need a functional Zapier account at Starter level or above (which costs $19/mo currently) so you can use their &#8220;Webhooks by Zapier&#8221; action</li>



<li>You need some other source of data to auto-post (I have a very complicated setup that shares based on starred RSS items in Feedbin)</li>
</ol>



<p>Again, be aware that auto-posting might violate the terms of service on your Mastodon instance or annoy the community there. Be careful.</p>



<p>I won&#8217;t walk you through getting a Mastodon account. I suggest <a href="https://joinmastodon.org/servers">finding a server in the public directory</a> and signing up for yourself! And while you&#8217;re at it, maybe give me a follow! I&#8217;m <a href="https://hachyderm.io/web/@SFoskett">@SFoskett@Hachyderm.io</a></p>



<h2 class="wp-block-heading">Get Your API Keys</h2>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><a href="https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM.jpg"><img loading="lazy" decoding="async" width="280" height="300" src="https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-280x300.jpg" alt="" class="wp-image-10001" srcset="https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-280x300.jpg 280w, https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-500x535.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-140x150.jpg 140w, https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-768x822.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM-1436x1536.jpg 1436w, https://blog.fosketts.net/wp-content/uploads/2022/11/Screen-Shot-2022-11-13-at-1.17.56-PM.jpg 1720w" sizes="auto, (max-width: 280px) 100vw, 280px" /></a><figcaption class="wp-element-caption">Woo Hoo! I&#8217;m done!</figcaption></figure>
</div>


<p>Most Mastodon servers allow you to set up applications. Assuming they&#8217;re using the official Mastodon software, here&#8217;s how to do it:</p>



<ol class="wp-block-list">
<li>In the web interface, go to your account and drop down the menu next to your name</li>



<li>Select <strong>Preferences</strong></li>



<li>Click <strong>Development</strong></li>



<li>Click <strong>New application</strong></li>



<li>Enter an <strong>Application name</strong> like maybe &#8220;Zapier Autopost&#8221;</li>



<li>Leave everything else as-is and click <strong>Submit</strong> (you could limit it to <strong>write</strong> if you want)</li>



<li>Click your new application name in the list and note <strong>Your access token</strong></li>
</ol>



<p>That&#8217;s it. All you need is the access token for your new application. No need to mess with anything else.</p>



<h2 class="wp-block-heading">Set Up Zapier</h2>


<div class="wp-block-image">
<figure style=' float: right;'  class="alignright size-medium"><a href="https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-scaled.jpg"><img loading="lazy" decoding="async" width="271" height="300" src="https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-271x300.jpg" alt="" class="wp-image-10002" srcset="https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-271x300.jpg 271w, https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-500x553.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-136x150.jpg 136w, https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-768x849.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-1389x1536.jpg 1389w, https://blog.fosketts.net/wp-content/uploads/2022/11/Webhooks-by-Zapier-Mastodon-POST-1853x2048.jpg 1853w" sizes="auto, (max-width: 271px) 100vw, 271px" /></a><figcaption class="wp-element-caption">Yeah it&#8217;s really this easy</figcaption></figure>
</div>


<p>Zapier is very powerful but the interface has gotten more and more annoying and slow every year. Still, it works pretty well. I imagine you could do pretty much exactly the same thing using any webhook automation on any other platform. Leave a comment if you figured it out on some other site!</p>



<p>Here&#8217;s how to automate posting in Zapier:</p>



<ol class="wp-block-list">
<li>Build a Zap that gets some sharable data from somewhere. Maybe an RSS feed of your favorite reader app.</li>



<li>Add &#8220;a step &#8220;Webhooks by Zapier&#8221; as an output step</li>



<li>Select &#8220;POST&#8221; as the <strong>Event</strong></li>



<li>In <strong>Set up action</strong> enter the following:</li>



<li><strong>URL</strong> is the webhook URL for your host. e.g. &#8220;<span><span><a class="vglnk" href="https://yourhost.com" rel="nofollow"><span>https://yourhost.com</span></a></span></span>/api/v1/statuses&#8221;</li>



<li><strong>Data</strong> key is &#8220;status&#8221; and value is whatever you want to share (from the input source or other Zapier steps)</li>



<li><strong>Headers</strong> key is &#8220;Authorization&#8221; and value is &#8220;Bearer XXXABC123&#8221; (where XXXABC123 is your access token from above)</li>
</ol>



<p>And that&#8217;s it! Zapier even gives you the URL of your post as an output if you want to record it somewhere.</p>



<h2 class="wp-block-heading">Advanced Stuff</h2>



<p>You can customize your post a bit more, and probably should.</p>



<ul class="wp-block-list">
<li>Add a &#8220;spoiler_text&#8221; string in <strong>Data</strong> to create a so-called content warning (for example &#8220;Automatically Posted&#8221;)</li>



<li>Add a &#8220;visibility&#8221; string in <strong>Data</strong> to restrict who can see your post &#8211; use &#8220;direct&#8221; when testing so no one else sees it, and try &#8220;unlisted&#8221; for less-public things. The default is &#8220;public&#8221; but you can also use &#8220;private&#8221;</li>
</ul>



<p>You can also add media to your post! This requires a webhook run to upload the media prior to adding it to the status. The POST to upload the media is similar to the one above:</p>



<ul class="wp-block-list">
<li><strong>URL</strong> is the web hook URL for media posting, e.g. &#8220;<a class="vglnk" href="https://you" rel="nofollow"><span>https://you</span></a><a class="vglnk" href="http://rhost.com" rel="nofollow"><span>rhost.com</span></a>/api/v1/media&#8221;</li>



<li><strong>DATA</strong> key &#8220;description&#8221; is optional but recommended</li>



<li><strong>FILE</strong> is the URL of the media you want to upload</li>



<li><strong>HEADERS</strong> &#8220;Authorization&#8221; is as above</li>
</ul>



<p>The webhook post will return an ID of the media which can then be added to the status post immediately after. In <strong>Data</strong> add a key called &#8220;media_ids[]&#8221; with the value being the media ID from above. This will attach the media to the status post.</p>



<h2 class="wp-block-heading">Stephen&#8217;s Stance</h2>



<p>Auto-posting to Mastodon using Zapier is so simple I feel bad writing an entire blog post just to say how easy it is. Honestly, Mastodon is really refreshing compared to Twitter, and I hope that automatic posts and bots won&#8217;t take over the place. But if they try, I hope users and admins will block them. I wouldn&#8217;t be doing this if my friends didn&#8217;t miss <a href="https://blog.fosketts.net/2015/04/16/my-symbolic-links/">my Symbolic Links and Good Reads</a>!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/11/13/how-to-auto-post-to-mastodon-using-zapier/">How To Auto-Post to Mastodon Using Zapier</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2022/11/13/how-to-auto-post-to-mastodon-using-zapier/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>How To Install ZeroTier on TrueNAS 12</title>
		<link>https://blog.fosketts.net/2022/02/03/how-to-install-zerotier-on-truenas-12/</link>
					<comments>https://blog.fosketts.net/2022/02/03/how-to-install-zerotier-on-truenas-12/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Thu, 03 Feb 2022 22:51:03 +0000</pubDate>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Terabyte home]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[FreeNAS]]></category>
		<category><![CDATA[iXsystems]]></category>
		<category><![CDATA[pfSense]]></category>
		<category><![CDATA[Time Machine]]></category>
		<category><![CDATA[TrueNAS]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[ZeroTier]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=9976</guid>

					<description><![CDATA[<p>ZeroTier is an incredibly useful tool to enable true access from anywhere to any networked resource. Although TrueNAS has removed ZeroTier support, the FreeBSD package is easy to install and seems to work fine! The only issue is that it doesn't persist across reboots without some major risky work.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/02/03/how-to-install-zerotier-on-truenas-12/">How To Install ZeroTier on TrueNAS 12</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://blog.fosketts.net/2022/01/14/how-to-connect-everything-from-everywhere-with-zerotier/">ZeroTier is an incredibly useful tool</a> to enable true access from anywhere to any networked resource. I&#8217;ve been using it for a few months to access my Home Assistant instances, VNC to my home Mac, and log in to my servers even as I&#8217;m traveling and using odd networks like airplane and hotel Wi-Fi and LTE on my iPhone. Although TrueNAS has removed ZeroTier support, the FreeBSD package is easy to install and seems to work fine! The only issue is that it doesn&#8217;t persist across reboots without some major risky work.</p>



<div class="wp-block-image"><figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full"><img loading="lazy" decoding="async" width="1798" height="286" src="https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS.jpg" alt="" class="wp-image-9982" srcset="https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS.jpg 1798w, https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS-300x48.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS-500x80.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS-150x24.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS-768x122.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/02/ZeroTier-networks-on-TrueNAS-1536x244.jpg 1536w" sizes="auto, (max-width: 1798px) 100vw, 1798px" /><figcaption>Proof that ZeroTier can run natively on TrueNAS 12!</figcaption></figure></div>



<p class="has-text-align-center"><em>You would probably like my other article, <a href="https://blog.fosketts.net/2022/01/14/how-to-connect-everything-from-everywhere-with-zerotier/">How to Connect Everything from Everywhere with ZeroTier</a></em></p>



<h2 class="wp-block-heading" id="freenas-truenas-and-zerotier">FreeNAS, TrueNAS, and ZeroTier</h2>



<p>TrueNAS is one of the best options for building a home or small office fileserver. Formerly known as FreeNAS, it uses ZFS and FreeBSD to provide reliable and flexible storage. I&#8217;ve previously written about <a href="https://blog.fosketts.net/2016/08/10/14-drives-14-ports-case-freenas/">my home TrueNAS build</a>, which I use for general file storage as well as Time Machine backups, and it&#8217;s still going strong.</p>



<p>ZeroTier was offered as an installable package for FreeNAS but was removed in version 11.3. <a href="https://www.truenas.com/community/threads/secure-access-to-lan-from-wan.81424/#post-564650">According to Kris Moore</a>, SVP of Engineering at iXsystems, maker of TrueNAS, it was removed for licensing reasons. Apparently, ZeroTier no longer allows governmental or SaaS use, and iXsystems felt this was incompatible with TrueNAS. Although it is possible to access a TrueNAS system using OpenVPN, WireGuard, or even through a router on a ZeroTier network, I strongly prefer a native ZeroTier client.</p>



<h2 class="wp-block-heading" id="install-freebsd-packages-on-truenas-12">Install FreeBSD Packages on TrueNAS 12</h2>



<p>Since TrueNAS is built on FreeBSD 12, it can easily run the native FreeBSD build of ZeroTier. Although TrueNAS is configured by default not to allow installation of FreeBSD packages, it is fairly easy to enable this and install ZeroTier.</p>



<p>The first step is to allow FreeBSD packages to be installed. <a href="https://www.justinsilver.com/random/fix-pkg-on-freenas-11-2/">As documented by Justin Silver</a>, this requires modifying two files to enable access to the FreeBSD repository. SSH to your TrueNAS box and do the following.</p>



<p>Disable local packages:</p>



<pre class="wp-block-preformatted">sudo vi /usr/local/etc/pkg/repos/local.conf
# Change "enabled: yes" to "enabled: no" to turn off access to the local packages repo</pre>



<p>Enable FreeBSD packages:</p>



<pre class="wp-block-preformatted">sudo vi /usr/local/etc/pkg/repos/FreeBSD.conf
# Change "enabled: no" to "enabled: yes" to allow access to the FreeBSD packages repo</pre>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1296" height="356" data-id="9977" src="https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_.jpg" alt="" class="wp-image-9977" srcset="https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_.jpg 1296w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_-300x82.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_-500x137.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_-150x41.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-FreeBSD.conf_-768x211.jpg 768w" sizes="auto, (max-width: 1296px) 100vw, 1296px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1296" height="356" data-id="9978" src="https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_.jpg" alt="" class="wp-image-9978" srcset="https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_.jpg 1296w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_-300x82.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_-500x137.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_-150x41.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2022/02/FreeBSD-local.conf_-768x211.jpg 768w" sizes="auto, (max-width: 1296px) 100vw, 1296px" /></figure>
<figcaption class="blocks-gallery-caption">Change two files to allow access to FreeBSD packages</figcaption></figure>



<p>Now you will be able to install any FreeBSD package using the native pkg utility. This will not persist following a reboot, so updating ZeroTier won&#8217;t be possible without going through these steps again!</p>



<h2 class="wp-block-heading" id="install-zerotier-on-truenas-12">Install ZeroTier on TrueNAS 12</h2>



<p>Assuming you have already set up ZeroTier and have a network ID, type the following in your TrueNAS terminal to install and configure <a href="https://www.freshports.org/net/zerotier/">the FreeBSD ZeroTier package</a>:</p>



<pre class="wp-block-preformatted">sudo pkg install zerotier
sudo /usr/local/sbin/zerotier-one -d
sudo /usr/local/bin/zerotier-cli join &lt;your network ID></pre>



<p>If all goes as expected, your TrueNAS box will now show up in your ZeroTier Central interface. Accept it and (optionally) manually assign an IP address.</p>



<p>Use ifconfig to validate that the interfaces are up, and type sudo /usr/local/bin/zerotier-cli listnetworks to ensure that any networks show &#8220;OK&#8221;. Next, test connectivity by pinging your TrueNAS machine from another ZeroTier client and vice-versa. If everything went OK you should have no trouble accessing your file server from anywhere!</p>



<h2 class="wp-block-heading" id="make-zerotier-persistent-on-truenas-12">Make ZeroTier Persistent on TrueNAS 12</h2>



<p>But there&#8217;s still one big issue with TrueNAS: It wipes all this configuration after every reboot! So you&#8217;ll have to re-start the ZeroTier daemon and re-join all your networks each time you reboot. That&#8217;s a bummer.</p>



<p>If you want to make ZeroTier (or any other service on TrueNAS) persistent across reboots you have to do some black magic to override this behavior.</p>



<div class="wp-block-image"><figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full"><img loading="lazy" decoding="async" width="540" height="250" src="https://blog.fosketts.net/wp-content/uploads/2022/02/McCoy-Permit-Illegal-Thing.jpg" alt="" class="wp-image-9980" srcset="https://blog.fosketts.net/wp-content/uploads/2022/02/McCoy-Permit-Illegal-Thing.jpg 540w, https://blog.fosketts.net/wp-content/uploads/2022/02/McCoy-Permit-Illegal-Thing-300x139.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2022/02/McCoy-Permit-Illegal-Thing-500x231.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/02/McCoy-Permit-Illegal-Thing-150x69.jpg 150w" sizes="auto, (max-width: 540px) 100vw, 540px" /><figcaption>The following is dangerous and could result in a non-bootable system. Just like visiting Planet Genesis in Star Trek III, modifying TrueNAS like this is forbidden!</figcaption></figure></div>



<p>The TrueNAS developers really don&#8217;t want people mucking about with FreeBSD, and for good reason. Making changes to the OS is a great way to ruin a perfectly good system install! But it is possible to modify the configuration in a way that persists, and that&#8217;s what we&#8217;re going to do. Proceed with caution!</p>



<p>ZeroTier uses a few components in different places, some of which won&#8217;t be touched by a TrueNAS reboot. The binaries in /usr/local/sbin and /usr/local/bin are safe, but the configuration files in /var/db/zerotier-one and the daemon setup won&#8217;t survive a reboot.</p>



<p>We need to add a ZeroTier script to /etc/local/rc.d and add an enable to /etc/rc.local so the daemon will start on boot. Thankfully, <a href="https://github.com/ChanceM/pfSense-pkg-zerotier">ChanceM has put in the work for pfSense</a> (which is also FreeBSD based) and we can use <a href="https://github.com/ChanceM/pfSense-pkg-zerotier/blob/master/zerotier">his zerotier rc script</a>!</p>



<pre class="wp-block-preformatted"># Go to <a class="vglnk" href="https://github.com/ChanceM/pfSense-pkg-zerotier/blob/master/zerotier" rel="nofollow"><span>https://github.com/ChanceM/pfSense-pkg-zerotier/blob/master/zerotier</span></a> and copy the text of that file

sudo vi /etc/local/rc.d/zerotier
# Paste in the text and save with :wq

# Make it executable
sudo chmod 555 /etc/local/rc.d/zerotier

# Test your new ZeroTier service
sudo service zerotier stop
sudo service zerotier start</pre>



<p>Now we&#8217;ll set FreeBSD to start the ZeroTier daemon automatically on reboot.</p>



<pre class="wp-block-preformatted">sudo vi /etc/rc.conf

# add the following line right before nginx_enable:
zerotier_enable="Yes"</pre>



<p>Before you proceed, check that your ZeroTier configuration is 100% working!</p>



<p>TrueNAS stores the persistent configuration in /conf/base and uses this to wipe the /etc, /mnt, and /var directories on boot. You can modify /conf/base and make changes to the config using the following commands.</p>



<pre class="wp-block-preformatted"># Before proceeding, get ZeroTier installed and join any and all networks you want to persist!

# back up the ZeroTier components that need to persist
cd / ; sudo tar -cvf ~/zerotier.tar etc/rc.conf etc/local/rc.d/zerotier var/db/zerotier-one
# make the root filesystem writable
sudo mount -uw /
# restore our configuration to the persistent area
cd /conf/base
sudo tar -xvpf ~/zerotier.tar</pre>



<p>That&#8217;s it! ZeroTier should persist across a reboot!</p>



<p>It&#8217;s also likely that upgrading to a new version of TrueNAS will wipe out some or all of this configuration, but the zerotier.tar file we created above should be a good backup. But be careful because restoring it will blow away the contents of rc.conf and that could be bad!</p>



<h2 class="wp-block-heading" id="time-machine-from-anywhere-with-zerotier-and-truenas">Time Machine from Anywhere with ZeroTier and TrueNAS</h2>



<p>My next step is to enable Time Machine backups from my various Mac machines to my TrueNAS box. I created a second ZeroTier network for this so I can have better control over the process: Time Machine starts automatically when you are &#8220;on network&#8221; with the target server but this isn&#8217;t always desirable when you&#8217;re connected via LTE or other expensive or slow networks. Since it&#8217;s simple to have multiple ZeroTier networks configured and running at once, I can connect to or disconnect from my Time Machine network to allow backups to happen.</p>



<p>Once the Time Machine network is set up, I connect to the fileserver using the ZeroTier Time Machine network IP address and configure Time Machine on my Mac to use this as a target. After this, all I have to do is connect to the Time Machine network in ZeroTier and my Mac will see the file server and begin backing up on a regular basis!</p>



<p>I actually haven&#8217;t gotten this working yet because I&#8217;m having issues backing up to TrueNAS shares. But I was able to get it working from one Mac to another, so it ought to work fine. The issue is TrueNAS not ZeroTier.</p>



<h2 class="wp-block-heading" id="stephen-s-stance">Stephen&#8217;s Stance</h2>



<p>Don&#8217;t do this. Seriously, if you&#8217;re wondering if you should enable ZeroTier natively on TrueNAS but aren&#8217;t sure about all this, just stop now. I&#8217;ve been a UNIX sysadmin for over 25 years, and I&#8217;m extremely comfortable mucking about with systems, but most people probably aren&#8217;t. Also I don&#8217;t really have time to debug your particular configuration, so please don&#8217;t expect this of me.</p>



<p>If you&#8217;re a UNIX nerd like me, though, this is an effective way to install ZeroTier natively on TrueNAS. It&#8217;s not perfect (the ZeroTier interfaces don&#8217;t show up in TrueNAS Network Summary, for example) but it&#8217;s definitely usable! And maybe all this will help others wondering how to install software and persist across reboots on TrueNAS.</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/02/03/how-to-install-zerotier-on-truenas-12/">How To Install ZeroTier on TrueNAS 12</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2022/02/03/how-to-install-zerotier-on-truenas-12/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Scam Alert: Fake DMCA Takedown for Link Insertion</title>
		<link>https://blog.fosketts.net/2022/01/24/scam-alert-fake-dmca-takedown-for-link-insertion/</link>
					<comments>https://blog.fosketts.net/2022/01/24/scam-alert-fake-dmca-takedown-for-link-insertion/#comments</comments>
		
		<dc:creator><![CDATA[Stephen]]></dc:creator>
		<pubDate>Mon, 24 Jan 2022 16:08:38 +0000</pubDate>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[DMCA]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[scam]]></category>
		<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">https://blog.fosketts.net/?p=9958</guid>

					<description><![CDATA[<p>There are a lot of scams out there, but one that's been plaguing bloggers like me lately is a novel twist: A fake DMCA takedown notice that's actually a link insertion scam! Beware: The notices I'm getting are very convincing-looking, complete with a fake law firm website!</p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/01/24/scam-alert-fake-dmca-takedown-for-link-insertion/">Scam Alert: Fake DMCA Takedown for Link Insertion</a></small></p>
]]></description>
										<content:encoded><![CDATA[
<p>There are a lot of scams out there, but one that&#8217;s been plaguing bloggers like me lately is a novel twist: A fake DMCA takedown notice that&#8217;s actually a link insertion scam! Beware: The notices I&#8217;m getting are very convincing-looking, complete with a fake law firm website!</p>



<div class="wp-block-image"><figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="500" src="http://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-500x500.jpg" alt="" class="wp-image-9966" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-500x500.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-300x300.jpg 300w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-150x150.jpg 150w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-768x768.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square-100x100.jpg 100w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-square.jpg 1430w" sizes="auto, (max-width: 500px) 100vw, 500px" /></figure></div>



<p class="has-text-align-center">Check out <a href="https://news.ycombinator.com/item?id=30061298">the discussion on this post over at Hacker News</a>!</p>



<h2 class="wp-block-heading" id="copyright-infringement-and-link-insertion">Copyright Infringement and Link Insertion</h2>



<p>As publisher of <a href="https://GestaltIT.com">Gestalt IT</a>, <a href="https://Grail-Watch.com">Grail Watch</a>, and this blog, I&#8217;ve received quite a few copyright infringement notices over the years. Although some were mistakes or misunderstandings, most are a scam of some sort. The most common are &#8220;shakedowns&#8221; for cash, but the link insertion scam seems to be on the rise.</p>



<p>As a content creator, I&#8217;ve always been careful to carefully check rights on images I use and use proper attribution. I&#8217;ve been on the wrong side of these issues, with large sites using my photos without permission or credit, so I encourage my staff to go the extra mile and verify all content on my sites. That&#8217;s why it&#8217;s so galling to get an email suggesting that I have improperly used someone else&#8217;s work!</p>



<p><a href="https://en.wikipedia.org/wiki/Spamdexing#Link_spam">Link insertion</a> is a long-standing &#8220;black hat&#8221; practice which seeks to manipulate search results by adding links to a low-quality site from higher-quality domains. That&#8217;s why editors of long-running and high-quality blogs like me are bombarded by offers for guest blog posts, pseudo affiliate programs, and outright paid link insertion. I literally get 5-10 such offers every day across my various properties, and I imagine the problem is much worse for larger sites. Be warned that these scams can cause catastrophic damage to your site&#8217;s hard-earned search engine ranking if you accept them!</p>



<h2 class="wp-block-heading" id="anatomy-of-a-fake-dmca-notice">Anatomy of a Fake DMCA Notice</h2>



<p>Now let&#8217;s take a look at a recent scam that combines these two categories: A fake DMCA notice that&#8217;s actually a link insertion scam!</p>



<p>I received the following email on January 23, 2022. It was sent to the former editor of Gestalt IT, so the email ended up in my inbox. This is not unusual: Scammers usually send to every email at the domain, so I often get multiple copies of such emails.</p>



<div class="wp-block-image"><figure style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-large"><img loading="lazy" decoding="async" width="500" height="563" src="https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1-500x563.jpg" alt="" class="wp-image-9960" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1-500x563.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1-266x300.jpg 266w, https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1-133x150.jpg 133w, https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1-768x865.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/Fake-DMCA-Takedown-Email-1.jpg 1324w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption>This screenshot shows a link insertion scam disguised as a DMCA Takedown request</figcaption></figure></div>



<p>Let&#8217;s take a walk through the email and spot all the warning signs of a scam:</p>



<ol class="wp-block-list"><li>Most obviously, <strong>the request for a link</strong> rather than a monetary payment is a blatant sign that this isn&#8217;t a real copyright claim but a link scam.</li><li>The use of <strong>the term DMCA</strong> is another giveaway: Real copyright infringement emails refer to specific laws, but <a href="https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act#Abuse_of_takedown_notice">the DMCA</a> is more recognizable (and scarier) to the general public.</li><li>The <strong>supposed owner</strong> of the copyright to the image in question is another giveaway, since the name and site belong to a phone app, not a publisher or photographer.</li><li>The use of <strong>consumer-friendly third party sites</strong> Imgur and Archive.org rather than a legitimate case management system is another giveaway. I&#8217;ve dealt with lawyers and they don&#8217;t use Imgur!</li><li>It was a <strong>very old post</strong> (2009) that strangely actually didn&#8217;t use that image at all!</li><li>This particular scammer did a pretty good job <strong>impersonating a lawyer</strong>, including a (too short) case number and reasonable-sounding name and address for the firm. More on that in a minute!</li></ol>



<p>The combination of these five telltale signs reassured me that there was no cause to be alarmed by this scary-sounding email. But the rise of these scams made me want to share the alarm with my readers, many of whom run their own blogs and might be fooled by a well-constructed scam like this!</p>



<h2 class="wp-block-heading" id="chris-donnelly-taylor-wilson-smith-legal">Chris Donnelly, Taylor Wilson Smith Legal</h2>



<p>One thing this scammer did well was their use of a convincing-sounding name and address for their alleged law firm. Indeed, they even built a reasonable-looking website to go along with it, and used that domain (taylorwilsonsmith . com) for the email. This is a big step beyond the lazy approach most scammers take. So I thought it was worth a moment to investigate them.</p>



<p>The &#8220;Taylor Wilson Smith&#8221; website is extremely convincing. All of the links I clicked work as expected, most of the writing is moderately well done, and it looks better than some actual businesses. I assume that most of the text is copied from a legitimate law firm somewhere, which is pretty ironic for an alleged intellectual property law firm!</p>



<figure class="wp-block-gallery has-nested-images columns-4 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1.jpg"><img loading="lazy" decoding="async" width="500" height="642" data-id="9964" src="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-500x642.jpg" alt="" class="wp-image-9964" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-500x642.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-234x300.jpg 234w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-117x150.jpg 117w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-768x987.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1-1196x1536.jpg 1196w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-1.jpg 1454w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption>The Taylor Wilson Smith homepage</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2.jpg"><img loading="lazy" decoding="async" width="500" height="613" data-id="9963" src="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-500x613.jpg" alt="" class="wp-image-9963" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-500x613.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-245x300.jpg 245w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-122x150.jpg 122w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-768x941.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2-1253x1536.jpg 1253w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Homepage-2.jpg 1638w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption>The Taylor Wilson Smith homepage, continued</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly.jpg"><img loading="lazy" decoding="async" width="500" height="670" data-id="9962" src="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-500x670.jpg" alt="" class="wp-image-9962" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-500x670.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-224x300.jpg 224w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-112x150.jpg 112w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-768x1029.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly-1146x1536.jpg 1146w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Chris-Donnelly.jpg 1312w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption>Taylor Wilson Smith&#8217;s bio of &#8220;our guy&#8221;, Chris Donnelly</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd.jpg"><img loading="lazy" decoding="async" width="500" height="668" data-id="9961" src="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-500x668.jpg" alt="" class="wp-image-9961" srcset="https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-500x668.jpg 500w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-224x300.jpg 224w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-112x150.jpg 112w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-768x1027.jpg 768w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd-1149x1536.jpg 1149w, https://blog.fosketts.net/wp-content/uploads/2022/01/TaylorWilsonSmith-Brian-Dodd.jpg 1318w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption>Taylor Wilson Smith&#8217;s bio of another lawyer with the name of a different firm!</figcaption></figure>
</figure>



<p>There are some mistakes, though:</p>



<ol class="wp-block-list"><li>The alleged lawyer who sent my DMCA notice, &#8220;Chris Donnelly&#8221;, is called &#8220;George&#8221; in his bio, and is noted to have graduated from the &#8220;University of San Columbia,&#8221; which I urge you to look up for yourself.</li><li>Another lawyer is noted as having joined &#8220;Davis Robbins&#8221; rather than this firm.</li><li>A quick google search shows that these bios are pieced together from text lifted from actual law firms, mostly located in Hong Kong.</li><li>The phone numbers and some of the text also comes from MaiTheme, a pre-made WordPress theme.</li><li>While searching, I noticed that websites for &#8220;Davis Robbins&#8221; and &#8220;Scott Hill Young&#8221; follow the same pattern and contain much of the same text, suggesting that these are other sites owned by the same scammer.</li><li>Archive.org and WHOIS records show that all of these websites were first registered in 2021 and all use Namecheap registration and hosting.</li></ol>



<p>These websites are extremely well-crafted, thanks to the work of MaiTheme and judicious use of text copied from other firms. But they completely fall apart when examined closely, with bogus information and phone numbers. It is likely that the photos are AI generated, since they didn&#8217;t appear in Google&#8217;s image search.</p>



<p>I perhaps could have unmasked them further, but lost interest.</p>



<h2 class="wp-block-heading" id="stephen-s-stance">Stephen&#8217;s Stance</h2>



<p>Be careful out there! Scammers are getting better and better at impersonating legitimate businesses and using scare tactics like the DMCA. If you get a request for a link insertion, even if it looks like a DMCA notice, use caution!</p>



<p>I&#8217;m curious what should be done here. Would Namecheap help taking down the scammer? Was any law broken? What would a legitimate copyright lawyer do about their text being ripped off? I imagine the answer is nothing but say &#8220;caveat emptor.&#8221; Such is the state of the internet in 2022.</p>



<p class="has-text-align-center">Check out <a href="https://news.ycombinator.com/item?id=30061298">the discussion on this post over at Hacker News</a>!</p>



<h2 class="wp-block-heading" id="full-text-of-the-taylor-wilson-smith-email">Full Text of the Taylor Wilson Smith Email</h2>



<p>One of the commenters on Hacker News <a href="https://news.ycombinator.com/item?id=30070722">suggested</a> that I include the full text of the Taylor Wilson Smith email here to help others find this post. Great idea! Here it is!</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Dear owner of &lt;URL>,</p><p>My name is Chris Donnelly, I am a Trademark Attorney of Taylor Wilson<br>Smith Legal Services.</p><p>I am reaching out to you as your website features content that has<br>infringed on one copyright image owned by our client, Ling Languages.</p><p>The use of this image &#8211; &lt;Imgur URL> is featured<br>on your web page &#8211; (&lt;URL>),<br>without proper image credit attribution.</p><p>The Wayback Machine &#8211; <a class="vglnk" href="https://web.archive.org/" rel="nofollow"><span>https://web.archive.org/</span></a>, a permanent public<br>archive of the web, shows the image being used on your website.</p><p>Our client, is happy for their image to be used and shared across the<br>internet. However, proper image credit is due for past or ongoing usage.</p><p>The image credit to Ling Languages must be added either underneath<br>the image or at the foot of the offending page with a link to &lt;Spam URL> within 7 days. Otherwise, we are required to take legal action.</p><p>I have assigned case ID #0418 to track this dispute, which should be<br>quoted in all correspondence. Once you have added an image credit to the<br>page, the case against you will be dropped.</p><p>This letter is an official notification under Section 512(c) of the<br>Digital Millennium Copyright Act (&#8221; DMCA&#8221;). If this is unresolved immediately<br>we&#8217;ll have to proceed with filing a DMCA legal case.</p><p>I am providing this notice with authority to act on behalf of the<br>owner of the copyright(s) involved.</p><p>Regards</p><p>Chris Donnelly<br>Trademark Attorney</p><p>Taylor Wilson Smith Legal<br>One Penn Plaza,<br>New York, NY 10119</p><p>chris@taylorwilsonsmith.com</p><p>www taylorwilsonsmith com</p><cite>Chris Donnelly | Taylor Wilson Smith Legal</cite></blockquote>



<p></p>
<hr />
<p><small>© Stephen Foskett for <a href="https://blog.fosketts.net">Stephen Foskett, Pack Rat</a>: <a href="https://blog.fosketts.net/2022/01/24/scam-alert-fake-dmca-takedown-for-link-insertion/">Scam Alert: Fake DMCA Takedown for Link Insertion</a></small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.fosketts.net/2022/01/24/scam-alert-fake-dmca-takedown-for-link-insertion/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>