mrkeyoor.com_
Wed 23 Sept 00:37 UTC
Self-Hostedevaluationupdated 26 Aug 2026

UpSnap review

UpSnap is a self-hosted control panel for waking computers and other devices over a local network. It turns Wake-on-LAN packets, status checks, scheduled starts, and optional shutdown commands into a friendly multi-user web dashboard.

+11stars / 7d
Verdict

Our UpSnap run installed 85 packages, built in 49 seconds, and passed its single discovered test, making it an easy trial for a trusted LAN. Use it when Wake-on-LAN needs shared permissions, schedules, and status checks rather than another shell script. Keep it behind a VPN, and either omit shutdown commands or give them the narrowest possible privileges.

We ran it

Lab card: what happened when we ran UpSnapScreenshot of UpSnap (github.com/seriousm4x/UpSnap)
Install✓ · 30s85 packages
Build✓ · 49s
Tests✓ · 27s1 passed · 0 failed of 1 (go test)
Repo155 files~8,618 lines of source · 5.1 MB · 3 CI workflows

Answers from our run

Does UpSnap build from source?

Dependencies installed in 30 seconds (85 packages), and the build succeeded in 49 seconds. We cloned commit 297518f into a clean Debian container with 3 CPUs and no project-specific setup.

Do UpSnap's tests pass?

Yes: 1 of 1 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use UpSnap?

Anyone planning to publish the dashboard directly to the internet: the README warns against this because shutdown actions can pass custom commands to a shell, potentially as root.

What are the alternatives to UpSnap?

wolweb, Home Assistant, MeshCentral. Our UpSnap run installed 85 packages, built in 49 seconds, and passed its single discovered test, making it an easy trial for a trusted LAN.

Setup4/5Build passed; network broadcasts and target firmware still need setup
Docs4/5Clear starts and security warning, with deeper details in the wiki
Community4/56,223 stars, a July 2026 release, and August pull requests
Maturity4/5Focused v5 product, though our run discovered only 1 test

Discussed on

  1. hnUpSnap: A simple wake on LAN app written with SvelteKit, Go, PocketBase and NMAP3 points

Who it’s for

Home-lab operators who regularly wake servers, desktops, or media machines without visiting them.
Families or small teams that need per-device permissions instead of sharing a command-line login.
Network administrators who want scheduled wake events, configurable port checks, and local device discovery.
Self-hosters willing to keep the service inside a trusted LAN or reach it through a VPN.

Who it’s NOT for

Anyone planning to publish the dashboard directly to the internet: the README warns against this because shutdown actions can pass custom commands to a shell, potentially as root.
Networks where the UpSnap host cannot use host networking or send broadcast packets: the supplied Compose file says host mode is required for Wake-on-LAN magic packets.
Users expecting discovery without extra network privileges: scans require nmap, and the official container adds NET_RAW for privileged ping and scanning.
DHCP-heavy environments that require hostname-only device definitions today: an open issue says IP addresses are still required, with DNS and mDNS support being worked on.
People whose hardware, firmware, or network does not support Wake-on-LAN: UpSnap can send the packet but cannot make an incompatible device wake.

Setup reality

Our sandbox installed 85 Go packages in 30 seconds. The backend build succeeded in 49 seconds, and tests passed in 27 seconds with 1 passed and 0 failed out of 1.

Actual use needs the binary or host-networked container, persistent PocketBase data, and Wake-on-LAN enabled on every target. Discovery adds nmap and raw-network permission. Shutdown needs a carefully restricted remote command, while the README recommends a VPN instead of public exposure.

Broadcast traffic must reach sleeping devices, and status checks need the chosen port to answer. Set the time zone before using cron. The 155-file checkout used 5.1 MB and held about 8,618 source lines; it had 3 CI workflows, no Dockerfile, and no tests directory in our scan.

One dashboard controls wake, status, schedules, and access

Wake-on-LAN sends a special packet to start a sleeping or powered-off machine. UpSnap handles the awkward details around that packet: saved devices, MAC addresses, broadcast settings, status checks, scheduled events, and access for more than one person. PocketBase supplies storage and accounts. An administrator can grant each user separate rights to view, edit, delete, wake, or shut down a device.

The product stays focused. It can ping a configurable port, discover devices through a network scan, and run cron events. The interface includes 35 themes and 23 listed locales, but UpSnap is not a remote desktop, monitoring stack, or operating-system management service. That limited scope is a strength for a home lab, classroom, workshop, or small office that mainly needs reliable power buttons.

Host networking and target firmware decide whether wake works

Users can run a release binary on port 8090 or pull the official container. Published images cover amd64, arm64, arm/v7, and arm/v6. The Compose example uses host networking because magic packets need the network's broadcast path, and it persists PocketBase state under /app/pb_data. A non-root route is documented separately in the wiki.

Every target must have Wake-on-LAN enabled in firmware and in its network adapter. Wireless hardware, VLAN boundaries, routers that block directed broadcasts, and machines that cut power to the adapter can prevent a wake even when the dashboard reports that it sent the packet. Test one known-compatible device before importing the network. A working web page proves only that UpSnap is running.

Discovery requires nmap. Privileged ping and scanning use NET_RAW, while the container example drops other Linux capabilities. Non-root ping may also need the host's net.ipv4.ping_group_range adjusted. Cron follows the container time zone, so set TZ and check one harmless scheduled event before depending on an overnight start. These details turn the one-command launch into a small network deployment.

What happened when we ran it

Our sandbox worked in the backend directory at commit 297518f. Installing 85 Go packages took 30 seconds, and the build succeeded in 49 seconds. The test step completed in 27 seconds with 1 passed and 0 failed out of 1. That is a clean measured result, although one discovered test cannot cover every broadcast, account, cron, scan, and shell-command path.

The checkout held 155 files, about 8,618 source lines, and occupied 5.1 MB. Our scan found 3 CI workflow files, no Dockerfile, and no tests directory. The README still points users to official container images and a Compose file, so the absent Dockerfile describes the repository signal from our harness rather than the availability of a container deployment.

We did not send packets to physical machines or evaluate a real routed network. The 30-second install and 49-second build establish that the backend compiled in our fresh 3-CPU, 8 GB Debian container. They do not establish that a particular BIOS, network adapter, router, or VLAN will pass and act on a magic packet.

A shutdown command can become a root shell path

UpSnap's off action runs a user-defined command through a shell, potentially as root. The README explicitly recommends against exposing the application to the public internet because unauthorized use of that API route could provide shell access on the local network. This warning should determine the deployment: keep the service on a trusted LAN and use WireGuard, OpenVPN, or another VPN for remote access.

Per-device permissions help prevent ordinary users from changing or powering machines they do not own. They do not make a public shell-adjacent endpoint safe. Use a dedicated SSH identity for shutdown, restrict it to the needed host and command, and avoid storing a broadly privileged password. The safest configuration is no shutdown action at all if wake is the only required job.

The container example's capability choices reduce some exposure by retaining only raw-network access, and a non-root setup is available. Verify the effective user and permissions after deployment. A proxy and TLS protect transport, but neither addresses what the configured shutdown command can do after a valid or stolen login reaches it.

IP addressing still creates two visible rough edges

Open issue 1762 says a device can initially appear on or unavailable while lazy status checking finds its real state, delaying the wake control. Issue 1753 asks to remove the required IP address and add DNS or mDNS names. An open pull request updated in August 2026 proposes FQDN support, but an unmerged proposal is not a shipped feature. DHCP-heavy networks should use reservations or maintain addresses carefully until their chosen release supports names.

Version 5.4.4 shipped on July 23, 2026 with address-validation fixes. GitHub recorded the last repository push on July 26, 6,223 stars, and 6 combined issues and pull requests. Pull requests were still updated in August. That mix supports an active-health judgment even though the open queue includes contributor proposals rather than six product defects.

Use it on a trusted LAN, not as a public control plane

UpSnap offers more discipline than a wake script without expanding into full device management. The measured backend installed and built cleanly, the documentation says plainly where the dangerous boundary sits, and current releases cover common processor architectures. Home Assistant is a better fit when wake is one step in a larger household automation. MeshCentral makes more sense when ongoing remote administration is the job.

For its narrow purpose, UpSnap is easy to recommend. Start with one host-networked instance, persistent data, one known device, and a VPN route. Add schedules after checking the time zone. Add users after testing permissions. Treat custom shutdown as a separate security project rather than another button in the dashboard.

Alternatives

ProjectWhat it isPick it when
wolwebA small Go web interface dedicated to sending Wake-on-LAN packets.pick this instead when you want a narrower wake button and do not need UpSnap's users, schedules, or shutdown actions.
Home Assistant gh↗A broad home-automation platform with Wake-on-LAN switches and many device integrations.pick this instead when waking a computer is one action inside a larger home-automation routine.
MeshCentralA full remote device-management platform covering power actions, terminals, files, and remote desktops.pick this instead when you need ongoing remote administration rather than a focused LAN power dashboard.

What people are saying

  1. [github-trending] seriousm4x/UpSnap

Sources

  1. UpSnap README
  2. UpSnap Docker Compose example
  3. UpSnap 5.4.4 release
  4. Open issue: initial device status
  5. Open issue: IP requirement and DNS hostnames

More self-hosted reviews

radar · sftpgo · mailcow-dockerized · openGym · BackPack · PanWatch · the whole board →