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)
- โ๏ธ Shutdown Devices with a Custom Command
- ๐ค Secured User Management
- ๐ i18n support for these languages
- ๐จ 35 Themes
- ๐ณ Docker images for amd64, arm64, arm/v7, arm/v6
- ๐ Self-Hostable
๐ธ Screenshots
| Silk | Dim | | ---------------------------------- | --------------------------------- | |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
๐ Run the binary
Just download the latest binary from the release page and run it.
sudo ./upsnap serve --http=0.0.0.0:8090
To run as non-root (Linux only), refer to the Wiki: Use non-root user
For more options check ./upsnap --help or visit PocketBase documentation.
๐ณ Run in Docker
Just pull and run the image: docker run --network=host seriousm4x/upsnap:latest or you can use the docker-compose example. See the comments in the file for customization.
To run as non-root, refer to the Wiki: Use non-root user
Change port (Docker)
If you want to change the port from 8090 to something else, change the following (5000 in this case):
environment:
- UPSNAPHTTPLISTEN=0.0.0.0:5000
โ๏ธ Shutting Down Devices
To shutdown devices, refer to the Wiki: How to use shutdowns
Reverse Proxy
Caddy example
upsnap.example.com {
reverse_proxy localhost:8090
}
Run in sub path
You can run UpSnap on a different path than /, e.g. /upsnap-sub-path/. To do this in caddy, set the following:
http://localhost:8091 {
handle /upsnap-sub-path/* {
uri strip_prefix /upsnap-sub-path
reverse_proxy localhost:8090
}
}
Or nginx:
http {
server {
listen 8091;
server_name localhost;
location /upsnap-sub-path/ {
proxy_pass http://localhost:8090/;
proxy_redirect off;
proxysetheader Host $host;
proxysetheader X-Real-IP $remote_addr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
}
}
}
Paths must end with a trailing /.
๐ง Install from the AUR
yay -Sy upsnap-bin
๐ 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.
๐ 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 (possibly as root user). 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:
- ๐ธ๐ฆ Arabic (Saudi Arabia) (ar-SA)
- ๐ง๐ฌ Bulgarian (Bulgaria) (bg-BG)
- ๐จ๐ฟ Czech (Czech republic) (cs-CZ)
- ๐ฉ๐ช German (Germany) (de-DE)
- ๐ฌ๐ท Greek (Greece) (el-GR)
- ๐บ๐ธ English (United States) (en-US)
- ๐ช๐ธ Spanish (Spain) (es-ES)
- ๐ซ๐ท French (France) (fr-FR)
- ๐ฎ๐ณ Hindi (India) (hi-IN)
- ๐ฎ๐ฉ Bahasa (Indonesia) (id-ID)
- ๐ฎ๐น Italian (Italy) (it-IT)
- ๐ฏ๐ต Japanese (Japan) (ja-JP)
- ๐ฐ๐ท Korean (Republic of Korea) (ko-KR)
- ๐ณ๐ด Norwegian (Norway) (nb-NO)
- ๐ณ๐ฑ Dutch (Netherlands) (nl-NL)
- ๐ต๐ฑ Polish (Poland) (pl-PL)
- ๐ง๐ท Portuguese (Brazil) (pt-BR)
- ๐ต๐น Portuguese (Portugal) (pt-PT)
- ๐ท๐บ Russian (Russia) (ru-RU)
- ๐บ๐ฆ Ukrainian (Ukrain) (uk-UA)
- ๐ป๐ณ Vietnamese (Vietnam) (vi-VN)
- ๐จ๐ณ Chinese (China) (zh-CN)
- ๐น๐ผ Chinese (Taiwan) (zh-TW)
๐ง Help developing
Fork this branch and clone it.
- Start backend
cd backend
go mod tidy
go run main.go serve
- Start frontend
cd frontend
pnpm i
pnpm run dev
Open up http://localhost:5173/, create an admin user and add some devices.