--- title: IT Tools description: 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](https://github.com/CorentinTh/it-tools) est un conteneur qui expose une page web donnant accès à une large panoplie d'outils de développement. ![IT Tools](/img/serveex/it-tools.png) ## Installation ::steps{level="3"} ### Déployer la stack Ouvrez Dockge, cliquez sur `compose`, nommez la stack `it-tools`, et collez ce qui suit : ```yaml [compose.yaml] --- 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](/general/networking/dns) avec un `CNAME` réglé sur `mondomaine.fr`. Par ailleurs, à moins d'utiliser [Cloudflare Zero Trust](/serveex/security/cloudflare), 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](/general/networking/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 : ```yaml [compose.yaml] --- 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. :: ```bash [Terminal] sudo nano /srv/docker/swag/config/nginx/proxy-confs/tools.subdomain.conf ``` Collez la configuration ci-dessous : ```nginx [tools.subdomain.conf] ## 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](/serveex/security/tinyauth) directement dans `tools.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy) : ```nginx [tools.subdomain.conf]{26-38,41-42} ## 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](/serveex/advanced/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](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy). ::