| .github/workflows | ||
| templates | ||
| .env | ||
| .env.sample | ||
| go.mod | ||
| go.sum | ||
| handlers.go | ||
| main.go | ||
| README.md | ||
| utils.go | ||
WOL-Server
A lightweight Wake-on-LAN (WOL) server application designed specifically for Raspberry Pi devices. This tool allows you to remotely power on your network devices using magic packets through a simple, user-friendly interface.
Features
- Cross-Platform Compatibility: Optimized for various Raspberry Pi models (Zero, 1, 2, 3, 4)
- Easy Installation: Automated deployment script for quick setup
- Systemd Integration: Runs as a system service for reliability
- Simple Web Interface: Control your devices through an intuitive web UI
- Configurable: Easily customize settings through environment variables or
.envfile - Low Resource Usage: Minimal footprint to run efficiently on any Pi
Installation
Method 1: Download Individual Files (Recommended)
- Download the necessary files directly to your Raspberry Pi:
# Create a directory for installation
mkdir -p ~/wol-install
cd ~/wol-install
# Download the executable, service file, and deployment script
wget https://github.com/thisloke/wol-server/releases/download/v6/wol-server-arm6
wget https://github.com/thisloke/wol-server/releases/download/v6/wol-server.service
wget https://github.com/thisloke/wol-server/releases/download/v6/deploy.sh
# Make files executable
chmod +x wol-server-arm6
chmod +x deploy.sh
- Create a
.envfile for configuration:
cat > .env << EOL
# Server Configuration
SERVER_NAME=pippo
SERVER_USER=root
MAC_ADDRESS=aa:aa:aa:aa:aa:aa
PORT=8080
EOL
- Run the deployment script:
./deploy.sh
Method 2: Build from Source
If you prefer to build the application from source:
# Install Go (if not already installed)
sudo apt update
sudo apt install golang-go
# Clone the repository
git clone https://github.com/thisloke/wol-server.git
cd wol-server
# Install dependencies
go get github.com/joho/godotenv
# Create a .env file for configuration
cat > .env << EOL
# Server Configuration
SERVER_NAME=pippo
SERVER_USER=root
MAC_ADDRESS=aa:aa:aa:aa:aa:aa
PORT=8080
EOL
# Build the application
go build -o wol-server
# Create installation directory
mkdir -p ~/wol-server
# Copy the binary and config
cp wol-server ~/wol-server/
cp .env ~/wol-server/
chmod +x ~/wol-server/wol-server
# Create and install systemd service
sudo bash -c 'cat > /etc/systemd/system/wol-server.service << EOL
[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
EOL'
# Enable and start the service
sudo systemctl daemon-reload
sudo systemctl enable wol-server
sudo systemctl start wol-server
Configuration
WOL-server can be configured using environment variables or a .env file in the application directory.
Available Configuration Options
| Environment Variable | Description | Default Value |
|---|---|---|
SERVER_NAME |
Name of the server to ping/wake | pippo |
SERVER_USER |
SSH username for remote commands | root |
MAC_ADDRESS |
MAC address of the target server | aa:aa:aa:aa:aa:aa |
PORT |
The port number for the web server | 8080 |
Customizing Your Configuration
You can edit the .env file to modify the application's behavior:
# Navigate to the installation directory
cd ~/wol-server
# Edit the .env file
nano .env
After modifying the configuration, restart the service:
sudo systemctl restart wol-server
Usage
Once installed, the WOL server will be accessible at:
http://your-pi-ip:8080
(or whatever port you've configured)
Using the Web Interface
- Wake Server: Click the "Boot" button to send a Wake-on-LAN magic packet to the configured MAC address
- Shut Down Server: Click the "Shutdown" button, confirm, and enter your password if required
Service Management
Control the WOL server using standard systemd commands:
# Check service status
sudo systemctl status wol-server
# Stop the service
sudo systemctl stop wol-server
# Start the service
sudo systemctl start wol-server
# Restart the service
sudo systemctl restart wol-server
# View logs
journalctl -u wol-server -f
Troubleshooting
Checking Your Raspberry Pi Architecture
If you need to verify which version of the application you should use:
uname -m
This will output your Pi's architecture:
armv6l: Use thewol-server-arm6binary (Pi Zero, Pi 1)armv7l: Use thewol-server-arm7binary (Pi 2, Pi 3)aarch64: Use thewol-server-arm64binary (64-bit Pi 3, Pi 4)
Service Not Starting
If the service doesn't start properly, check the logs:
journalctl -u wol-server -e
Checking Configuration
Verify that your configuration is being properly loaded:
# View the environment variables being used
sudo systemctl status wol-server
Look for a line in the output that shows the loaded configuration values.
Permission Issues
Make sure the binary has execute permissions:
chmod +x ~/wol-server/wol-server
Contributing
Contributions are welcome! Feel free to submit pull requests or open issues for bugs and feature requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
WOL-Server - Simple Wake-on-LAN management for Raspberry Pi