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:
@@ -19,7 +19,7 @@ Authentik gère aussi l'authentification multifacteur, dont le TOTP (un code gé
|
||||
|
||||
C'est une excellente alternative au VPN pour exposer des services en toute sécurité, en particulier ceux qui n'ont ni MFA ni protection de connexion (le tableau de bord de SWAG par exemple).
|
||||
|
||||
Authentik dispose d'une [documentation fournie](https://docs.goauthentik.io/docs/installation/docker-compose) et de [très bons tutoriels de Cooptonian](https://www.youtube.com/@cooptonian). Ici, nous verrons les bases en prenant Dockge comme exemple.
|
||||
Authentik dispose d'une [documentation fournie](https://docs.goauthentik.io/install-config/install/docker-compose) et de [très bons tutoriels de Cooptonian](https://www.youtube.com/@cooptonian). Ici, nous verrons les bases en prenant Dockge comme exemple.
|
||||
|
||||
Il y a deux modes principaux à connaître :
|
||||
|
||||
@@ -156,24 +156,55 @@ services:
|
||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||
# `user: root` and the docker socket volume are optional.
|
||||
# See more for the docker socket integration here:
|
||||
# `user: root` et l'intégration Docker ci-dessous sont optionnels, uniquement
|
||||
# nécessaires si vous voulez qu'Authentik gère automatiquement des outposts
|
||||
# intégrés sur cet hôte. Voir :
|
||||
# https://goauthentik.io/docs/outposts/integrations/docker
|
||||
# Removing `user: root` also prevents the worker from fixing the permissions
|
||||
# on the mounted folders, so when removing this make sure the folders have the correct UID/GID
|
||||
# (1000:1000 by default)
|
||||
# Retirer `user: root` empêche aussi le worker de corriger les permissions
|
||||
# sur les dossiers montés, donc si vous le retirez, assurez-vous que ces
|
||||
# dossiers ont le bon UID/GID (1000:1000 par défaut)
|
||||
user: root
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./media:/media
|
||||
- ./certs:/certs
|
||||
- ./custom-templates:/templates
|
||||
- ./ssh:/authentik/.ssh
|
||||
networks:
|
||||
- default
|
||||
- authentik-internal
|
||||
env_file:
|
||||
- .env
|
||||
depends_on:
|
||||
- postgresql
|
||||
- redis
|
||||
- docker-socket-proxy
|
||||
|
||||
docker-socket-proxy:
|
||||
image: lscr.io/linuxserver/socket-proxy:latest
|
||||
container_name: docker-socket-proxy-authentik
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
networks:
|
||||
- authentik-internal
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
environment:
|
||||
- CONTAINERS=1
|
||||
- IMAGES=1
|
||||
- NETWORKS=1
|
||||
- INFO=1
|
||||
- POST=1
|
||||
- ALLOW_START=1
|
||||
- ALLOW_STOP=1
|
||||
- ALLOW_RESTARTS=1
|
||||
restart: unless-stopped
|
||||
read_only: true
|
||||
tmpfs:
|
||||
- /run
|
||||
|
||||
networks:
|
||||
authentik-internal:
|
||||
name: authentik-internal
|
||||
|
||||
volumes:
|
||||
database:
|
||||
@@ -182,6 +213,10 @@ volumes:
|
||||
driver: local
|
||||
```
|
||||
|
||||
::note
|
||||
Ceci ajoute **Docker Socket Proxy** pour que l'intégration Docker optionnelle n'ait jamais besoin de `/var/run/docker.sock` monté directement dans le worker. Si vous l'activez, définissez l'URL Docker de la connexion dans l'interface d'administration sur `http://docker-socket-proxy:2375` plutôt que le chemin du socket local, comme le recommande [la documentation d'Authentik](https://goauthentik.io/docs/outposts/integrations/docker) pour les configurations avec socket-proxy.
|
||||
::
|
||||
|
||||
### Démarrer la configuration initiale
|
||||
|
||||
Dans le fichier `.env`, les variables `PG_PASS` et `AUTHENTIK_SECRET_KEY` sont déjà renseignées.
|
||||
@@ -322,7 +357,7 @@ Allez dans _Settings_, cliquez sur la section _MFA_, puis sur _Register_. Choisi
|
||||
Un code à usage unique vous sera désormais demandé à chaque connexion.
|
||||
|
||||
## Protéger une app native
|
||||
Authentik est nativement compatible avec plusieurs applications. Vous trouverez la liste et [le support ici](https://docs.goauthentik.io/integrations/services/).
|
||||
Authentik est nativement compatible avec plusieurs applications. Vous trouverez la liste et [le support ici](https://integrations.goauthentik.io/).
|
||||
|
||||
## Protéger une app par reverse proxy
|
||||
SWAG permet d'insérer la page de connexion d'Authentik entre une requête et l'accès à votre service. Pour cela :
|
||||
@@ -458,7 +493,7 @@ En ligne de commande :
|
||||
```bash [Terminal]
|
||||
sudo nano /srv/docker/authentik-outpost/compose.yaml
|
||||
```
|
||||
Collez la configuration suivante, en mettant à jour la version dans `{AUTHENTIK_TAG:proxy:2024.2.3}`{lang=properties} pour correspondre à celle de votre serveur Authentik.
|
||||
Collez la configuration suivante, en mettant à jour la version dans `ghcr.io/goauthentik/proxy:2026.2`{lang=properties} pour correspondre à celle de votre serveur Authentik.
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
@@ -466,7 +501,7 @@ version: "3.5"
|
||||
services:
|
||||
authentik_proxy:
|
||||
container_name: authentik-outpost
|
||||
image: ghcr.io/goauthentik/proxy:2024.2.3
|
||||
image: ghcr.io/goauthentik/proxy:2026.2
|
||||
# Optionally specify which networks the container should be
|
||||
# might be needed to reach the core authentik server
|
||||
restart: unless-stopped
|
||||
@@ -585,7 +620,7 @@ Enregistrez avec :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"}, et quittez avec
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
Configurez ensuite les applications à protéger comme vous l'avez fait sur votre serveur principal, qu'elles soient [natives](/serveex/advanced/authentik/#protecting-a-native-app) ou protégées via [reverse proxy](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy).
|
||||
Configurez ensuite les applications à protéger comme vous l'avez fait sur votre serveur principal, qu'elles soient [natives](/serveex/advanced/authentik/#protecting-a-native-app) ou protégées via [reverse proxy](/serveex/advanced/authentik#protéger-une-app-par-reverse-proxy).
|
||||
|
||||
## Migrer une base de données Authentik
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ services:
|
||||
|
||||
docker-socket-proxy:
|
||||
image: lscr.io/linuxserver/socket-proxy:latest
|
||||
container_name: arcane-docker-proxy
|
||||
container_name: docker-socket-proxy-arcane
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
networks:
|
||||
@@ -248,7 +248,7 @@ Et voilà ! Arcane est maintenant accessible depuis internet.
|
||||
## Connecter un hôte distant
|
||||
Arcane peut gérer plusieurs hôtes Docker depuis une seule instance. Chaque hôte distant fait tourner un conteneur **agent** léger qui se reconnecte à Arcane. Plutôt que d'exposer cette connexion sur internet, nous la ferons passer par le [VPN WireGuard](/serveex/core/wireguard) déjà mis en place plus tôt, ainsi le trafic de l'agent ne quitte jamais votre réseau privé.
|
||||
|
||||
::note{to="/serveex/core/wireguard#client-server-setup"}
|
||||
::note{to="/serveex/core/wireguard#sur-le-serveur-client"}
|
||||
|
||||
Ceci suppose que l'hôte Arcane et l'hôte distant font déjà tourner leur propre client WireGuard, connectés à votre VPN comme décrit dans **Client Server Setup**. Notez l'adresse VPN que wg-easy a attribuée à l'__hôte Arcane__ (par exemple `10.8.0.3`) ; c'est l'adresse que visera l'agent distant ci-dessous.
|
||||
::
|
||||
@@ -299,7 +299,7 @@ Arcane gère OIDC nativement, vous pouvez donc exiger une connexion Pocket ID av
|
||||
::steps{level="3"}
|
||||
### Enregistrer Arcane comme client OIDC
|
||||
|
||||
[Enregistrez un client OIDC dans Pocket ID](/serveex/security/pocket-id#registering-an-oidc-client) nommé `arcane`, avec cette URL de callback :
|
||||
[Enregistrez un client OIDC dans Pocket ID](/serveex/security/pocket-id#enregistrer-un-client-oidc) nommé `arcane`, avec cette URL de callback :
|
||||
|
||||
```text
|
||||
https://arcane.mondomaine.fr/auth/oidc/callback
|
||||
|
||||
Reference in New Issue
Block a user