UpSnap
A simple wake on lan web app written with SvelteKit, Go and PocketBase.
> [!NOTE]
>
> #### UpSnap is, and always will be, free and open source software.
>
> If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
>
> The official and only trusted source for UpSnap is this repository (and its linked releases).
> Do not pay third parties for something that is provided here for free.
## ✨ Features
- 🚀 One-Click Device Wake-Up Dashboard
- ⏰ Timed Events via Cron for Automation
- 🔌 Ping Any Port You Choose
- 🔍 Discover Devices with Network Scanning (nmap required)
- 👤 Secured User Management
- 🌐 i18n support for [these](/frontend/translations) languages
- 🎨 35 Themes
- 🐳 [Docker images](https://github.com/seriousm4x/UpSnap/pkgs/container/upsnap) for amd64, arm64, arm/v7, arm/v6
- 🏠 Self-Hostable
## 📸 Screenshots
| Silk | Dim |
| ---------------------------------- | --------------------------------- |
|  |  |
|  |  |
|  |  |
|  |  |
|  |  |
|  |  |
## 🚀 Run the binary
Just download the latest binary from the [release page](https://github.com/seriousm4x/UpSnap/releases) and run it.
### Root:
```bash
sudo ./upsnap serve --http=0.0.0.0:8090
```
### Non-root on linux only:
```bash
sudo setcap cap_net_raw=+p ./upsnap # only once after downloading to allow for pinging devices
./upsnap serve --http=0.0.0.0:8090
```
For more options check `./upsnap --help` or visit [PocketBase documentation](https://pocketbase.io/docs).
If you want to use network discovery, make sure to have `nmap` installed and run UpSnap as root/admin.
## 🐳 Run in docker
You can use the [docker-compose](docker-compose.yml) example. See the comments in the file for customization.
### Non-root docker user:
You will lose the ability to add network devices via the scan page.
Create the mount point first:
```bash
mkdir data
```
Then add `user: 1000:1000` to the docker-compose file (or whatever your $UID:$GID is).
### Change port
If you want to change the port from 8090 to something else, change the following (5000 in this case):
```yml
environment:
- UPSNAP_HTTP_LISTEN=0.0.0.0:5000
```
### Install additional packages for shutdown cmd
```yml
entrypoint: /bin/sh -c "apk update && apk add --no-cache