Put Docker Socket Proxy in front of every container that needs the Docker API instead of mounting docker.sock directly

This commit is contained in:
Djeex
2026-09-07 13:42:40 +02:00
parent 5548287c65
commit 81c54c9afc
10 changed files with 401 additions and 46 deletions
+35 -4
View File
@@ -43,10 +43,41 @@ services:
- .env
environment:
- DOZZLE_HOSTNAME=${DOMAIN}
- DOCKER_HOST=tcp://docker-socket-proxy:2375
networks:
- dozzle-internal
depends_on:
- docker-socket-proxy
docker-socket-proxy:
image: lscr.io/linuxserver/socket-proxy:latest
container_name: docker-socket-proxy-dozzle
security_opt:
- no-new-privileges:true
networks:
- dozzle-internal
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CONTAINERS=1
- IMAGES=1
- INFO=1
- EVENTS=1
- ALLOW_LOGS=1
restart: unless-stopped
read_only: true
tmpfs:
- /run
networks:
dozzle-internal:
name: dozzle-internal
```
::note
Dozzle ne fait que lire les logs des conteneurs, donc cette config place **Docker Socket Proxy** devant l'API Docker plutôt que de monter directement `/var/run/docker.sock`, en gardant `POST` totalement désactivé : Dozzle peut lister les conteneurs et streamer leurs logs, rien de plus.
::
::tip{icon=""}
✨ __Astuce :__ ajoutez le label watchtower à chaque conteneur pour automatiser les mises à jour
@@ -189,7 +220,7 @@ Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et
Et voilà, Dozzle est maintenant exposé !
## Protéger Dozzle avec TinyAuth
Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `dozzle.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy) :
Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `dozzle.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protéger-une-application-via-le-reverse-proxy) :
```nginx [dozzle.subdomain.conf]{26-38,41-42}
## Version 2023/12/19
@@ -259,11 +290,11 @@ server {
}
```
::note{to="/serveex/security/tinyauth#exposing-tinyauth-with-swag"}
::note{to="/serveex/security/tinyauth#exposer-tinyauth-avec-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](/serveex/advanced/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](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy).
✨ __Astuce :__ vous pouvez protéger cette application avec [Authentik](/serveex/advanced/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](/serveex/advanced/authentik#protéger-une-app-par-reverse-proxy).
::
+45 -6
View File
@@ -53,13 +53,35 @@ services:
network_mode: host
volumes:
- ./socket:/beszel_socket
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
LISTEN: /beszel_socket/beszel.sock
DOCKER_HOST: tcp://127.0.0.1:2375
# Ne retirez pas les guillemets autour de la clé
KEY: ${KEY}
depends_on:
- docker-socket-proxy
docker-socket-proxy:
image: lscr.io/linuxserver/socket-proxy:latest
container_name: docker-socket-proxy-beszel
security_opt:
- no-new-privileges:true
ports:
- 127.0.0.1:2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CONTAINERS=1
restart: unless-stopped
read_only: true
tmpfs:
- /run
```
::note
`beszel-agent` tourne avec `network_mode: host`, il ne peut donc pas rejoindre un réseau interne dédié comme les autres stacks proxifiées de ce site ; à la place, **Docker Socket Proxy** publie son API sur `127.0.0.1` uniquement, joignable depuis l'agent via l'interface de loopback de l'hôte, avec seulement `CONTAINERS=1` activé puisque l'agent n'a besoin que de lire les statistiques des conteneurs.
::
::tip{icon=""}
✨ __Astuce :__ ajoutez le label Watchtower à chaque conteneur pour automatiser les mises à jour.
@@ -122,11 +144,28 @@ services:
container_name: beszel-agent
restart: unless-stopped
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
LISTEN: ${PORT}
KEY: ${KEY}
DOCKER_HOST: tcp://127.0.0.1:2375
depends_on:
- docker-socket-proxy
docker-socket-proxy:
image: lscr.io/linuxserver/socket-proxy:latest
container_name: docker-socket-proxy-beszel
security_opt:
- no-new-privileges:true
ports:
- 127.0.0.1:2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CONTAINERS=1
restart: unless-stopped
read_only: true
tmpfs:
- /run
```
Et dans le `.env` :
@@ -253,7 +292,7 @@ Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et
Et voilà ! Beszel est maintenant exposé !
## Protéger Beszel avec TinyAuth
Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `beszel.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy) :
Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `beszel.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protéger-une-application-via-le-reverse-proxy) :
```nginx [beszel.subdomain.conf]{26-38,41-42}
## Version 2023/12/19
@@ -316,11 +355,11 @@ server {
}
```
::note{to="/serveex/security/tinyauth#exposing-tinyauth-with-swag"}
::note{to="/serveex/security/tinyauth#exposer-tinyauth-avec-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=""}
✨ Vous pouvez protéger cette application avec [Authentik](/serveex/advanced/authentik) plutôt que TinyAuth, en ouvrant `beszel.subdomain.conf` et en retirant le `#` devant `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).
✨ Vous pouvez protéger cette application avec [Authentik](/serveex/advanced/authentik) plutôt que TinyAuth, en ouvrant `beszel.subdomain.conf` et en retirant le `#` devant `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#protéger-une-app-par-reverse-proxy).
::