Your NAS is the always-on machine you already own
Waking a machine over the internet needs exactly one thing inside your network that is awake: something that can put the magic packet on the wire. Your NAS is that thing. Run the Rooster Wake agent on it as a container and it becomes your account's always-on waker — free on every plan, nothing to buy, nothing plugged in. The machine you want to wake sleeps; the NAS stays up and sends the wake.
One docker line does it, and the container enrols itself. Below: the line, the Compose block, the three settings that are not optional, and step-by-step walk-throughs for Synology Container Manager, QNAP Container Station, Unraid, TrueNAS SCALE and the Home Assistant add-on.
One line, on any Docker host
The image is ghcr.io/phodgers/roosterwake-agent, built for amd64, arm64 and 32-bit ARM. On any machine with Docker — a NAS, a home server, a Pi, a mini PC — this is the whole install:
docker run -d --name roosterwake-agent --network host --restart unless-stopped -v roosterwake-agent:/data -e [email protected] ghcr.io/phodgers/roosterwake-agent
Put your own account address in RW_EMAIL. If that address has an account, the container asks to join it and you approve it on the Emitters page; if it has none yet, an invitation goes to it. The signed-in Emitters page writes this line for you with your credential already filled in — on the paid plans that is a private enrolment token (RW_TOKEN=) rather than your address, which joins your account with no approval step.
The same thing as a Compose file, for the NAS apps that take one:
services:
roosterwake-agent:
image: ghcr.io/phodgers/roosterwake-agent
container_name: roosterwake-agent
network_mode: host
restart: unless-stopped
volumes:
- roosterwake-agent:/data
environment:
RW_EMAIL: [email protected]
volumes:
roosterwake-agent:It appears on your Emitters page as an Always on waker within a minute. The container enrols emitter-only: it sends wakes and reports that it is up, and it never offers to sleep or shut down the NAS it runs on — a waker, not a machine to look after.
The three settings that are not optional
- Host network. A wake is a broadcast, and a broadcast cannot leave a bridge network: a container on Docker's default bridge broadcasts into a network with nothing on it but other containers, every packet is sent and nothing wakes. So the container refuses to start on a bridge, before it writes anything, and says: "This container is on a bridge network. A wake is a broadcast and cannot leave a bridge, so the agent refuses to start — run it with --network host (Docker) or network_mode: host (Compose), or tick 'Use the same network as the Docker host' in your NAS's container settings."
- A volume at /data. The container's identity — a device id and a token — lives there. With the volume, a recreate, an image update or a reboot runs the same emitter your dashboard already knows; without it, every recreate is a new emitter and an old row to tidy. A named volume as in the line above, or a folder on the NAS mounted at
/data— both work, and the image runs as root precisely so a folder created by the NAS's own UI is writable. - The email or the token. Exactly one, and only the first time: once an identity exists on the volume,
RW_EMAILandRW_TOKENare ignored, so a recreate never mints a second emitter. To start over, remove the emitter on the Emitters page and empty the volume.
Synology: Container Manager
Container Manager (DSM 7.2 and later; Docker on older DSM) takes a Compose file as a Project, which is the easiest route — paste the block above and it pulls and starts.
- Open Container Manager and go to Project → Create.
- Project name
roosterwake-agent; for the path, pick or create a folder on a volume (docker/roosterwake-agentis the convention). - Source: Create docker-compose.yml. Paste the Compose block above and put your address — or your token line from the Emitters page — in its environment section.
- Next through the web-portal step (it needs none) and Done. The project pulls the image and starts it; the container shows as running under Container.
- Within a minute it is on your Emitters page as an Always on waker.
Prefer the Container wizard to a Compose file?
- Image → Add → Add from URL, paste
ghcr.io/phodgers/roosterwake-agent, and pull thelatesttag. - Container → Create, pick the image, name it
roosterwake-agent, tick Enable auto-restart, then Next into the advanced settings. - Under Network, tick Use the same network as Docker Host — this is the setting the container refuses to start without.
- Under Volume settings, add a folder and mount it at
/data; under Environment, addRW_EMAILwith your address. Next, then Done.
QNAP: Container Station
Container Station 3 has two routes: an Application is a Compose file, a Container is the wizard. Either way, the network mode is the thing to get right.
- Open Container Station → Applications → Create.
- Name it
roosterwake-agent, paste the Compose block above into the YAML box with your address in it, and Create. It pulls the image and starts. - Or the wizard: Containers → Create, type
ghcr.io/phodgers/roosterwake-agent:latestas the image, name it, and open Advanced Settings. - Under Network, set the network mode to Host. Under Storage, add a volume mounted at
/data(a folder on a share is fine). Under Environment, addRW_EMAILwith your address. Create. - Within a minute it is on your Emitters page as an Always on waker.
Unraid
Unraid's Docker tab takes an image from any registry with no template needed; the Network Type field is the one that matters.
- Docker tab → Add Container.
- Name
roosterwake-agent; Repositoryghcr.io/phodgers/roosterwake-agent:latest. - Network Type: Host.
- Add another Path, Port, Variable, Label or Device → Path: container path
/data, host path/mnt/user/appdata/roosterwake-agent/. - The same link again → Variable: key
RW_EMAIL, value your address. Apply — it pulls and starts, and autostart is on by default. - Within a minute it is on your Emitters page as an Always on waker.
TrueNAS SCALE
On TrueNAS SCALE 24.10 and later, apps are Docker containers and a Compose file installs directly; older SCALE releases have the same three settings in their Launch Docker Image form.
- Apps → Discover Apps → the ⋮ menu → Install via YAML. Paste the Compose block above with your address in it, and Save.
- Or the form: Discover Apps → Custom App. Image repository
ghcr.io/phodgers/roosterwake-agent, taglatest. - Under Network, tick Host Network. Under Storage, add a host path (or an ixVolume) mounted at
/data. Under Environment Variables, addRW_EMAILwith your address. Install. - Within a minute it is on your Emitters page as an Always on waker.
Home Assistant: the add-on
A Home Assistant box is an always-on computer too, and the same image runs there as an add-on — the supervisor gives it the host network and a persistent /data, so there is nothing to configure but the credential. The add-on repository is github.com/phodgers/roosterwake-homeassistant.
The add-on is free on every plan: it is the waker, the same free agent as everywhere else. It is not the Home Assistant integration that lives in the same repository — the integration puts your machines on a Home Assistant dashboard as wake buttons and sensors, is installed through HACS as a custom repository, and signs in with an API key, which needs Plus or Pro. You can run both: the add-on wakes, the integration shows. The homelab guide covers the integration side.
- Settings → Add-ons → Add-on store → the ⋮ menu (top right) → Repositories.
- Paste
https://github.com/phodgers/roosterwake-homeassistant, press Add, and close the dialog. Rooster Wake agent appears in the store — reload the page if it does not. - Open it and Install. On the Configuration tab put your account address in email — or a token from the Emitters page in token — and Save.
- On the Info tab turn on Start on boot and press Start. The Log tab shows it enrol; within a minute it is on your Emitters page as an Always on waker.
Why not the router?
Because it runs nothing. The mesh routers most homes have now — the one from your ISP, the three-pack from the shop — do not run third-party software at all, and the few that do are enthusiast territory. The NAS or the Home Assistant box is the always-on computer people already have: it is on the same network as the machine you want to wake, it stays up, and it takes a container. That is the whole reason this page exists.
If you have none of these — no NAS, no Home Assistant, no Pi in a cupboard — the dongle is three parts and about half a watt, and the homelab guide has the arithmetic on which to choose.
Questions from people with a NAS
Does the container have to be on the same network as the machine it wakes?
Can the NAS wake itself?
What does emitter-only mean, and should I switch it off?
RW_EMITTER_ONLY=0) only if you want to power the NAS down from the dashboard, which the Plus and Pro plans can do through a full agent — but a NAS that sleeps is a waker that is asleep, which defeats the point of putting it there.Does it cost anything?
It refuses to start and talks about a bridge network — what now?
--network host on the docker line, network_mode: host in Compose, or the host-network setting in your NAS's container form — each walk-through above names it — then start it again. Nothing was written, so there is nothing to clean up. If you are on a macvlan or an overlay that you know forwards broadcasts, RW_SKIP_HOSTNET_CHECK=1 skips the check.