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.
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.
::
