Aller au contenu

Tinyauth đŸ›Ąïž : l'authentification pour vos conteneurs avec Nginx Proxy Manager en 5 minutes

Tiny-auth

Aujourd’hui, petite prĂ©sentation de Tinyauth comme une couche d’authentification lĂ©gĂšre devant Nginx Proxy Manager (NPM) pour protĂ©ger des services web que vous souhaitez exposer en public.

Dit-moi Jamy comment fonctionne Tinyauth đŸ€“ ? TinyAuth va venir s’intercaler entre votre proxy (dans mon cas NPM) et votre application pour rajouter une couche d’authentification :

C’est utile pour ajouter un login simple pour vos applications qui n’ont pas d’authentification en amont.

Pourquoi Tinyauth ? Je voulais un client lĂ©ger compatible TOTP et Nginx Proxy Manager. J’avais penser Ă  Authelia mais la configuration s’est complexifiĂ© au fil des Ă©volutions. Authentik est trop overkill pour mon besoin, je n’avais pas envie de configurer une DB pour ça et PocketID est top mais incompatible avec Nginx Proxy Manager ( Note : on peut ajouter PocketID comme OIDC avec Tinyauth). J’aime les choses simples et qui fonctionnent tout de suite, Tinyauth est parfait pour moi.

Installation via Docker Compose 🐳 avec Nginx Proxy Manager

Section intitulĂ©e « Installation via Docker Compose 🐳 avec Nginx Proxy Manager »

TinyAuth est conçu pour agir comme un soft d’authentification devant d’autres services. Pour qu’il remplisse sa fonction de protection, il doit gĂ©nĂ©ralement ĂȘtre intĂ©grĂ© Ă  un reverse proxy comme Apache, traefik ou comme dans notre exemple prĂ©cĂ©dent, Nginx Proxy Manager (NPM).

Si vous voulez configurer Tinyauth avec un Nginx Proxy Manager voici la configuration sur un docker-compose.yml disponible sur la documentation de Tinyauth :

services:
npm:
container_name: npm
image: jc21/nginx-proxy-manager:2
restart: unless-stopped
ports:
- 80:80
- 443:443
- 81:81
volumes:
- npm-data:/data
- npm-letsencrypt:/etc/letsencrypt
nginx:
container_name: nginx
image: nginx:latest
restart: unless-stopped
tinyauth:
container_name: tinyauth
image: ghcr.io/steveiliop56/tinyauth:v4
restart: unless-stopped
environment:
- APP_URL=http://tinyauth.example.com
- USERS=user:$$2a$$10$$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u # Voir ci-dessous pour comprendre comment créer un utilisateur sur TinyAuth
volumes:
npm-data:
npm-letsencrypt:

Je pars du principe que vous avez déjà créé votre instance NPM sur votre serveur Unraid (je ferai sûrement un article dédié plus tard).

  • Étape 1 : AccĂ©dez Ă  la section APPS, recherchez et installez le modĂšle TinyAuth par steveiliop56.

  • Étape 2 : Selon votre prĂ©fĂ©rence, choisissez un autre port ou une autre carte rĂ©seau virtuel (pour ma part, j’ai choisi un autre port que le port 80.)

Dans :

  • Web UI Port : ajoutez votre port pour vous connecter Ă  la WebUI.
  • Root URL : l’URL de base de votre domaine (Ex: mondomaine.com).
  • App URL : le sous-domaine de tinyauth (Ex: tinyauth.mondomaine.com).
  • Traefik - Enable & Traefik - RULE : Comme je n’utilise pas Traefik, mais NPM ces variables ne me servent pas, je dois tout de mĂȘme entrer la variable Traefik enable Ă  false dans le cas prĂ©sent.
  • (Facultatif) APP_TILTE : ajoutez la variable d’environnement APP_TITLE pour modifier le nom de votre portail.

Cliquer ensuite sur APPLY. Puis rendez-vous sur [http://IP_SERVER_UNRAID:8124], à modifier par rapport au port que vous avez mis et l’IP de votre serveur Unraid.

{/* @todo correction arrĂȘter ici */} Je pars du principe que vous avez dĂ©jĂ  créé un compte sur votre NPM que vous avez un nom de domaine et que vous faites la redirection sur votre IP puis sur votre box vers votre serveur qui Ă  NPM (ce sera l’occasion d’un autre tutoriel.).

Sur NPM vous pouvez créer un nouvel hÎte :

Sur cette hÎte renseigner le sous-domaine que vous réserver à tinyauth (Ex : tinyauth.mondomaine.fr) :

Une fois, ceci fait n’oublier pas de sĂ©lectionner votre certificat SSL :

Voila votre tinyauth est prĂȘt, vous pouvez maintenant l’appliquer en amont des applications que vous cherchez Ă  protĂ©ger, exemple dans mon cas un conteneur contenant un dashboard, pour cela rendez-vous dans la partie “advanced” de votre hĂŽte :

Ensuite dans advanced, vous allez rentrer la configuration qui va rediriger la connexion vers tinyauth avant d’autoriser celle-ci vers l’application :

Configuration :

# Vérif d'auth
location / {
proxy_pass $forward_scheme://$server:$port;
auth_request /tinyauth;
error_page 401 = @tinyauth_login;
}
# Sous-requĂȘte vers Tinyauth
location = /tinyauth {
internal;
proxy_pass http://IP_DE_VOTRE_CONTAINER:PORT/api/auth/nginx;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
}
# Redirection vers l'UI Tinyauth
location @tinyauth_login {
return 302 https://tinyauth.mondomaine.fr/login?redirect_uri=$scheme://$http_host$request_uri; // a modifier
}

Entrer l’url de votre conteneur et vous aurez un joli portail d’authentification sur votre conteneur.

Ok, c’est cool maintenant comment on crĂ©e un utilisateur avec Tinyauth ?

Pour ceci, on utilisera la variable docker USER :

USER=mon_utilisateur:password_hashbcrypt

Pour faciliter ceci Tinyauth à crée une cli avec docker :

FenĂȘtre de terminal
docker run -i -t --rm ghcr.io/steveiliop56/tinyauth:v4 user create --interactive

Remplissez username et mot de passe hash vous obtenez alors la variable docker Ă  ajouter sur votre Tinyauth :

2025-10-22T11:28:25Z INF cmd/create.go:85 > Creating user username=Tintin
2025-10-22T11:28:25Z INF cmd/create.go:98 > User created user=Tintin:$2a$10$N6OEgcLMW5v4fnYAlCpEp.YfiJ5oG9YkmPaADJc6QZt9IFwOBR2Iu

Il vous suffit de rajouter la variable a votre docker-compose ou a votre configuration d’application Unraid -> user=Tintin:$2a$10$N6OEgcLMW5v4fnYAlCpEp.YfiJ5oG9YkmPaADJc6QZt9IFwOBR2Iu.

Vous pouvez également renforcer la sécurité en rajoutant un TOTP ? Rien de plus simple !

Pour cela utiliser la commande :

FenĂȘtre de terminal
docker run -i -t --rm ghcr.io/steveiliop56/tinyauth:v4 totp generate --interactive

Comme ceci :

Vous pouvez alors rajouter le QR code dans votre authentificator préférée. Ensuite vous obtenez une variable avec votre utilisateur, son mot de passe et un code TOTP -> user=Tintin:$2a$10$N6OEgcLMW5v4fnYAlCpEp.YfiJ5oG9YkmPaADJc6QZt9IFwOBR2Iu:TGUSOUC2VPOBY6GTZ442OXQB4KYFIK3B.

Pour ajouter plusieurs utilisateurs, il suffit de les ajouter les un a la suite des autre en séparant pas une virgule :

utilisateur1:$2a$10$UnHachage...,utilisateur2:$2a$10$UnAutreHachage...

Tinyauth apporte une couche d’auth simple et efficace devant NPM, idĂ©ale pour sĂ©curiser rapidement des services auto-hĂ©bergĂ©s sans trop vous prendre la tĂȘte. Vous pouvez aller plus loin en mettant en place une authentification unique via google, github ou autre.