Files
docudjeex/content/fr/3.serveex/4.monitoring/2.dozzle.md
T

9.1 KiB

title, description
title description
Dozzle Installer Dozzle pour surveiller les logs de vos conteneurs Docker en temps réel depuis une interface web claire, exposée via SWAG.

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

Dozzle est un conteneur qui permet d'accéder aux logs de vos autres conteneurs et de les afficher en temps réel dans une interface agréable. C'est un moyen simple de parcourir les logs et de retrouver des informations dans l'historique.

Dozzle

Installation

::file-tree

tree: /: - srv: - docker: - dozzle: - compose.yaml - .env - data/

::

::steps{level="3"}

Déployer la stack

Ouvrez Dockge, cliquez sur compose, nommez la stack dozzle, puis copiez-collez ce qui suit :

---
services:
  dozzle:
    container_name: dozzle
    image: amir20/dozzle:latest
    ports:
      - 9135:8080
    env_file:
      - .env
    environment:
      - DOZZLE_HOSTNAME=${DOMAIN}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

::tip{icon=""} Astuce : ajoutez le label watchtower à chaque conteneur pour automatiser les mises à jour

```yaml [compose.yaml]
services:
  dozzle:
    #...
    labels:

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

::

Renseigner vos variables d'environnement

Renseignez votre nom de domaine dans le fichier .env, par exemple :

DOMAIN=dozzle.mondomaine.fr

Déployez le conteneur. Allez sur http://ipdevotreserveur:9135. Et voilà, votre interface web Dozzle est en route !

Terminé !

::

Exposer Dozzle avec Swag

::warning

Dozzle n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faites que si vous utilisez un système d'authentification multifacteur comme TinyAuth ou Authentik. Sinon, ne l'exposez pas avec SWAG et utilisez plutôt un VPN comme Wireguard. ::

Vous voudrez peut-être accéder à Dozzle à distance et sur tous vos appareils. Pour cela, nous allons exposer Dozzle via Swag.

::note{icon=""} 📋 Au préalable :

Nous partons du principe que vous avez créé un sous-domaine du type dozzle.mondomaine.fr dans votre zone DNS avec un CNAME pointant vers mondomaine.fr et que, à moins d'utiliser Cloudflare Zero Trust, vous avez redirigé le port 443 de votre box vers le port 443 de votre serveur dans vos règles NAT. ::

::steps{level="3"}

Ajouter le réseau de Dozzle à SWAG

Allez dans Dockge et modifiez le fichier compose de SWAG pour y ajouter le réseau de Dozzle :

---
services:
  swag:
     container_name: # ...
      # ... 
     networks:                 # Rattache le conteneur à un réseau personnalisé
      # ...           
      - dozzle                 # Nom du réseau déclaré dans la stack

networks:                      # Définit le réseau personnalisé
  # ...
  dozzle:                      # Nom du réseau déclaré dans la stack
    name: dozzle_default       # Nom réel du réseau externe
    external: true             # Indique qu'il s'agit d'un réseau défini à l'extérieur

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

::note

Nous partons du principe que le nom du réseau de Dozzle est dozzle_default. Vous pouvez vérifier que la connexion fonctionne en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81. ::

Créer le fichier subdomain.conf

Dans le dossier de Swag, créez le fichier dozzle.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/dozzle.subdomain.conf

Collez la configuration ci-dessous :

## Version 2023/12/19

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

    server_name dozzle.*;

    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 dozzle;
        set $upstream_port 8080;
        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à, Dozzle est maintenant exposé !

Protéger Dozzle avec TinyAuth

Ajoutez la vérification forward-auth de TinyAuth directement dans dozzle.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 dozzle.*;

    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 dozzle;
        set $upstream_port 8080;
        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 protéger cette application avec Authentik plutôt que TinyAuth, en ouvrant dozzle.subdomain.conf et en retirant le # 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 provider dans Authentik. ::