6.1 KiB

navigation, title, main
navigation title main
true UpSnap
fluid
false

:ellipsis{left=0px width=40rem top=10rem blur=140px}

UpSnap

::alert{type="info"} 🎯 Objectifs :

  • Installer UpSnap
  • Exposer UpSnap avec Swag ::

UpSnap est un conteneur permettant d'allumer, éteindre, ou mettre en veille vos machines à distance. Il utilise essentiellement le systeme de Wake-On-Lan (WoL) par le réseau et dispose d'autres fonctions avancées.

Beszel

Installation


Structure des dossiers

root
└── docker
    └── upsnap
        └── data

Ouvrez Dockge, cliquez sur compose, appelez la stack upsnap puis copiez collez ceci :

services:
  upsnap:
    container_name: upsnap
    image: ghcr.io/seriousm4x/upsnap:5
    network_mode: host
    restart: unless-stopped
    volumes:
      - /docker/upsnap/data:/app/pb_data
    environment:
      - TZ=Europe/Paris
      - UPSNAP_SCAN_RANGE=${SCAN_RANGE}
      - UPSNAP_SCAN_TIMEOUT=500ms
      - UPSNAP_PING_PRIVILEGED=true
    dns:
      - ${DNS}
    entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:8095"
    healthcheck:
      test: curl -fs "http://localhost:8095/api/health" || exit 1
      interval: 10s

::alert{type="success"} Astuce : ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour

```yaml
services:
  upsnap:
    #...
    labels:
      - com.centurylinklabs.watchtower.enable=true

::

Renseignez le .env, par exemple :

RANGE=192.168.1.0/24 # scan toutes les machines sur le réseau local ayant une adresse IP comprise entre 192.168.0.1 et 192.168.1.255
DNS=192.168.1.1 # IP du dns à utiliser pour résoudre les noms de domaines, ici dans l'exemple c'est généralement l'IP du routeur

Déployez le conteneur et rendez-vous sur http://ipduserveur:8095. Vous n'avez plus qu'à suivre les instructions pour créer votre compte !

::alert{type="danger"} :::list{type="danger"}

  • En cas d'échec : vérifiez les règles de votre pare-feu. ::: ::

Exposer UpSnap avec Swag


::alert{type="warning"} :::list{type="warning"}

  • UpSnap n'utilise pas d'authentification multifacteur. Exposer UpSnap sur internet pourrait compromettre les machines auxquel il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme Authentik. Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme Wireguard. ::: ::

Vous aurez peut-etre envie d'y accéder à distance et sur tout vos appareils. Pour cela, nous allons exposer UpSnap via Swag.

::alert{type="info"} 📋 Au préalable :

Nous partons du principe que vous avez créé dans votre zone DNS un sous domaine du type upsnap.mondomaine.fr avec pour CNAME mondomaine.fr et, à moins que vous utilisiez Cloudflare Zero Trust, que que vous avez déjà redirigé le port 443 de votre box vers le 443 de votre serveur dans les règles NAT. ::

Dans Dockge ouvrez la stack upsnap et ajoutez le réseau de Swag dans le conteneur. Pour rappel :

services:
  nomduservice:
     container_name: #...
      # ... 
     networks: # Relie le conteneur au réseau custom. A faire pour chaque conteneur à exposer de la stack 
      - swag # Nom du réseau déclaré dans la stack
    
networks: # Défini le réseau custom
  swag: # Nom du réseau déclaré dans la stack
    name: swag_default # Nom véritable du réseau externe
    external: true # Précise que c'est un réseau à rechercher en externe

Dans les dossiers de Swag, créez le fichier upsnap.subdomain.conf.

::alert{type="success"} Astuce : vous pouvez utiliser File Browser pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal. ::

sudo vi /docker/swag/config/nginx/proxy-confs/upsnap.subdomain.conf

Entrez en modification avec la touche i et collez la configuration ci-dessous :

## Version 2023/12/19

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name upsnap.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    #if ($lan-ip = yes) { set $geo-whitelist yes; }
    #if ($geo-whitelist = no) { return 404; }
    if ($geo-blacklist = no) { return 404; }

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app upsnap;
        set $upstream_port 8095;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

Appuyez sur Echap puis sauvegardez et quittez en tapant :x puis en appuyant sur Entrée.

Et voilà, vous avez exposé UpSnap !

::alert{type="success"} Vous pouvez protéger cette app avec Authentik en ouvrant upsnap.subodmain.conf et en retirant les # devant include /config/nginx/authentik-server.conf;{lang=nginx} et include /config/nginx/authentik-location.conf;{lang=nginx}. N'oubliez pas de créer une application et un fournisseur dans Authentik. ::