6.2 KiB
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 |
| GitHub | steveiliop52/tinyauth |
| License | MIT |
| Langage | Go (frontend TypeScript/React) |
| Étoiles GitHub | 7 455 ⭐ |
| Dernière MAJ | 2026-05-31 |
| Catégorie | cat-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)
# 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 :
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
- Définir le secret :
openssl rand -hex 32→ mettre dansSECRET - Créer
users.jsonavec mots de passe bcrypt :{ "users": { "admin": "$2a$10$...", "user1": "$2a$10$..." } } - Configurer l'OAuth (optionnel) : variables
GOOGLE_OAUTH_CLIENT_ID,GITHUB_OAUTH_CLIENT_ID, etc. - Pointer DNS
auth.example.comvers le reverse proxy (Traefik/NPM) - Ajouter les labels Docker sur les services à protéger
- 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_DOMAINpour les callbacks
📚 Ressources
- GitHub steveiliop52/tinyauth
- Site officiel tinyauth.app
- Documentation
- Docker Hub
- selfh.st/apps 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