Skip to content
forked from seriousm4x/UpSnap

A simple wake on lan app written with SvelteKit, Go, PocketBase and nmap

License

Notifications You must be signed in to change notification settings

drtech981/UpSnap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UpSnap

A simple wake on lan app written with SvelteKit, Go, PocketBase and nmap.

✨ Features

  • Dashboard to wake up devices with one click
  • Set timed wake and shutdown events via cron
  • Add custom ports to devices which will be pinged
  • Discover devices by scanning network
  • User/Password protected login
  • Dark/light or system prefered color scheme
  • Docker images for amd64, arm64, arm/v7

📸 Screenshots

Dark Light

🚀 Run the binary

Just download the latest binary from the release page and run it ./upsnap serve --http=0.0.0.0:8090.

For more options check ./upsnap --help or visit PocketBase documentation.

If you need network discovery, make sure to have nmap installed and run upsnap as root/admin.

🐳 Run in docker

You can use the docker-compose example. See the comments in the file for customization.

If you want to change the port, change the following (5000 in this case):

entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:5000"
healthcheck:
  test: curl -fs "http://localhost:5000/api/health" || exit 1
  interval: 10s

And if you need additional packages inside the container, do this:

entrypoint: /bin/sh -c "apk update && apk add --no-cache <YOUR_PACKAGE> && rm -rf /var/cache/apk/* && ./upsnap serve --http 0.0.0.0:8090"

You can search for your needed package here.

Reverse Proxy

Caddy example

upsnap.example.com {
    reverse_proxy localhost:8090
}

🔒 Authorisation

Since version 3.1 authorisation is enabled by default.

User management is done through the PocketBase webinterface at http://localhost:8090/_/. This is mainly for internal use, such as within a home or corporate network. For external use please see below.

  • To manage users, click the "Collections" icon on the left and select "users".
  • To manage admins, click the "Settings" icon on the left and select "Admin".

Api permissions listed by user role:

Api Unauthorized Users Admins
List/Search Rule
View Rule
Create Rule
Delete Rule
Manage Rule
Wake devices
Shutdown devices
Scan network

🌍 Exposing to the open web

Although UpSnap has user authorisation, it is not recommended to expose it to the open web and make it accessible by everyone!

Reason: The shutdown device command is basically a command piped to #sh (root if you run docker). If anyone gains unauthorized access and can abuse this api route in any way, the attacker has access to a (root) shell on your local network.

Recommended: If you need access from outside your network, please use a vpn. Wireguard or OpenVPN is your way to go.

🔧 Help developing

Fork this branch and clone it.

  1. Start backend
cd backend
go mod tidy
go run main.go serve

Log in to http://localhost:8090/_/, create an admin user and add some devices.

  1. Start frontend
cd frontend
pnpm i
pnpm run dev

Open up http://localhost:5173/

About

A simple wake on lan app written with SvelteKit, Go, PocketBase and nmap

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Svelte 59.6%
  • Go 32.9%
  • SCSS 3.7%
  • JavaScript 1.7%
  • Dockerfile 0.8%
  • TypeScript 0.8%
  • Other 0.5%