Welcome to Etherwake-Website - a Node.js/Express web application that wakes devices on your local network using the etherwake command via a Raspberry Pi. Designed for devices that don't support Wake-on-Wireless-LAN (WoWLAN), this solution uses an Ethernet-connected Raspberry Pi to send magic packets instead of relying on wireless capabilities.
For a simpler Wake-on-LAN web solution, see this alternative repo.
Provides a workaround for waking computers that:
- Lack WoWLAN support
- Aren't Ethernet-connected
- Have a Raspberry Pi on the same network to send Wake-on-LAN (WoL) packets
- Device Management - Add, edit, and remove devices
- One-Click Wake - Send WoL packets via web interface
- Secure Storage - Optional Redis integration for production
- Docker Support - Pre-built image with compose examples
- Add Device - Enter name/MAC via web interface
- Initiate Wake - Click button to SSH into Pi
- Send Packet - Pi executes
etherwakecommand - Device Wakes - Target system powers on
- Raspberry Pi running Raspberry Pi OS (connected to target via Ethernet)
etherwakeinstalled on Pi:sudo apt update && sudo apt install etherwake -y- SSH access from your server to Pi(SSH enabled and tested)
- Pull the Docker Image
docker pull ghcr.io/theking349/etherwake-website:latest
- Create the Necessary Files
sudo touch devices.json && sudo touch .env && sudo nano docker-compose.yaml
- Choose the Correct Configuration
- Choose appropriate compose file:
- External Redis(existing Redis Server)
- Internal Redis(new Redis Server)
- No Redis(development only)
- Create
.envfile using the template- Edit environment variables as needed
- Description of environment variables here
- For HTTPS (Optional)
- Create
keysdirectory(sudo mkdir keys) - Add
server.crtandserver.keyfiles - Set
USE_HTTPStotruein the.env
- Create
- Choose appropriate compose file:
- Start the Container
docker compose up -d
- Access the Website
Open a browser and go tohttp://your-server-ip:8089
- Clone the Repository
git clone https://github.com/TheKing349/etherwake-website.git cd etherwake-website - Install Dependencies
npm install
- Set Up the Environment
- Copy
.env.templateto.env- Description of environment variables here
- For HTTPS (Optional):
- Create
src/keys/directory - Set
USE_HTTPStotruein the.env
- Create
- Copy
- Start the Server
npm start
- Access the Website
Open a browser and go tohttp://your-server-ip:8089
| Environment Variable | Description | Example Value |
|---|---|---|
| SESSION_SECRET | Secure cookie secret (generate with node -e "console.log(require('crypto').randomBytes(64).toString('hex'))" |
64-char hex |
| USE_HTTPS | Enable HTTPS (requires certs) | true/false |
| USE_REDIS | Required for production - Use Redis instead of memory store | true/false |
| REDIS_HOST | Redis connection URL | redis://ip-address:6379 |
| SSH_HOST | Raspberry Pi IP address | 192.168.1.123 |
| SSH_USER | Raspberry Pi username | pi |
| SSH_PASSWORD | Raspberry Pi password | raspberry |
- Add a Device:
- Click ➕ and enter name and MAC address
- Wake a Device:
- Select device ➔ Click "Wake"
- SSH Issues
- Verify Pi connectivity:
ssh $SSH_USER@$SSH_HOST
- ** Enable SSH on Pi:**
sudo raspi-config # → Interface Options → SSH - Device Not Waking
- Confirm:
- WoL enabled in BIOS
- Correct MAC address
- Pi connected via Ethernet to target device
etherwakeinstalled on Raspberry Pi
- Confirm:
- Container Issues
- Check logs:
docker logs etherwake-website -f
- Validate volume mounts and permissions
Issues and PRs welcome! Please follow existing code style and include tests where applicable.
The project is licensed under the MIT LICENSE