Deploying Upsnap
Introduction
Upsnap is a lightweight, self-hosted Wake-on-LAN (WoL) web application that allows you to remotely power on devices in your network through a clean, modern interface. Built with Go and SvelteKit, Upsnap provides a simple yet powerful solution for managing network device power states without the complexity of enterprise tools.
Key highlights of Upsnap:
- Clean Web Interface: Modern, responsive design built with SvelteKit for easy device management
- Device Discovery: Automatically scan your network to discover devices and their MAC addresses
- Scheduled Wake: Set up scheduled wake times for devices using cron expressions
- Ping Monitoring: Monitor device status with built-in ping functionality
- Multi-User Support: Create accounts with different permission levels
- API Access: RESTful API for integration with home automation systems
- Lightweight: Minimal resource footprint with Go backend and embedded database
- Docker Ready: Simple deployment with official Docker images
This guide walks through deploying Upsnap on Klutch.sh using Docker, configuring device management, and setting up scheduled wake events.
Why Deploy Upsnap on Klutch.sh
Deploying Upsnap on Klutch.sh provides several advantages for managing Wake-on-LAN operations:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Upsnap without complex orchestration. Push to GitHub, and your WoL application deploys automatically.
Persistent Storage: Attach persistent volumes for your SQLite database and configuration. Your device list and schedules survive container restarts without data loss.
HTTPS by Default: Klutch.sh provides automatic SSL certificates, ensuring secure access to your device management interface from anywhere.
GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments, keeping your deployment in sync.
Environment Variable Management: Securely store authentication credentials and configuration through Klutch.sh’s environment variable system.
Prerequisites
Before deploying Upsnap on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Upsnap configuration
- Basic familiarity with Docker and containerization concepts
- Network devices configured for Wake-on-LAN (WoL enabled in BIOS/UEFI)
Preparing Your Repository
Create a GitHub repository containing your Dockerfile for Upsnap deployment.
Repository Structure
upsnap-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
FROM ghcr.io/seriousm4x/upsnap:latest
# Set environment variablesENV UPSNAP_INTERVAL=${UPSNAP_INTERVAL:-@every 10s}ENV UPSNAP_SCAN_RANGE=${UPSNAP_SCAN_RANGE:-}ENV UPSNAP_WEBSITE_TITLE=${UPSNAP_WEBSITE_TITLE:-Upsnap}
# Expose the web interface portEXPOSE 8090
# Data directory for SQLite databaseVOLUME ["/app/pb_data"]Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
UPSNAP_INTERVAL | No | @every 10s | Ping interval for checking device status |
UPSNAP_SCAN_RANGE | No | - | Network range for device discovery (e.g., 192.168.1.0/24) |
UPSNAP_WEBSITE_TITLE | No | Upsnap | Custom title for the web interface |
Deploying Upsnap on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 8090 (Upsnap’s default port)
Push Your Repository to GitHub
Initialize your repository and push to GitHub with your Dockerfile and configuration files.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “upsnap” or “wol-manager”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Upsnap Dockerfile.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
UPSNAP_INTERVAL | @every 10s |
UPSNAP_SCAN_RANGE | Your network range (e.g., 192.168.1.0/24) |
UPSNAP_WEBSITE_TITLE | Your preferred title |
Attach Persistent Volumes
Add the following volume:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/app/pb_data | 1 GB | SQLite database and application data |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will build the container, attach volumes, and provision an HTTPS certificate.
Access Upsnap
Once deployment completes, access your Upsnap instance at https://your-app-name.klutch.sh. Create an admin account on first access.
Initial Configuration
Adding Devices
After logging in as admin:
- Click Add Device to manually add a device
- Enter the device name, MAC address, and IP address
- Optionally set a custom port for Wake-on-LAN packets
- Save the device configuration
Network Discovery
To automatically discover devices:
- Ensure
UPSNAP_SCAN_RANGEis configured - Navigate to Settings and initiate a network scan
- Review discovered devices and add them to your list
Scheduling Wake Events
Set up scheduled wake times:
- Select a device from your list
- Click Schedule to add wake schedules
- Use cron expressions for flexible timing (e.g.,
0 8 * * 1-5for weekdays at 8 AM)
Additional Resources
Conclusion
Deploying Upsnap on Klutch.sh gives you a simple, modern Wake-on-LAN solution with persistent storage and secure HTTPS access. The combination of Upsnap’s clean interface and Klutch.sh’s deployment simplicity means you can quickly set up remote device power management for your network.