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! 💫
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!