158 lines
6.5 KiB
Markdown
158 lines
6.5 KiB
Markdown
---
|
|
title: UpSnap
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, networking, wake-on-lan, wol, homelab, go, dashboard]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=networking, https://github.com/seriousm4x/UpSnap]
|
|
---
|
|
|
|
# ⚡ UpSnap
|
|
|
|
> **Wake-on-LAN web UI** simple et élégante : réveillez ou éteignez à distance n'importe quelle machine de votre LAN depuis un navigateur, planifiez des extinctions automatiques, surveillez la connectivité. Le compagnon idéal d'un homelab à accès intermittent.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [upsnap.aaanh.com](https://upsnap.aaanh.com) |
|
|
| **GitHub** | [seriousm4x/UpSnap](https://github.com/seriousm4x/UpSnap) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go (Svelte embarqué) |
|
|
| **Étoiles** | 2 260 ⭐ |
|
|
| **Dernière MAJ** | 2026-05-08 |
|
|
| **Catégorie** | [[cat-networking\|Networking]] |
|
|
|
|
## Description
|
|
|
|
UpSnap est un **serveur Wake-on-LAN** avec une interface web soignée. Au lieu d'utiliser `wakeonlan` en CLI ou une app mobile douteuse, vous disposez d'un dashboard self-hosted qui liste toutes vos machines (PC, NAS, serveur, imprimante…), envoie des **paquets magiques WOL**, vérifie la connectivité (ping, port TCP), et permet l'**extinction distante** (SSH, agent) sur les OS qui le supportent.
|
|
|
|
Le cas d'usage typique : vous avez un serveur de [[app-jellyfin]] dans le salon, un NAS Synology dans le bureau, un PC gaming sous Windows. Plutôt que de les laisser tourner 24/7 (facture électrique, usure), vous les éteignez et UpSnap les réveille à la demande, depuis votre canapé, votre téléphone, ou un raccourci Home Assistant. La **planification d'extinction** (cron) complète le dispositif : le NAS s'éteint à 2h du matin s'il n'y a aucun client actif, se rallume 18h plus tard.
|
|
|
|
UpSnap supporte les **machines Linux, Windows et macOS**. Pour l'extinction distante, l'approche privilégiée est **SSH + sudo shutdown** (Linux/macOS) ou un **agent léger** sur Windows. Les paquets WOL fonctionnent en UDP broadcast sur le sous-réseau — UpSnap a besoin d'être sur le même LAN (ou routé correctement) que les machines à réveiller.
|
|
|
|
## Installation
|
|
|
|
### Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
upsnap:
|
|
image: ghcr.io/seriousm4x/upsnap:4
|
|
container_name: upsnap
|
|
restart: unless-stopped
|
|
network_mode: host # nécessaire pour broadcast WOL
|
|
environment:
|
|
- UPSNAP_USER=admin
|
|
- UPSNAP_PASSWORD=CHANGE...ME
|
|
- UPSNAP_PORT=8090
|
|
volumes:
|
|
- upsnap-data:/app/persistent
|
|
- /etc/localtime:/etc/localtime:ro
|
|
|
|
volumes:
|
|
upsnap-data:
|
|
```
|
|
|
|
> ⚠️ `network_mode: host` est indispensable : les **paquets magiques WOL** sont des UDP broadcast que Docker en mode bridge ne relaie pas par défaut.
|
|
|
|
### Installation manuelle (Linux)
|
|
|
|
```bash
|
|
wget https://github.com/seriousm4x/UpSnap/releases/latest/download/upsnap_linux_amd64
|
|
chmod +x upsnap_linux_amd64
|
|
./upsnap_linux_amd64 --port 8090
|
|
# Service systemd :
|
|
sudo tee /etc/systemd/system/upsnap.service <<EOF
|
|
[Unit]
|
|
Description=UpSnap WOL server
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
ExecStart=/opt/upsnap/upsnap_linux_amd64 --port 8090
|
|
Restart=always
|
|
User=upsnap
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
```
|
|
|
|
## Configuration
|
|
|
|
La configuration se fait **entièrement dans l'UI web** : ajout de machines avec IP, MAC, broadcast, OS. Pour l'extinction SSH (Linux) :
|
|
|
|
```bash
|
|
# Sur la machine cible (Linux), autoriser shutdown sans mot de passe :
|
|
sudo visudo
|
|
# Ajouter :
|
|
velli ALL=(ALL) NOPASSWD: /sbin/shutdown
|
|
```
|
|
|
|
API REST exposée (token Bearer) :
|
|
|
|
```bash
|
|
# Réveiller une machine
|
|
curl -X POST http://upsnap.local:8090/api/v1/wake/devices/42 \
|
|
-H "Authorization: Bearer ${TOKEN}"
|
|
|
|
# Lister les machines
|
|
curl http://upsnap.local:8090/api/v1/devices \
|
|
-H "Authorization: Bearer ${TOKEN}"
|
|
```
|
|
|
|
Intégrations notables :
|
|
|
|
- **Home Assistant** — services `wake_on_lan` natif, automation à partir d'un sensor UpSnap
|
|
- **Telegram bot** — `/wake nas` depuis n'importe où (avec WireGuard en amont)
|
|
- **Grafana** — visualiser uptime/historique via Prometheus exporter tiers
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
|
|
- **wakeonlan** (CLI) — référence Linux, sans UI
|
|
- **Home Assistant WOL integration** — basique, sans dashboard dédié
|
|
- **Netdata + WOL script** — DIY
|
|
- **OpenWRT WOL page** — sur le routeur lui-même
|
|
- **php-wake-on-lan** — minimaliste PHP
|
|
- **MagicPacket** — script Python, pas d'UI
|
|
|
|
### Propriétaire (ce que UpSnap remplace)
|
|
|
|
- **Depicus WOL** — web hosted (fermé), peu fiable
|
|
- **TeamViewer Wake-on-LAN** — payant, dépend de l'infra TeamViewer
|
|
- **Fing / Network Toolbox** — apps mobiles avec freemium agressif
|
|
- **Wake On Lan (ch.metanet)** — app mobile payante
|
|
- **Auvik WOL** — inclus dans NMS entreprise
|
|
|
|
## Sécurité
|
|
|
|
- **Auth obligatoire** : activez user/password (ou mieux, mettez UpSnap derrière [[app-authentik]] via reverse-proxy).
|
|
- **LAN-only par design** : ne jamais exposer UpSnap sur Internet. Les paquets WOL ne traversent pas les routeurs (sauf config explicite).
|
|
- **Pour accès distant** : passer par un VPN ([[app-wireguard]]) ou un tunnel SSH — pas d'exposition directe.
|
|
- **HTTPS** : si vous l'exposez via reverse-proxy ([[app-caddy]]/Traefik), forcer TLS.
|
|
- **Cible SSH** : utiliser un compte dédié, désactiver root, restreindre `/sbin/shutdown` via sudoers.
|
|
- **MAC spoofing** : WOL n'authentifie pas la machine. Un attaquant ayant accès au LAN peut réveiller n'importe quelle machine dont il connaît la MAC. Considérez cela.
|
|
- **Logs** : activer l'audit pour tracer qui réveille quoi (utile en cas d'intrusion suspecte).
|
|
- **BIOS/UEFI** : vérifier que le WOL est activé sur la cible (« Wake on LAN: Enabled » dans Power options) ET que le câble Ethernet reste alimenté en veille.
|
|
|
|
## Ressources
|
|
|
|
- [Site officiel](https://upsnap.aaanh.com)
|
|
- [Documentation](https://github.com/seriousm4x/UpSnap/wiki)
|
|
- [GitHub](https://github.com/seriousm4x/UpSnap)
|
|
- [Docker Hub](https://hub.docker.com/r/seriousm4x/upsnap)
|
|
- [Reddit /r/selfhosted discussion](https://reddit.com/r/selfhosted/comments/upsnap)
|
|
|
|
## Pages Liées
|
|
|
|
- [[cat-networking|Networking]] — Catégorie parente
|
|
- [[cat-dashboard|Dashboard]] — Catégorie transversale
|
|
- [[app-home-assistant|Home Assistant]] — Intégration WOL native
|
|
- [[app-wireguard|WireGuard]] — Pour accès distant sécurisé
|
|
- [[app-caddy]] ou [[app-traefik]] — Reverse-proxy HTTPS
|
|
- [[recettes-docker-compose|Recettes Docker Compose]]
|
|
- [[homelab-economies-energie|Homelab & énergie]] — Optimisation consommation
|