Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seriousm4x/UpSnap
A simple wake on lan web app written with SvelteKit, Go and PocketBase.
https://github.com/seriousm4x/UpSnap
golang pocketbase sveltekit wakeonlan wol
Last synced: about 1 month ago
JSON representation
A simple wake on lan web app written with SvelteKit, Go and PocketBase.
- Host: GitHub
- URL: https://github.com/seriousm4x/UpSnap
- Owner: seriousm4x
- License: mit
- Created: 2020-11-16T09:27:18.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-04-11T21:16:08.000Z (about 1 month ago)
- Last Synced: 2024-04-12T16:52:42.712Z (about 1 month ago)
- Topics: golang, pocketbase, sveltekit, wakeonlan, wol
- Language: TypeScript
- Homepage:
- Size: 25.5 MB
- Stars: 1,654
- Watchers: 9
- Forks: 64
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Lists
- awesome-selfhosted - Upsnap - A simple Wake on LAN (WOL) dashboard app. Wake up devices on your network and see current status. `MIT` `Go/Docker` (Software / Miscellaneous)
- awesome-stars - seriousm4x/UpSnap - A simple wake on lan web app written with SvelteKit, Go and PocketBase. (TypeScript)
- awesome-stars - seriousm4x/UpSnap - A simple wake on lan web app written with SvelteKit, Go and PocketBase. (TypeScript)
- fucking-awesome-selfhosted - Upsnap - A simple Wake on LAN (WOL) dashboard app. Wake up devices on your network and see current status. `MIT` `Go/Docker` (Software / Miscellaneous)
- awesome-stars - seriousm4x/UpSnap - A simple wake on lan web app written with SvelteKit, Go and PocketBase. (TypeScript)
- awesome-selfhosted - Upsnap - A simple Wake on LAN (WOL) dashboard app. Wake up devices on your network and see current status. `MIT` `Go/Docker` (Software / Miscellaneous)
README
## β¨ 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](https://github.com/seriousm4x/UpSnap/tree/master/frontend/src/lib/i18n) languages
- π¨ 29 Themes
- π³ [Docker images](https://github.com/seriousm4x/UpSnap/pkgs/container/upsnap) for amd64, arm64, arm/v7, arm/v6
- π Self-Hostable, No Cloud Bullshit!## πΈ Screenshots
| Dark | Light |
| --------------------------------- | ---------------------------------- |
| ![](/assets/home-dark.webp) | ![](/assets/home-light.webp) |
| ![](/assets/account-dark.webp) | ![](/assets/account-light.webp) |
| ![](/assets/new-manual-dark.webp) | ![](/assets/new-manual-light.webp) |
| ![](/assets/new-scan-dark.webp) | ![](/assets/new-scan-light.webp) |
| ![](/assets/settings-dark.webp) | ![](/assets/settings-light.webp) |
| ![](/assets/users-dark.webp) | ![](/assets/users-light.webp) |## π§ Install from the [AUR](https://aur.archlinux.org/packages/upsnap-bin)
```bash
yay -Sy upsnap-bin
```## π 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:
```bash
sudo setcap cap_net_raw=+ep ./upsnap # only once after downloading
./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:
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
entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:5000"
healthcheck:
test: curl -fs "http://localhost:5000/api/health" || exit 1
```### Install additional packages for shutdown cmd
```yml
entrypoint: /bin/sh -c "apk update && apk add --no-cache && rm -rf /var/cache/apk/* && ./upsnap serve --http 0.0.0.0:8090"
```You can search for your needed package [here](https://pkgs.alpinelinux.org/packages).
### Reverse Proxy
**Caddy example**
```
upsnap.example.com {
reverse_proxy localhost:8090
}
```## π User permissions
UpSnap offers unique access for each user, per device. While admins have all permissions, they can assign specific rights to users such as displaying/hiding a device, accessing device editing, deleting and powering devices on/off. See the last screenshot in the [πΈ Screenshots section](#-screenshots).
## π 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 translating
UpSnap is available in the following languages so far:
- πΊπΈ **English** (en-US)
- π©πͺ **German** (de-DE)
- πͺπΈ **Spanish** (es-ES)
- π«π· **French** (fr-FR)
- π΅πΉ **Portuguese** (pt-PT)
- π¨π³ **Chinese** (zh-CN)**If you want to contribute and help translating, check the wiki: [How to add languages](https://github.com/seriousm4x/UpSnap/wiki/How-to-add-languages)**
## π§ Help developing
Fork this branch and clone it.
1. Start backend
```sh
cd backend
go mod tidy
go run main.go serve
```2. Start frontend
```sh
cd frontend
pnpm i
pnpm run dev
```Open up [http://localhost:5173/](http://localhost:5173/), create an admin user and add some devices.
## π Star History
[![Star History Chart](https://api.star-history.com/svg?repos=seriousm4x/UpSnap&type=Date&theme=dark)](https://star-history.com/#seriousm4x/UpSnap&Date)