VoidAuth

VoidAuth

C'EST QUOI ?

VoidAuth est un serveur d'authentification unique (SSO) écrit en TypeScript, à placer devant ses applications auto-hébergées. Il joue le rôle de fournisseur OpenID Connect pour les applications qui le gèrent, protège les autres par ForwardAuth au niveau du reverse proxy et fournit une interface web pour gérer comptes, groupes et invitations. Il se branche donc au même endroit qu'Authelia. La documentation contient des guides de configuration OIDC pour une trentaine d'applications courantes en auto-hébergement, dont Immich, Jellyfin, Paperless-ngx, Vaultwarden et Proxmox VE.

POURQUOI C'EST INTÉRESSANT ?

  • Deux modes de protection : OIDC pour les applications compatibles, ForwardAuth pour les autres, via /api/authz/forward-auth côté Caddy et Traefik ou /api/authz/auth-request côté NGINX et NGINX Proxy Manager. L'accès à chaque domaine protégé se règle par groupe.
  • Clients OIDC déclarés en labels Docker : un label voidauth.oidc.<client-id>.client_secret posé sur un conteneur crée le client, et VoidAuth suit les démarrages et arrêts des conteneurs. Il faut pour cela lui monter /var/run/docker.sock en lecture seule. Des variables d'environnement OIDC_<client-id>_* font la même chose sans le socket.
  • Comptes gérés depuis l'interface : invitations par lien, inscription libre désactivée par défaut et soumise à l'approbation d'un admin quand on l'active, réinitialisation de mot de passe par e-mail, journal des mails envoyés.
  • MFA et passkeys : code d'application d'authentification, passkeys et comptes sans mot de passe. La MFA s'impose à tous (MFA_REQUIRED) ou par application OIDC.
  • Annuaire LDAP en lecture seule : fonction expérimentale qui expose utilisateurs et groupes aux services qui ne parlent que LDAP. Un utilisateur soumis à la MFA ne peut pas s'y authentifier, le bind LDAP simple n'ayant pas de second facteur.
  • Postgres ou SQLite : SQLite suffit pour une petite installation, et voidauth migrate copie les données d'une base à l'autre sans modifier la base d'origine.
  • Personnalisation : logo, titre, couleur, police et modèles d'e-mail.

VoidAuth ne s'installe qu'avec Docker et ne termine pas le HTTPS : il lui faut un reverse proxy avec certificat, et APP_URL doit contenir son adresse publique complète. Le premier compte admin s'active avec un lien de réinitialisation affiché dans les logs au premier démarrage. Le chiffrement au repos annoncé par le README couvre les secrets stockés (clés, secrets des clients OIDC), chiffrés avec une STORAGE_KEY d'au moins 32 caractères qu'une clé secondaire permet de faire tourner. Le README précise aussi que le projet n'a pas été audité et repose en grande partie sur des paquets tiers.

Le code est sous AGPL-3.0. Le dépôt existe depuis avril 2025 et la v1.16.0 est sortie le 26 septembre 2026, dixième version publiée depuis la mi-juin. Un seul mainteneur signe l'essentiel des commits.

CAS D'USAGE

  • Mettre une page de connexion commune devant des services qui n'ont pas d'authentification, via ForwardAuth sur Caddy ou Traefik.
  • Brancher Immich, Jellyfin ou Seafile en OIDC en suivant les guides de la documentation.
  • Inviter des proches ou des collègues par lien au lieu de créer leur compte à la main dans chaque application.
  • Fournir un annuaire LDAP à un service qui ne gère que ce protocole, sur un réseau privé ou en LDAPS.