/UpSnap

A simple wake on lan app written with Django, Django-Channels (websockets), Celery, Redis and nmap.

Primary LanguageSvelteMIT LicenseMIT

UpSnap

A simple wake on lan app written with Svelte, Django, Django-Channels (websockets), Celery, Redis and nmap.

✨ Features

  • Dashboard to wake up devices with 1 click
  • Set timed wake and shutdown events via cron
  • Add custom ports to devices which will be scanned
  • Discover devices by scanning network
  • Notifications on status changes
  • Devices only get pinged when there are 1 or more visitors
  • Dark/light or system prefered color scheme
  • Docker images for amd64, arm64, arm/v7

📸 Screenshots

Dark Light

🐳 Run your own instance

There are 3 example docker-compose files to choose from. The simplest is docker-compose-sqlite.yml.

The website will be available at localhost:8000. If you run it on a different pc, it will be http://<your-ip>:8000. You can change the port in the docker-compose file.

Reverse Proxy

If you're using a reverse proxy, make sure to set BACKEND_IS_PROXIED to true in docker-compose. Set your reverse proxy to the FRONTEND_PORT and set /wol/ to BACKEND_PORT.

Caddy example

upsnap.example.com {
    reverse_proxy localhost:8000
    reverse_proxy /wol/ localhost:8001
}

Databases

Upsnap supports 3 different databases. Postgres, MySQL and SQLite. If you already have an existing database you want to use, delete the database container from the compose file. Always make sure to set the correct database type environment variable, e.g. DB_TYPE=mysql

Windows

There is a partly working solution in the issue here. Windows has problems with docker networking mode host, which breaks network scan. Sending wol packages works though.

📝 Other infos

  • The app container needs to run in host network mode to send the wakeonlan command on your local network. Therefore all other containers also need to run in host network mode. I don't like it but there is no way around.