UpSnap - A Self Hosted Wake on LAN App

Wake up! That's what we say to our servers at home when it's time to do our backups. Using UpSnap as a self hosted Wake on LAN app! 💫

UpSnap - A Self Hosted Wake on LAN App

If you run several servers or homelab systems in your home and are in need of a solution that can help you wake the systems over LAN, UpSnap is the perfect solution. The ability to turn on or shut down your machines via magic packet can save you time, power consumption and the hassle of having to manually press the button. Especially if your devices are in an attic, basement or hard to reach location.

What is UpSnap?

UpSnap is s simple wake on lan app written with SvelteKit, Go, PocketBase and nmap.

Core Features

  • Dashboard to wake up devices with one click
  • Set timed wake and shutdown events via cron
  • Add custom ports to devices which will be pinged
  • Discover devices by scanning network
  • Dark/light or system prefered color scheme
  • Docker images for amd64, arm64, arm/v7

Install UpSnap using Docker Compose

Installing UpSnap via Docker is simple using the provided stack.

version: "3"
services:
  upsnap:
    container_name: upsnap
    image: ghcr.io/seriousm4x/upsnap:4
    network_mode: host
    restart: unless-stopped
    volumes:
      - /docker/upsnap/data:/app/pb_data
    environment:
       - TZ=America/Detroit # Set container timezone for cron schedules
       - UPSNAP_INTERVAL=@every 10s # Sets the interval in which the devices are pinged
       - UPSNAP_SCAN_RANGE=192.168.1.0/24 # Scan range is used for device discovery on local network

After running the install, simply navigate to your docker host IP and port 8090.

Adding devices to UpSnap

I find the easiest way to add devices is to use the built in scan feature.

As the tool-tip states, if you installed this with Docker, it should work out of the box. Just click "Scan" and wait for the app to scan your network. Once finished, you will see a list of devices and can easily add them with a click of a button.

Keep in mind, if you want to use the Wake on LAN features, the device NIC must support WOL or it simply will not work.

You can also use UpSnap to shut down your devices using the following Linux command:

sshpass -p Sup3rS3cretP@ssw0rd ssh -o "StrictHostKeyChecking=no" user@hostname "sudo poweroff"

Place the command in the "Shutdown Cmd" box. Be sure to replace the password and server details with that of your own. Then from your dashboard you can both wake and shut down the device.

If you'd like, you can even setup cronjobs here to wake and shutdown your devices so you don't have to do it manaully.

Is your Device Capable of WOL?

Your NIC must support WOL and be enabled to accept magic packets. You may also need to make sure WOL is enabled in the motherboard BIOS. I am using this on Debian based servers. By default these features are enabled and I can see that by running the following command.

ethtool eth0 where eth0 is my Network Interface Card or NIC.

Settings for eth0:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: g
        Link detected: yes

Wake-on: g tells me WOL is enabled.

The most common and easiest way to list network interfaces is by using the IP command. This command provides a wide array of information about your system’s network interfaces.

ip addr

Other uses for UpSnap

While the UpSnap primary focus is the Wake on LAN function, it also doubles and an online status check. It will ping your machines at the given interval you set in the settings and report back if they are online or offline.

If your machines are online, you will see the green power button shown on the dashboard. If they are offline, they will be displayed as a red power button.

Video of UpSnap in Action

Here you can see me using UpSnap on my old iPhone. It looks good and functions just as it would in a desktop browser.

UpSnap Testing

  • I setup UpSnap in a local environment using Docker and was able to successfully wake and shut down my servers.
  • I setup a sub domain and tunnel to the app using Cloudflare with an access application. I was able to successfully wake and shut down my servers remotely.

Final Notes and Thoughts

A good Wake on LAN solution has been on my radar for quite some time. I am so glad I found this app and forever grateful that I no longer have to make trips to the cold basement to fire up my backup servers. While there are other solutions, none quite compared to how simple it was to setup with UpSnap.

If you find UpSnap useful, swing by the UpSnap Githup repo and give it a star!