4 ms·
Show HN: rallyup – Lightweight Wake-on-LAN Scheduler
Hi HN,
I’ve wanted a simple solution to handle Wake-on-LAN sequences for my home and work labs to boot up servers in the right order. I was already dabbling in Rust and thought this would be an interesting project to dive deeper and see if it could work well for this kind of network tool. The result is rallyup.
rallyup lets you set up server dependencies in a YAML file, so each service (e.g., firewalls, storage, VM hosts) comes online in the right order. It verifies each server’s status before moving to the next.
Features:
- Dependency-based WOL with VLAN support
- Built-in health checks (HTTP, open ports, shell commands)
- Lightweight enough to run on a Raspberry Pi or similar device
Would love any feedback. Thanks for taking a look!
- nubinetwork 2y agoIs wake on LAN any good these days? I remember it being flaky in the late 90s early 00s...
- sgarland 2y agoI haven't had problems with it the past few years, on SuperMicros. EDIT: as the sibling comment reminded me, I'm using IPMI, not WoL. That said, I have tested WoL and had no issues with it doing its job – I only switched because I had a server that would randomly fail to find its NVMe drive at boot; rebooting (which IPMI allowed me to do) would fix it.
- _joel 2y agoBeen fine for me mid 00's and onwards. From memory with SuperMicro, HP, Dell kit etc. Ususally setup via ipmi. Not done it for a while, but don't recall issues.
- SushiHippie 2y agoI only had one problem with it, and that was that it isn't enough to enable it in the BIOS, but I needed to flip a switch on Windows and set up a systemd service on Linux (I dual boot). For Linux set it to "g": https://wiki.archlinux.org/title/Wake-on-LAN#Make_it_persistent https://wiki.archlinux.org/title/Wake-on-LAN#Make_it_persist... For Windows you need to enable "Wake on Magic Packet": https://www.windowscentral.com/how-enable-and-use-wake-lan-wol-windows-10 https://www.windowscentral.com/how-enable-and-use-wake-lan-w...
- striking 2y ago"set it to 'g'". Awesome. G for maGic, I presume?
- BenjiWiebe 2y agoYep, pretty sure. m is for multicast. From arch wiki: d (disabled), p (PHY activity), u (unicast activity), m (multicast activity), b (broadcast activity), a (ARP activity), g (magic packet activity)
- ryandrake 2y agoI always wondered: why make it so difficult to turn on? Is it a security issue? I mean, an off-by-default OS setting and an off-by-default BIOS setting? How dangerous is this thing??
- tjoff 2y agoIt draws more power because the NIC can't power off completely. So Microsoft and every hardware vendor are incentiviced to turn it off to look good. (And probably to please regulations) That it is defaulted off I feel is motivated, but to make it so hard to turn it on is pretty pathetic. The fury Microsoft generated by turning it off in a Windows update still fuels me. I had a remote PC that I need to access remotely during holiday season. And Microsoft turns off my ability to power it on, with me left trying to figure out why I can't access the machine anymore.
- angrygoat 2y agoIt's pretty heavily used in some on premises HPC contexts... used to run a large supermicro cluster which we would power down when not needed, which saved a fair amount of electricity (and by extension emissions and money.) It's quite solid.
- pohuing 2y agoIn my experience it depends a lot on your hardware. For some versions my msi consumer Mainboard just would not respond to wol packets. No matter what I tried.
- BuildTheRobots 2y agoI still have a lot of weirdness when it comes to making things actually stay asleep and wake up again when wanted. There's a lot of hardware that often boots up, or always boots but only if it's been switched on once before, or keeps trying to wake itself up for no good reason. The absolute most consistent way I've found is using cheap zigbee smart switches or even second hand smart PDUs. Set the machine to boot when power is restored and actually switch the thing on and off from the wall. It saves a whole lot of messing around, you can force the reboot issue and for a tiny amount more in upfront costs you can have power monitoring as well. It also works for network gear that doesn't sleep or anything else that had a physical switch. edit: Ideally give me hardware with proper out-of-band management (ipmi or AMT at a pinch), but for everything else having control of the power is as good as it gets.
- deleted 2y ago[deleted]
- Szpadel 2y agoI have weird desktop system on ASRock motherboard. I have 2 ethernet (10gbe and 1gbe) ports and WiFi build in. i have 10gbe network so ofc I want to use 10gbe port. the issue that I discovered after many hours of debugging is that 10gbe port is powered down completely on suspend/power off. so it have no way to work. because I had limited number of ethernet ports available I set up system to use wake up over WiFi (with wake also on key rotation or disconnect)
- ultrafez 2y agoIs the project named spinup or rallyup? The HN post title differs from the GitHub repo
- SushiHippie 2y agoName was changed to rallyup via this commit https://github.com/darwindarak/rallyup/commit/36f9c474c13644db1ceba305c85a0077d5bc981a https://github.com/darwindarak/rallyup/commit/36f9c474c13644...
- darwindarak 2y agoThanks for catching that! Updated to match. The names I liked was already taken on crates.io but never got it out of my head
- xelamonster 2y agoA very relatable struggle. Cool project! I remember getting into WoL as a kid playing with our home PC, felt like magic to press a button on my phone and watch the fully powered off machine come to life. Never sorted out a reliable enough system for it to be practically useful, but this gives me some ideas...
- sgarland 2y agoOne thing that might be useful is to allow a given server in the chain to fail. For example, if you had a Proxmox (or other hypervisor) cluster, in the event that a single node fails to come up, you'd probably want everything else to still boot. Or maybe it would be easier if there was a separate category for VM vs. hypervisor? Either way, neat project, and thank you for sharing.
- darwindarak 2y agoThanks for the feedback! So would a tagging system be useful? Right now you can declare dependencies on a single server, but maybe we can have it depend on at least one of the machines in a tagged group booting up?
- sgarland 2y agoI could see a group being useful, yeah. Must have one of [server0, server1, server2] to continue. Though there is a lot of bleed-over when talking about hypervisors and the boot order of VMs, since hypervisors generally can handle that, at least on their own node.
- keraf 2y agoWould love to see exactly this but running on an ESP style board (with Ethernet). As well as an API or web interface to trigger manual WoL calls. Nice project, thanks for sharing!
- darwindarak 2y agoThanks! Getting it working on an embedded system would be a fun addition and a nice intro/training project for one of our new engineers (I think…). What type of API are you thinking of? It already runs on a YAML config, so maybe a web server that takes the config as a JSON body instead?
- Dries007 2y agoVery nice, just FYI for home assistant fans: WoL is also supported in there :)
- myself248 2y agoEquip your machines with whack-on-LAN so you can remotely reset them by the same mechanism, and you've got a reasonably complete remote management setup! https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=a9a37691cb4b8df1e543affd5de9a6c748b3d808 https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d... https://www.i3detroit.org/reset-on-lan-an-ethernet-aware-remote-reboot-device-from-junkbox-parts/ https://www.i3detroit.org/reset-on-lan-an-ethernet-aware-rem...
- deleted 2y ago[deleted]
- riobard 2y agoIsn't it bad design in the first place if you require "right order" of boot up? What if some, but not all, servers crash and reboot? How do you ensure the correct order in that case?
- darwindarak 2y agoThat’s a good point. Ideally, if we had complete control over how applications behave on startup, we could design them to “self-heal” and avoid dependency issues altogether. However, many of the components in the systems we work with are either closed source or require more experience and expertise to modify. We’ve also noticed that, in practice, for many data-critical production systems, many of our customers prefer to manually control the boot process to confirm data integrity. The scenario of partial crashes is interesting. I need to think about how to handle that a bit more. Thanks for the feedback!