Files
docudjeex/content/fr/3.serveex/8.development/3.it-tools.md
T

8.3 KiB

title, description
title description
IT Tools Installer IT Tools, une collection auto-hébergée d'utilitaires pratiques pour développeurs, convertisseurs, encodeurs, formateurs et plus encore.

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

IT Tools est un conteneur qui expose une page web donnant accès à une large panoplie d'outils de développement.

IT Tools

Installation

::steps{level="3"}

Déployer la stack

Ouvrez Dockge, cliquez sur compose, nommez la stack it-tools, et collez ce qui suit :

---
services:
  it-tools:
    container_name: it-tools
    restart: unless-stopped
    image: corentinth/it-tools:latest
    ports:
      - 3222:80

::tip{icon=""} Astuce : ajoutez le label Watchtower à chaque conteneur pour activer les mises à jour automatiques.

```yaml [compose.yaml]
services:
  it-tools:
    #...
    labels:

      - com.centurylinklabs.watchtower.enable=true
```

::

Déployez le conteneur et visitez http://ipdevotreserveur:3222. Voilà, votre instance web IT Tools est en route !

Terminé !

::

::caution

Si ça ne marche pas : vérifiez les règles de votre pare-feu. ::

Exposer IT Tools avec Swag

Vous voudrez peut-être y accéder à distance sur tous vos appareils. Pour cela, nous allons exposer IT Tools avec Swag.

::note

Au préalable : nous partons du principe que vous avez créé un sous-domaine du type tools.mondomaine.fr dans votre zone DNS avec un CNAME réglé sur mondomaine.fr. Par ailleurs, à moins d'utiliser Cloudflare Zero Trust, assurez-vous d'avoir déjà redirigé le port 443 de votre box vers le port 443 de votre serveur dans les règles NAT. ::

::steps{level="3"}

Ajouter le réseau d'IT Tools à SWAG

Dans Dockge, allez sur la stack SWAG et modifiez le fichier compose pour y ajouter le réseau d'IT Tools :

---
services:
  swag:
     container_name: # ...
      # ...
     networks:              # Rattache le conteneur au réseau personnalisé 
      # ...           
      - it-tools            # Nom du réseau tel que défini dans la stack IT Tools

networks:                   # Définit le réseau personnalisé
  # ...
  it-tools:                 # Nom du réseau tel que défini dans la stack IT Tools
    name: it-tools_default  # Nom réel du réseau externe
    external: true          # Indique qu'il s'agit d'un réseau externe

::note

Nous partons du principe que le réseau d'IT Tools s'appelle it-tools_default. Vous pouvez vérifier la connectivité en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81. ::

::note

Nous partons aussi du principe que le réseau de SWAG s'appelle swag_default. ::

Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit pleinement opérationnel.

Créer le fichier subdomain.conf

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

::tip{icon="" to="/serveex/files/file-browser-quantum"} Astuce : vous pouvez utiliser File Browser Quantum pour naviguer et modifier vos fichiers plutôt que des commandes dans le terminal. ::

sudo nano /srv/docker/swag/config/nginx/proxy-confs/tools.subdomain.conf

Collez la configuration ci-dessous :

## Version 2023/12/19

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

    server_name tools.*;

    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 it-tools;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter.

Terminé !

::

Et voilà ! IT Tools est maintenant exposé !

Protéger IT Tools avec TinyAuth

Ajoutez la vérification forward-auth de TinyAuth directement dans tools.subdomain.conf, de la même façon que dans le tutoriel TinyAuth :

## Version 2023/12/19

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

    server_name tools.*;

    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 /tinyauth {
        internal;
        proxy_pass http://tinyauth:3000/api/auth/nginx;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Uri $request_uri;
    }

    location @tinyauth_login {
        return 302 https://tinyauth.mondomaine.fr/login?redirect_uri=$scheme://$http_host$request_uri;
    }

    location / {
        auth_request /tinyauth;
        error_page 401 = @tinyauth_login;

        # 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 it-tools;
        set $upstream_port 80;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

::note{to="/serveex/security/tinyauth#exposing-tinyauth-with-swag"}

Le bloc location /tinyauth s'exécute dans le conteneur de SWAG lui-même, SWAG doit donc être sur le réseau Docker de TinyAuth pour le joindre par son nom (tinyauth ici). Cela devrait déjà être en place depuis l'exposition de TinyAuth. Si vous rencontrez une erreur, revérifiez que le fichier compose de SWAG a toujours ce réseau rattaché. ::

::tip{icon=""} Astuce : vous pouvez sécuriser cette application avec Authentik plutôt que TinyAuth, en ouvrant tools.subdomain.conf et en décommentant les lignes include /config/nginx/authentik-server.conf; et include /config/nginx/authentik-location.conf;. N'oubliez pas de créer une application et un provider dans Authentik. ::