3.6 KiB
3.6 KiB
Features
- Status Monitoring: Real-time status checks to determine if your server is online or offline
- Wake-on-LAN: Boot your server remotely with the click of a button
- Remote Shutdown: Safely shut down your server when it's not needed
- Responsive UI: Simple, mobile-friendly interface with color-coded status indicators
- Lightweight: Built with Go for minimal resource usage, perfect for Raspberry Pi Zero
Requirements
- Raspberry Pi (Zero, 2, 3, 4, etc.)
- Go (version 1.16 or higher)
- wakeonlan utility
- SSH access to the target server (for shutdown functionality)
- Target server configured for Wake-on-LAN
Installation
1. Install Dependencies
sudo apt update
sudo apt install golang-go wakeonlan
2. Clone the Repository
git clone https://github.com/yourusername/wol-server.git
cd wol-server
3. Configure the Application
Edit the constants in main.go to match your server:
const (
serverName = "yourserver" // Hostname or IP address of your server
macAddress = "xx:xx:xx:xx:xx:xx" // MAC address of your server's network interface
port = "8080" // Port to run the web application on
)
4. Build the Application
go build -o wol-server
5. Set Up as a System Service
Create a systemd service file:
sudo nano /etc/systemd/system/wol-server.service
Add the following content (adjust paths if needed):
[Unit]
Description=WOL Server Go Application
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/wol-server
ExecStart=/home/pi/wol-server/wol-server
Restart=always
[Install]
WantedBy=multi-user.target
Enable and start the service:
sudo systemctl enable wol-server
sudo systemctl start wol-server
SSH Configuration for Remote Shutdown
For the shutdown functionality to work, you need to set up password-less SSH:
-
Generate an SSH key on your Raspberry Pi:
ssh-keygen -t rsa -
Copy the key to your target server:
ssh-copy-id user@yourserver -
Configure sudo on the target server to allow password-less shutdown:
# On the target server, run: sudo visudo # Add this line (replacing 'user' with your username): user ALL=(ALL) NOPASSWD: /sbin/shutdown
Usage
Access the web interface by navigating to http://raspberry-pi-ip:8080 in your browser.
The interface provides:
- Current server status (Online/Offline)
- Boot button - sends a Wake-on-LAN magic packet to your server
- Shutdown button - safely shuts down your server via SSH
- Refresh button - manually updates the status display
Troubleshooting
-
Server won't boot:
- Verify that Wake-on-LAN is enabled in your server's BIOS/UEFI
- Confirm the MAC address is correct
- Check if your router blocks Wake-on-LAN packets
-
Shutdown doesn't work:
- Verify SSH key setup
- Check sudo configuration on target server
- Test manual SSH command:
ssh user@server sudo shutdown -h now
-
Web interface not accessible:
- Ensure the service is running:
sudo systemctl status wol-server - Check for firewall rules blocking port 8080
- Verify the Raspberry Pi is connected to the network
- Ensure the service is running:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by the need for a simple, lightweight server power management tool
- Thanks to the Go community for the excellent standard library that makes web development straightforward
