Skip to content

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
└── .dockerignore

Creating the Dockerfile

FROM ghcr.io/seriousm4x/upsnap:latest
# Set environment variables
ENV 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 port
EXPOSE 8090
# Data directory for SQLite database
VOLUME ["/app/pb_data"]

Environment Variables Reference

VariableRequiredDefaultDescription
UPSNAP_INTERVALNo@every 10sPing interval for checking device status
UPSNAP_SCAN_RANGENo-Network range for device discovery (e.g., 192.168.1.0/24)
UPSNAP_WEBSITE_TITLENoUpsnapCustom title for the web interface

Deploying Upsnap on Klutch.sh

    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:

    • Select HTTP as the traffic type
    • Set the internal port to 8090 (Upsnap’s default port)

    Set Environment Variables

    Add the following environment variables:

    VariableValue
    UPSNAP_INTERVAL@every 10s
    UPSNAP_SCAN_RANGEYour network range (e.g., 192.168.1.0/24)
    UPSNAP_WEBSITE_TITLEYour preferred title

    Attach Persistent Volumes

    Add the following volume:

    Mount PathRecommended SizePurpose
    /app/pb_data1 GBSQLite 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:

  1. Click Add Device to manually add a device
  2. Enter the device name, MAC address, and IP address
  3. Optionally set a custom port for Wake-on-LAN packets
  4. Save the device configuration

Network Discovery

To automatically discover devices:

  1. Ensure UPSNAP_SCAN_RANGE is configured
  2. Navigate to Settings and initiate a network scan
  3. Review discovered devices and add them to your list

Scheduling Wake Events

Set up scheduled wake times:

  1. Select a device from your list
  2. Click Schedule to add wake schedules
  3. Use cron expressions for flexible timing (e.g., 0 8 * * 1-5 for 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.