--- title: Tinyauth created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, authentication, authentification, oauth, go, auto-hebergement] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/steveiliop52/tinyauth] --- # 🚩 Tinyauth > **Reverse proxy lĂ©ger d'authentification Ă©crit en Go**. IdĂ©al pour ajouter une couche d'authentification (OAuth, credentials) devant des apps self-hosted qui n'en ont pas nativement. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [tinyauth.app](https://tinyauth.app/) | | **GitHub** | [steveiliop52/tinyauth](https://github.com/steveiliop52/tinyauth) | | **License** | MIT | | **Langage** | Go (frontend TypeScript/React) | | **Étoiles GitHub** | 7 455 ⭐ | | **DerniĂšre MAJ** | 2026-05-31 | | **CatĂ©gorie** | [[cat-reverse-proxy\|Reverse Proxy]], Auth Proxy | ## 📝 Description **Tinyauth** est un **reverse proxy d'authentification minimaliste** pensĂ© pour protĂ©ger des applications self-hosted qui n'exposent pas de mĂ©canisme d'auth robuste. ConcrĂštement, on le place **devant** une app (Grafana, Uptime Kuma, Homer, etc.) et il intercepte les requĂȘtes pour exiger une connexion. FonctionnalitĂ©s clĂ©s : - ✅ **Support OAuth2 / OIDC** : Google, GitHub, GitLab, Generic OIDC - ✅ **Username/password** classique avec hash bcrypt - ✅ **Multi-utilisateurs** avec gestion des groupes - ✅ **Cookie de session** sĂ©curisĂ© (HttpOnly, SameSite, expiration) - ✅ **Docker labels discovery** : dĂ©tecte automatiquement les apps Ă  protĂ©ger - ✅ **LĂ©ger** : binaire Go unique, consommation RAM <50 Mo - ✅ **Interface web** pour la configuration - ✅ **2FA TOTP** (optionnel) **Public cible** : utilisateurs qui exposent leur homelab via Traefik/NPM et veulent **protĂ©ger rapidement** plusieurs services sans configurer Authentik/Authelia Ă  chaque fois. Tinyauth fait le strict minimum mais le fait bien. **DiffĂ©renciation** : face Ă  [[app-authelia]] (plus complet mais plus lourd) ou [[app-authentik]] (Identity Provider complet), Tinyauth joue la carte du **simple reverse proxy auth** qui se branche en 5 minutes. IdĂ©al pour les petites installations. ## 🚀 Installation ### Docker Compose (standalone) ```yaml # docker-compose.yml services: tinyauth: image: ghcr.io/steveiliop52/tinyauth:latest container_name: tinyauth restart: unless-stopped environment: - SECRET=change-me-long-random-string - USERS_FILE=/app/users.json - TINYAUTH_DOMAIN=https://auth.example.com volumes: - ./users.json:/app/users.json:ro - tinyauth_data:/app/data networks: - proxy app-to-protect: image: my-app:latest networks: - proxy labels: - "tinyauth.enable=true" - "tinyauth.users=admin,user1" networks: proxy: external: true volumes: tinyauth_data: ``` ### IntĂ©gration avec Traefik Tinyauth s'utilise typiquement comme **middleware Traefik** via les labels Docker : ```yaml services: grafana: image: grafana/grafana networks: - proxy labels: - "traefik.enable=true" - "traefik.http.routers.grafana.rule=Host(`grafana.example.com`)" - "traefik.http.routers.grafana.entrypoints=websecure" - "traefik.http.routers.grafana.tls.certresolver=letsencrypt" - "traefik.http.services.grafana.loadbalancer.server.port=3000" - "tinyauth.enable=true" # protĂ©gĂ© par tinyauth - "tinyauth.users=admin,user1" # qui peut y accĂ©der ``` ## ⚙ Configuration Initiale 1. **DĂ©finir le secret** : `openssl rand -hex 32` → mettre dans `SECRET` 2. **CrĂ©er `users.json`** avec mots de passe bcrypt : ```json { "users": { "admin": "$2a$10$...", "user1": "$2a$10$..." } } ``` 3. **Configurer l'OAuth** (optionnel) : variables `GOOGLE_OAUTH_CLIENT_ID`, `GITHUB_OAUTH_CLIENT_ID`, etc. 4. **Pointer DNS** `auth.example.com` vers le reverse proxy (Traefik/NPM) 5. **Ajouter les labels Docker** sur les services Ă  protĂ©ger 6. **Premier login** : crĂ©er le compte admin, tester l'accĂšs Ă  une app protĂ©gĂ©e ## 🔀 Alternatives ### Open Source | Alternative | DiffĂ©rence | Étoiles | | :--- | :--- | :---: | | [[app-authelia]] | Plus complet (2FA, WebAuthn, ACL fines), plus lourd | 25k | | [[app-authentik]] | Identity Provider complet, SSO, providers multiples | 16k | | [[app-oauth2-proxy]] | SpĂ©cifiquement proxy OAuth, pas d'UI native | 14k | | [[app-cloudflared]] | Tunnel Cloudflare + Access pour auth | 14k | ### PropriĂ©taires | Service | ModĂšle | DiffĂ©rence | | :--- | :--- | :--- | | **Cloudflare Access** | SaaS (gratuit jusqu'Ă  50 users) | Tinyauth en local vs Cloudflare-managed | | **Auth0** | Freemium | Identity Provider hĂ©bergĂ©, pas reverse proxy | | **Okta** | Payant | IdP enterprise, complexe pour homelab | ## 🔒 SĂ©curitĂ© - ✅ **Secret fort obligatoire** (32+ bytes random) - ✅ **Hash bcrypt** pour les passwords (jamais en clair) - ✅ **Cookies HttpOnly + Secure + SameSite=Strict** - ✅ **Rate limiting** sur les endpoints d'auth - ⚠ **Single point of failure** : si Tinyauth tombe, toutes les apps protĂ©gĂ©es sont inaccessibles - ⚠ **Pas d'audit log natif** : brancher sur [[app-loki]] ou [[app-glances]] pour le monitoring - ⚠ **OIDC discovery** : bien configurer `TINYAUTH_DOMAIN` pour les callbacks ## 📚 Ressources - [GitHub steveiliop52/tinyauth](https://github.com/steveiliop52/tinyauth) - [Site officiel tinyauth.app](https://tinyauth.app/) - [Documentation](https://tinyauth.app/docs) - [Docker Hub](https://hub.docker.com/r/steveiliop52/tinyauth) - [selfh.st/apps Tinyauth](https://selfh.st/apps/?tag=Reverse+Proxy#tinyauth) ## 🔗 Pages LiĂ©es - [[app-caddy]] — Alternative reverse proxy avec support auth via plugins - [[app-traefik]] — Reverse proxy souvent utilisĂ© conjointement - [[app-nginx-proxy-manager]] — UI web pour Nginx (sans auth intĂ©grĂ©e) - [[app-pangolin]] — Tunneled reverse proxy avec auth intĂ©grĂ©e - [[app-authelia]] — Alternative plus complĂšte (2FA, ACL) - [[app-oauth2-proxy]] — SpĂ©cifiquement proxy OAuth (SĂ©cant) - [[cat-reverse-proxy]] — Hub catĂ©gorie - [[comparatif-reverse-proxy]] — Comparaison dĂ©taillĂ©e