<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kevin Koslowski</title>
    <description>The latest articles on DEV Community by Kevin Koslowski (@mad0x20wizard).</description>
    <link>https://dev.to/mad0x20wizard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3936314%2Ff0cdff73-1667-4e50-8ee8-965ee08433f2.jpg</url>
      <title>DEV Community: Kevin Koslowski</title>
      <link>https://dev.to/mad0x20wizard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mad0x20wizard"/>
    <language>en</language>
    <item>
      <title>How to enhance your network with transparent Wake-on-LAN capabilities</title>
      <dc:creator>Kevin Koslowski</dc:creator>
      <pubDate>Sun, 17 May 2026 16:26:56 +0000</pubDate>
      <link>https://dev.to/mad0x20wizard/how-to-enhance-your-network-with-transparent-wake-on-lan-capabilities-g5g</link>
      <guid>https://dev.to/mad0x20wizard/how-to-enhance-your-network-with-transparent-wake-on-lan-capabilities-g5g</guid>
      <description>&lt;p&gt;This is the story of how I got frustrated with the energy efficiency of my Homelab network and decided to create a solution that gradually became a sophisticated network tool, that can monitor and wake hosts transparently and keep them awake as long as they are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  A little bit of history
&lt;/h2&gt;

&lt;p&gt;The idea first took shape around 2016, after I had built my first &lt;em&gt;HTPC&lt;/em&gt; and decided to gradually add more features and roles to it. As soon as I started using it as a development server for my web projects I imagined the server to be somehow aware of me using it (from a secondary device) and turning itself on when I started my work and off (or rather suspending itself) when I finished using it.&lt;/p&gt;

&lt;p&gt;Opinions may differ on using Windows for professional purposes, but I took a pragmatic approach: As I am also an avid gamer, I wanted a machine that could run every game without hassle. The natural choice for this was to use a Windows system as a host and run various kinds of virtual machines for different purposes side-by-side. Although gaming on other platforms has become more comfortable over time, this assumption still generally holds true today.&lt;/p&gt;

&lt;h3&gt;
  
  
  A case of Insomnia
&lt;/h3&gt;

&lt;p&gt;The first problem I encountered was with the built-in power management of Windows itself. In a perfect world, we could rely on the onboard faculties of the OS and stop here. But as it turned out, the world in which we live is this imperfect beauty, that we all know, and needs a little nudge here and there, so that everything runs as smoothly as it can be. The first problem arises with the simple fact, that applications can register “power requests”, that keep the system awake as long as the application deems it necessary. You can overwrite this for individual requests of course, but since they must be applied via the command line and do not survive a reboot, this can become tedious really fast. On top of that, there are a couple of kernel APIs which create power requests, that simply cannot be overridden.&lt;/p&gt;

&lt;p&gt;As you may already imagine, this will inevitably lead to situations, where you will find your PC running late at night and cannot help yourself except with manually pressing the power button. Yuck!&lt;/p&gt;

&lt;h3&gt;
  
  
  When to wake up?
&lt;/h3&gt;

&lt;p&gt;The other part of the problem was activating the computer on demand, without actually reaching out physically. Luckily some smart people in the early 90s came up with the idea of &lt;a href="https://en.wikipedia.org/wiki/Wake-on-LAN" rel="noopener noreferrer"&gt;Wake-on-LAN&lt;/a&gt;. A technique that has become widely adopted since then and allows us to wake computers from their slumber conveniently via a network protocol. I will not go into any more details here, because I am pretty confident that you have heard of this before — especially since you found about this story.&lt;/p&gt;

&lt;p&gt;Having this tool in your belt, you can start waking your computers without much problem and I am sure many of you do this on a daily basis. The tricky part here lies in deciding when to do this. You can always do this manually by opening your preferred terminal and running (using the real MAC address of your target host, instead of the fake one):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wakeonlan 00:1A:2B:3C:4D:5E
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe you use a software with a more appealing UI for this. But most of the time this boils down to having you decide consciously when to wake the target system.&lt;/p&gt;

&lt;p&gt;My first attempt at solving this problem was rather brute-force and opinionated: I created a program that would continuously send Wake-on-LAN packets, while my client computer was running. Later I added a toggle to turn this on and off for individual targets, but basically the moment of wake-up was quite artificial and arbitrary. Surely we can do better, right?&lt;/p&gt;

&lt;h2&gt;
  
  
  Let me introduce you to Desomnia
&lt;/h2&gt;

&lt;p&gt;Here is what ten years of tinkering eventually produced. I will save the design decisions and the technical journey for a follow-up — for now, let me focus on what Desomnia can do for you.&lt;/p&gt;

&lt;p&gt;Imagine yourself in a situation where you operate one or more dedicated server machines at home or in a small office and care about the electricity bill. &lt;a href="https://github.com/mad0x20wizard/Desomnia" rel="noopener noreferrer"&gt;Desomnia&lt;/a&gt; can help you automate the suspension of idle hosts and wake hosts on demand transparently — without the need to think about when to do this anymore.&lt;/p&gt;

&lt;p&gt;For one thing, it can replace the basic power management features of your operating system with a detailed list of filters and triggers that ensure your system only stays awake when you actually use it. On the other hand, it can also act as a network monitor that wakes your computers at the exact moment you need them. If you own a small, always-on device such as a Raspberry Pi, this can even be done transparently for the entire network segment without installing any software on the client or server. When deployed both ways, it allows you to specify the wake/sleep requirements of your network hosts declaratively, so you don’t have to think about it constantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strong core values
&lt;/h3&gt;

&lt;p&gt;Desomnia tries to follow the &lt;a href="https://en.wikipedia.org/wiki/Unix_philosophy" rel="noopener noreferrer"&gt;Unix philosophy&lt;/a&gt; in two important aspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write programs that do one thing and do it well.&lt;/li&gt;
&lt;li&gt;Write programs to work together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; try to take over your entire network infrastructure, by introducing heavyweight appliances and does &lt;strong&gt;not&lt;/strong&gt; introduce itself as a single point of failure. When Desomnia fails, your network will degrade gracefully. Automatic wake-up may not be available anymore, but apart from that everything will continue to run normally.&lt;/p&gt;

&lt;p&gt;This is achieved by using common network protocols in an unusual yet creative way, while remaining as true as possible to the decentralised nature of Ethernet networks. It has been carefully designed to minimise interference with normal network operations.&lt;/p&gt;

&lt;p&gt;Best of all, Desomnia is free software licensed under the GPL and hosted on &lt;a href="https://github.com/mad0x20wizard/Desomnia" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Feel free to learn from its source code, modify it to suit your needs, and share it with others. If you notice anything missing, please let me know so that it can be added to the upstream repository and benefit others too.&lt;/p&gt;

&lt;p&gt;Supported platforms: 🪟 Windows, 🐧 Linux, 🍎 macOS&lt;/p&gt;

&lt;h2&gt;
  
  
  A couple of use-cases
&lt;/h2&gt;

&lt;p&gt;Here is a taste of what Desomnia can do, grouped by the problem it solves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Waking servers on demand
&lt;/h3&gt;

&lt;p&gt;The most common use-case: you have a machine that should sleep when nobody needs it, and wake the moment someone does — without anyone having to think about it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal cloud services&lt;/strong&gt; — Running &lt;a href="https://nextcloud.com/de/" rel="noopener noreferrer"&gt;Nextcloud&lt;/a&gt;, &lt;a href="https://owncloud.com/de/" rel="noopener noreferrer"&gt;ownCloud&lt;/a&gt;, &lt;a href="https://filerun.com/" rel="noopener noreferrer"&gt;FileRun&lt;/a&gt; or similar at home? Desomnia starts your server when it is accessed remotely and lets it sleep in between. It also understands Windows File Sharing (SMB) natively, so you can tell it to ignore certain shares or clients that would otherwise keep the machine awake unnecessarily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote desktop&lt;/strong&gt; — Connecting via RDP or VNC? Desomnia wakes the target when you initiate the connection, tracks the active session, and keeps the machine running until you disconnect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development environments&lt;/strong&gt; — If you outsourced your dev setup to a dedicated machine, Desomnia can bring it online the moment the first SSH or HTTP connection comes in, and let it rest when you stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPN access&lt;/strong&gt; — Connecting from a remote network via VPN and need to reach a sleeping host? Desomnia wakes it on your behalf. It has been tested with a variety of VPN setups and providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Network-wide deployment
&lt;/h3&gt;

&lt;p&gt;If you have a small always-on device — a Raspberry Pi, a NAS, anything that stays powered — Desomnia can act as a Wake-on-LAN proxy for your entire network. No software needs to be installed on the clients or the target machines. Any connection attempt to a sleeping host is detected and handled automatically, completely transparently.&lt;/p&gt;

&lt;p&gt;You can also expose services to the internet via port forwarding without worrying about random scanners waking your machines. Desomnia can filter wake-up triggers by protocol, port, and source address. For an extra layer of security, it supports &lt;a href="https://github.com/mrash/fwknop" rel="noopener noreferrer"&gt;Single Packet Authorization&lt;/a&gt; (SPA) — a cryptographically authenticated single UDP packet that temporarily unlocks wake access for a specific remote host, with no persistent tunnel required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Virtualization and game streaming
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hyper-V&lt;/strong&gt; — Desomnia comes with support for virtual machines. It can wake the physical host when one of its VMs is accessed, start suspended VMs automatically, and stop them once they go idle — no manual lifecycle management needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Game streaming&lt;/strong&gt; — Streaming from your own gaming rig via &lt;a href="https://moonlight-stream.org/" rel="noopener noreferrer"&gt;Moonlight&lt;/a&gt; and &lt;a href="https://github.com/lizardbyte/sunshine" rel="noopener noreferrer"&gt;Sunshine&lt;/a&gt; or &lt;a href="https://github.com/ClassicOldSong/Apollo" rel="noopener noreferrer"&gt;Apollo&lt;/a&gt;? Desomnia ensures the system only runs while someone is actually playing. It also integrates with &lt;a href="https://github.com/DuoStream/Duo" rel="noopener noreferrer"&gt;Duo&lt;/a&gt; to start streaming instances when a client connects and stop them when the last session ends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Taking back control of sleep
&lt;/h3&gt;

&lt;p&gt;Sometimes the challenge is not waking machines — it is getting them to stay awake for exactly the right amount of time. Apart from what Windows already has to offer, Desomnia allows you to monitor the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Processes&lt;/strong&gt; — Desomnia can watch specific processes by name and CPU usage. It keeps the system awake while meaningful work is happening and lets it sleep once things have gone quiet — optionally terminating idle programs along the way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power requests&lt;/strong&gt; — Some applications and drivers issue power requests that prevent sleep without good reason. Desomnia lets you explicitly allowlist or blocklist those requests, to filter out bad actors and allow your system to rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network traffic&lt;/strong&gt; — Desomnia optionally uses the &lt;a href="https://npcap.com/" rel="noopener noreferrer"&gt;Npcap&lt;/a&gt; library to monitor if selected network services are currently in use, meanwhile preventing the system from sleep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User sessions&lt;/strong&gt; — Of course you can also track the activity of logged in users, for which the system obviously should be running.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find more about Desomnia’s many features in the comprehensive &lt;a href="https://desomnia.readthedocs.io/en/latest/index.html" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Showtime
&lt;/h2&gt;

&lt;p&gt;Now I want to go with you through a little hands-on, so that you get a glimpse of how Desomnia works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;First you have to download and install the program via one of the available channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://desomnia.readthedocs.io/en/latest/installation/installer.html" rel="noopener noreferrer"&gt;Windows installer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://desomnia.readthedocs.io/en/latest/installation/docker.html" rel="noopener noreferrer"&gt;Docker container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://desomnia.readthedocs.io/en/latest/installation/homebrew.html" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://desomnia.readthedocs.io/en/latest/installation/manually.html" rel="noopener noreferrer"&gt;Manually&lt;/a&gt; (if none of the above fits your need)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that you have to create an appropriate configuration file. Please refer to the documentation on where to put it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Waking up hosts
&lt;/h3&gt;

&lt;p&gt;Now let me show you, how easy it is, to configure Desomnia to wake up a sleeping host. &lt;/p&gt;

&lt;p&gt;First you create a configuration file in XML format, in which you enable the Network Monitor and tell it to watch a host called “server”, with the specified MAC address “00:1A:2B:3C:4D:5E”:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;SystemMonitor&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;NetworkMonitor&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RemoteHost&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"server"&lt;/span&gt; &lt;span class="na"&gt;MAC=&lt;/span&gt;&lt;span class="s"&gt;"00:1A:2B:3C:4D:5E"&lt;/span&gt; &lt;span class="na"&gt;IPv4=&lt;/span&gt;&lt;span class="s"&gt;"192.168.1.10"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/NetworkMonitor&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/SystemMonitor&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have also provided the IP address “192.168.1.10” to make the example less dependent on the network environment. If available you can have Desomnia configure this automatically for you.&lt;/p&gt;

&lt;p&gt;After this setup, Desomnia has to be started as a background system service, so that it can monitor your network traffic. The moment you try to access any service of the remote host (via TCP, UDP, ICMP, etc.) and Desomnia detects that the remote host is sleeping, it will automatically send a Magic Packet in order to wake up that server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wake-on-LAN proxy
&lt;/h3&gt;

&lt;p&gt;Instead of installing Desomnia on every client that should be capable to do transparent Wake-on-LAN, you can alternatively use an always-on device, like a Raspberry Pi or other low-power SoC, that will then act on behalf of your clients. The configuration will look surprisingly similar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;SystemMonitor&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;NetworkMonitor&lt;/span&gt; &lt;span class="na"&gt;interface=&lt;/span&gt;&lt;span class="s"&gt;"eth0"&lt;/span&gt; &lt;span class="na"&gt;autoDetect=&lt;/span&gt;&lt;span class="s"&gt;"IPv4"&lt;/span&gt; &lt;span class="na"&gt;watchMode=&lt;/span&gt;&lt;span class="s"&gt;"promiscuous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RemoteHost&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"server"&lt;/span&gt; &lt;span class="na"&gt;MAC=&lt;/span&gt;&lt;span class="s"&gt;"00:1A:2B:3C:4D:5E"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"SSH"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"22"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/RemoteHost&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/NetworkMonitor&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/SystemMonitor&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setting the watch mode to “promiscuous” instructs Desomnia to extend its monitoring to cover the entire broadcast domain, which typically encompasses all hosts with the same subnet mask or address prefix. It will then observe the traffic for specific broadcast and multicast packets to detect when a client tries to access the server.&lt;/p&gt;

&lt;p&gt;In this case we also specified that only requests to the SSH server at port 22/tcp should trigger a wake-up. To check this, Desomnia momentarily reroutes the server’s IP traffic to itself in order to verify that the request is indeed directed at port 22. Only then will Desomnia wake up the target host, which will then reclaim its own IP address. Desomnia will then forward the original request to the server, which will finally answer the original client.&lt;/p&gt;

&lt;p&gt;Since the client receives a response from Desomnia immediately, the time until the connection attempt is considered failed is usually extended. If your server wakes up in less than 10 seconds, your application will probably not even register an error.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local sleep management
&lt;/h3&gt;

&lt;p&gt;This mode of operation is currently only available for Windows hosts. You can think of it as an open-source and free alternative to the commercially available software "&lt;a href="https://www.green-it-software.com/" rel="noopener noreferrer"&gt;Lights Out&lt;/a&gt;". But instead of relying on management through graphical interfaces, Desomnia is aimed more at tech-savvy users who want to keep things as lightweight as possible and are comfortable with writing a configuration file. The configuration follows the same structure and is fully compatible with the Wake-on-LAN mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;SystemMonitor&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt; &lt;span class="na"&gt;timeout=&lt;/span&gt;&lt;span class="s"&gt;"2min"&lt;/span&gt; &lt;span class="na"&gt;onIdle=&lt;/span&gt;&lt;span class="s"&gt;"sleep+30min"&lt;/span&gt; &lt;span class="na"&gt;onDemand=&lt;/span&gt;&lt;span class="s"&gt;"sleepless"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;NetworkMonitor&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- watch inbound connections --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"HTTP"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"8080"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Jellyfin"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"8096"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- watch inbound VM connections --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"gitlab"&lt;/span&gt; &lt;span class="na"&gt;onIdle=&lt;/span&gt;&lt;span class="s"&gt;"suspend+10min"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"SSH"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"22"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"HTTP"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"80"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- watch outbound connections --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RemoteHost&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"development"&lt;/span&gt; &lt;span class="na"&gt;MAC=&lt;/span&gt;&lt;span class="s"&gt;"00:1A:2B:3C:4D:5E"&lt;/span&gt; &lt;span class="na"&gt;onDemand=&lt;/span&gt;&lt;span class="s"&gt;"wake"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;Service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"SSH"&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;"22"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/RemoteHost&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;/NetworkMonitor&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;PowerRequestMonitor&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RequestFilterRule&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"Must"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Backup"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;CBBackupPlan&lt;span class="nt"&gt;&amp;lt;/RequestFilterRule&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/PowerRequestMonitor&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/SystemMonitor&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Of course there are a lot more monitors and features included. If you want to give it a try, you can find more information in the corresponding &lt;a href="https://desomnia.readthedocs.io/en/latest/guides/sleep.html" rel="noopener noreferrer"&gt;guide&lt;/a&gt; in the documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What comes next
&lt;/h2&gt;

&lt;p&gt;This is the first part of a series. In this first part, I covered how this project came to be and what Desomnia can do. In the next part I will go deeper: the design decisions behind the proxy mechanism, what network protocols are used and how they work, and what makes Desomnia different from the simpler alternatives you might have already tried. Follow me if you want to be notified when it goes live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kindly requesting feedback
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mad0x20wizard/Desomnia" rel="noopener noreferrer"&gt;Desomnia&lt;/a&gt; has been extensively and successfully tested within my own network, but one person can only think of so many edge cases. If you like the idea, please get in touch so we can work together to rule out any remaining bugs and oversights. I have created a &lt;a href="https://discord.gg/RzrBjcy2" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; community where you can share your experiences of using the software and let me know if anything is missing. If you encounter an error, don’t hesitate to create an &lt;a href="https://github.com/mad0x20wizard/Desomnia/issues" rel="noopener noreferrer"&gt;issue on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you
&lt;/h2&gt;

&lt;p&gt;If you made it this far, you are probably exactly the kind of person Desomnia was built for. Give it a try — and if it saves you even one avoidable (late-night) trip to the power button, it has done something right. If you like what you see, spread the word. Thank you very much for reading. I hope it inspires you.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>networking</category>
      <category>homelab</category>
      <category>selfhosted</category>
    </item>
  </channel>
</rss>
