{"id":13552807,"url":"https://github.com/seriousm4x/UpSnap","last_synced_at":"2025-04-03T04:30:47.606Z","repository":{"id":37766243,"uuid":"313250436","full_name":"seriousm4x/UpSnap","owner":"seriousm4x","description":"A simple wake on lan web app written with SvelteKit, Go and PocketBase.","archived":false,"fork":false,"pushed_at":"2024-10-29T09:14:46.000Z","size":27273,"stargazers_count":2495,"open_issues_count":4,"forks_count":93,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-29T11:03:03.437Z","etag":null,"topics":["golang","pocketbase","sveltekit","wakeonlan","wol"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seriousm4x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"seriousm4x","ko_fi":"seriousm4x"}},"created_at":"2020-11-16T09:27:18.000Z","updated_at":"2024-10-29T09:24:31.000Z","dependencies_parsed_at":"2023-10-15T17:12:46.931Z","dependency_job_id":"8bb20da4-89eb-4ff3-a6d7-2505fa20269e","html_url":"https://github.com/seriousm4x/UpSnap","commit_stats":{"total_commits":337,"total_committers":3,"mean_commits":"112.33333333333333","dds":"0.011869436201780381","last_synced_commit":"469d480988899df7fc8ea1014968f766d5f17909"},"previous_names":[],"tags_count":134,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousm4x%2FUpSnap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousm4x%2FUpSnap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousm4x%2FUpSnap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousm4x%2FUpSnap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seriousm4x","download_url":"https://codeload.github.com/seriousm4x/UpSnap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246939069,"owners_count":20857916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","pocketbase","sveltekit","wakeonlan","wol"],"created_at":"2024-08-01T12:02:10.730Z","updated_at":"2025-04-03T04:30:47.598Z","avatar_url":"https://github.com/seriousm4x.png","language":"TypeScript","funding_links":["https://github.com/sponsors/seriousm4x","https://ko-fi.com/seriousm4x"],"categories":["Go","Svelte","TypeScript","Showcases","Software","Apps","置顶","网络信息服务"],"sub_categories":["Miscellaneous","Tools","08、家庭与物联网","网络协议","Network Utilities"],"readme":"\u003cdiv align=\"center\" width=\"100%\"\u003e\n    \u003cimg src=\"frontend/static/gopher.svg\" width=\"150\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\" width=\"100%\"\u003e\n    \u003ch2\u003eUpSnap\u003c/h2\u003e\n    \u003cp\u003eA simple wake on lan web app written with SvelteKit, Go and PocketBase.\u003c/p\u003e\n    \u003cdiv\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/upsnap\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/seriousm4x/UpSnap?style=flat\u0026label=Stars\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/pkgs/container/upsnap\"\u003e\u003cimg src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fipitio%2Fbackage%2Findex%2Fseriousm4x%2FUpSnap%2Fupsnap.json\u0026query=downloads\u0026label=ghcr.io%20pulls\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://hub.docker.com/r/seriousm4x/upsnap\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/seriousm4x/upsnap?label=docker%20hub%20pulls\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/seriousm4x/upsnap/total?label=binary%20downloads\" /\u003e\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cdiv\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/seriousm4x/UpSnap?filename=backend/go.mod\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/seriousm4x/upsnap?display_name=tag\u0026label=Latest%20release\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/actions\"\u003e\u003cimg src=\"https://github.com/seriousm4x/upsnap/actions/workflows/release.yml/badge.svg?event=push\" /\u003e\u003c/a\u003e\n        \u003ca target=\"_blank\" href=\"https://github.com/seriousm4x/UpSnap/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/seriousm4x/upsnap\" /\u003e\u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n## ✨ Features\n\n- 🚀 One-Click Device Wake-Up Dashboard\n- ⏰ Timed Events via Cron for Automation\n- 🔌 Ping Any Port You Choose\n- 🔍 Discover Devices with Network Scanning (nmap required)\n- 👤 Secured User Management\n- 🌐 i18n support for [these](/frontend/translations) languages\n- 🎨 35 Themes\n- 🐳 [Docker images](https://github.com/seriousm4x/UpSnap/pkgs/container/upsnap) for amd64, arm64, arm/v7, arm/v6\n- 🏠 Self-Hostable\n\n## 📸 Screenshots\n\n| Silk                               | Dim                               |\n| ---------------------------------- | --------------------------------- |\n| ![](/assets/home-light.webp)       | ![](/assets/home-dark.webp)       |\n| ![](/assets/account-light.webp)    | ![](/assets/account-dark.webp)    |\n| ![](/assets/new-manual-light.webp) | ![](/assets/new-manual-dark.webp) |\n| ![](/assets/new-scan-light.webp)   | ![](/assets/new-scan-dark.webp)   |\n| ![](/assets/settings-light.webp)   | ![](/assets/settings-dark.webp)   |\n| ![](/assets/users-light.webp)      | ![](/assets/users-dark.webp)      |\n\n## 🚀 Run the binary\n\nJust download the latest binary from the [release page](https://github.com/seriousm4x/UpSnap/releases) and run it.\n\n### Root:\n\n```bash\nsudo ./upsnap serve --http=0.0.0.0:8090\n```\n\n### Non-root:\n\n```bash\nsudo setcap cap_net_raw=+ep ./upsnap # only once after downloading\n./upsnap serve --http=0.0.0.0:8090\n```\n\nFor more options check `./upsnap --help` or visit [PocketBase documentation](https://pocketbase.io/docs).\n\nIf you want to use network discovery, make sure to have `nmap` installed and run UpSnap as root/admin.\n\n## 🐳 Run in docker\n\nYou can use the [docker-compose](docker-compose.yml) example. See the comments in the file for customization.\n\n### Non-root docker user:\n\nYou will loose the ability to add network devices via the scan page.\n\nCreate the mount point first:\n\n```bash\nmkdir data\n```\n\nThen add `user: 1000:1000` to the docker-compose file (or whatever your $UID:$GID is).\n\n### Change port\n\nIf you want to change the port from 8090 to something else, change the following (5000 in this case):\n\n```yml\nentrypoint: /bin/sh -c \"./upsnap serve --http 0.0.0.0:5000\"\nhealthcheck:\n  test: curl -fs \"http://localhost:5000/api/health\" || exit 1\n```\n\n### Install additional packages for shutdown cmd\n\n```yml\nentrypoint: /bin/sh -c \"apk update \u0026\u0026 apk add --no-cache \u003cYOUR_PACKAGE\u003e \u0026\u0026 rm -rf /var/cache/apk/* \u0026\u0026 ./upsnap serve --http 0.0.0.0:8090\"\n```\n\nYou can search for your needed package [here](https://pkgs.alpinelinux.org/packages).\n\n### Reverse Proxy\n\n**Caddy example**\n\n```\nupsnap.example.com {\n    reverse_proxy localhost:8090\n}\n```\n\n## 🐧 Install from the [AUR](https://aur.archlinux.org/packages/upsnap-bin)\n\n```bash\nyay -Sy upsnap-bin\n```\n\n## 🔒 User permissions\n\nUpSnap 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).\n\n## 🌍 Exposing to the open web\n\nAlthough UpSnap has user authorisation, it is **not recommended to expose it to the open web** and make it accessible by everyone!\n\n**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.\n\n**Recommended**: If you need access from outside your network, please use a vpn. Wireguard or OpenVPN is your way to go.\n\n## 🌐 Help translating\n\nUpSnap is available in the following languages so far:\n\n- 🇩🇪 **German** (de-DE)\n- 🇺🇸 **English** (en-US)\n- 🇪🇸 **Spanish** (es-ES)\n- 🇫🇷 **French** (fr-FR)\n- 🇮🇩 **Bahasa Indonesia** (id-ID)\n- 🇮🇹 **Italian** (it-IT)\n- 🇯🇵 **Japanese** (ja-JP)\n- 🇳🇱 **Dutch** (nl-NL)\n- 🇵🇱 **Polish** (pl-PL)\n- 🇵🇹 **Portuguese** (pt-PT)\n- 🇹🇼 **Chinese (Taiwan)** (zh-TW)\n- 🇨🇳 **Chinese** (zh-CN)\n\n**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)**\n\n## 🔧 Help developing\n\nFork this branch and clone it.\n\n1. Start backend\n\n```sh\ncd backend\ngo mod tidy\ngo run main.go serve\n```\n\n2. Start frontend\n\n```sh\ncd frontend\npnpm i\npnpm run dev\n```\n\nOpen up [http://localhost:5173/](http://localhost:5173/), create an admin user and add some devices.\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=seriousm4x/UpSnap\u0026type=Date\u0026theme=dark)](https://star-history.com/#seriousm4x/UpSnap\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseriousm4x%2FUpSnap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseriousm4x%2FUpSnap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseriousm4x%2FUpSnap/lists"}