| .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: Pre-built Release (Recommended)
-
Check which binary is right for your Raspberry Pi model:
uname -marmv6l: Usewol-server-arm6(Pi Zero, Pi 1)armv7l: Usewol-server-arm7(Pi 2, Pi 3 32-bit)aarch64: Usewol-server-arm64(Pi 3/4 64-bit)
-
Download the latest release:
Navigate to Releases and download the appropriate files for your Pi, or use the following commands:
# Create a directory for installation mkdir -p ~/wol-install cd ~/wol-install # Download the executable (replace v6 with the latest version number) wget https://github.com/thisloke/wol-server/releases/download/v6/wol-server-arm6 # Download the service file wget https://github.com/thisloke/wol-server/releases/download/v6/wol-server.service # Download the deploy script 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
Method 3: Manual Installation
If you encounter issues with the deployment script:
# Create the application directory
mkdir -p ~/wol-server
# Copy the binary and rename it
cp wol-server-arm6 ~/wol-server/wol-server
chmod +x ~/wol-server/wol-server
# Copy the .env file
cp .env ~/wol-server/
# Install the service file
sudo cp wol-server.service /etc/systemd/system/
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
Updating to a New Version
To update to a new version:
# Navigate to a temporary directory
mkdir -p ~/wol-update
cd ~/wol-update
# Download the latest release (replace v7 with the latest version number)
wget https://github.com/thisloke/wol-server/releases/download/v7/wol-server-arm6
chmod +x wol-server-arm6
# Stop the service
sudo systemctl stop wol-server
# Replace the binary
cp wol-server-arm6 ~/wol-server/wol-server
# Start the service
sudo systemctl start wol-server
# Clean up
cd ~
rm -rf ~/wol-update
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
Can't Download Release Files
If you're having trouble downloading the release files directly, you can also:
- Download the files on your computer
- Transfer them to your Raspberry Pi using SCP, SFTP, or a USB drive
- Continue with the installation steps as described above
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.