Wake On LAN from a container
This is a simple solution that provides wake on lan capabilities from inside a container. It uses the simple ether-wake
command to send the magic packet. This can be incredibly helpful if you just need a simple button to click to wake up a machine on your network.
Docker containers will normally use a docker network, which is a separate network from the host network. This means that the container will not be able to send the magic packet to the host network. Therefore, we need to create the container with the --network host
option, which will allow the container to send the magic packet to the host network (not the docker network).
The container is also created with the --user root
option, which allows the container to send the magic packet as root. This is necessary because the ether-wake
command requires root privileges to send the magic packet, and also to install the ether-wake
command, which is bundled with net-tools
in the container.
Create the container as follows;
user@host: docker create -u root --network=host --name olivetin_wol -v /etc/OliveTin/:/config ghcr.io/olivetin/olivetin:latest
Create your OliveTin config.yaml
file in the /etc/OliveTin/
directory on the host, with the following content;
actions:
- title: WakeOnLan Server1
shell: ether-wake A8:5E:45:E4:FF:2A
icon: ping
- title: Install ether-wake on startup
shell: microdnf install -y net-tools
hidden: true
execOnStartup: true
timeout: 120
Obviously adjust the config file with your own MAC addressses, creating new actions to send WOL commands as needed.
Then start the container with the following command;
docker start olivetin_wol
Then visit your OliveTin web interface at http://yourServer:1337 and you should see something that looks like this;