[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-authelia-vps-ma-fr":6,"promo-bar-likely":215},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-self-host-authelia-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":149,"ctaBody":150,"ctaButton":151,"ctaUrl":152,"relatedPosts":153},162,"self-host-authelia-vps",{"fr":10,"en":12,"ar":13,"es":14},"self-host-authelia-on-a-vps-mfa-and-sso-for-your-whole-stack","استضافة-authelia-على-vps-مصادقة-ثنائية-ودخول-موحد-لمنظومتك","alojar-authelia-en-un-vps","Héberger Authelia sur un VPS : MFA et SSO pour toute la stack","Déployer Authelia sur VPS avec Docker Compose : TOTP, WebAuthn\u002Fpasskey, OIDC, migration LLDAP, monitoring Prometheus et comparaison avec Authentik.",10,4,false,"2026-07-04T00:00:00+00:00","2026-09-24T12:27:51+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-authelia-vps-poster.svg",{"categorySlug":27,"appSlug":34},"authelia","Authelia est une passerelle d'authentification open source écrite en Go qui s'intercale devant vos services auto-hébergés via votre reverse proxy. En un seul conteneur léger (~30 Mo), elle centralise l'authentification, impose le MFA et peut devenir fournisseur OIDC pour un vrai SSO sur toute votre stack. Ce guide couvre l'installation complète, les règles d'accès par groupe, les méthodes MFA disponibles — dont les passkeys WebAuthn —, la migration vers LLDAP, les mises à jour sans surprise et le monitoring.",[37,41,53,56,87,91,94,97,100,103,106,143,146],{"type":38,"title":39,"body":40},"h2","Pourquoi une passerelle d'authentification en reverse proxy","Sans passerelle centralisée, chaque service gère son propre login : Grafana a sa base d'utilisateurs, Nextcloud la sienne, Portainer la sienne. Résultat : des mots de passe différents partout, pas de MFA cohérent, et une surface d'attaque démultipliée. Authelia résout ce problème en s'intercalant dans le flux HTTP : votre reverse proxy (Nginx, Traefik, Caddy) lui soumet chaque requête avant de la relayer, et Authelia décide — selon l'identité, le groupe, le chemin demandé et le niveau de MFA requis — si la requête doit passer. L'application protégée ne voit qu'une requête authentifiée avec des en-têtes d'identité injectés (`Remote-User`, `Remote-Groups`). Elle n'a pas besoin de gérer l'authentification elle-même.",{"type":42,"title":43,"items":44},"ul","Ce qu'Authelia auto-hébergé vous apporte",[45,46,47,48,49,50,51,52],"Authentification centralisée pour tous vos services sans modifier leur code","MFA natif : TOTP (Google Authenticator, Aegis), WebAuthn\u002Fpasskey (clés matérielles, Touch ID, Windows Hello), Duo","Fournisseur OIDC en production depuis v4.34 : vos apps supportant OAuth2\u002FOIDC délèguent l'auth à Authelia","Contrôle d'accès granulaire par domaine, chemin, groupe d'utilisateurs et niveau d'authentification","Intégration native avec Traefik (forwardAuth), Nginx (auth_request), Caddy (forward_auth)","Support LDAP\u002FActive Directory pour la gestion d'équipes, compatible LLDAP","Binaire Go unique (~30 Mo), image Docker légère, faible empreinte mémoire","Logs structurés JSON et métriques Prometheus pour l'observabilité",{"type":38,"title":54,"body":55},"Prérequis","Avant de déployer Authelia, vérifiez que votre environnement est prêt. Vous avez besoin d'un VPS sous Linux avec Docker et Docker Compose installés, d'un reverse proxy déjà en place (Traefik v2\u002Fv3 ou Nginx), d'un nom de domaine avec un certificat TLS valide (Let's Encrypt recommandé), et d'une instance Redis accessible par Authelia pour stocker les sessions (obligatoire en production pour la persistance et la scalabilité). Pour le stockage des utilisateurs, vous pouvez commencer avec un fichier YAML local ou brancher un serveur LDAP comme LLDAP. Authelia nécessite également une clé JWT, une clé de chiffrement de session et un secret OIDC si vous activez ce mode : générez-les avec `openssl rand -hex 32`.",{"type":57,"title":58,"steps":59},"steps","Déployer Authelia avec Docker Compose",[60,63,66,69,72,75,78,81,84],{"title":61,"body":62},"Créer la structure de répertoires","Créez `\u002Fopt\u002Fauthelia\u002Fconfig\u002F` pour les fichiers de configuration et `\u002Fopt\u002Fauthelia\u002Fdata\u002F` pour le stockage SQLite et les clés. Donnez les droits appropriés : `mkdir -p \u002Fopt\u002Fauthelia\u002F{config,data} && chown -R 1000:1000 \u002Fopt\u002Fauthelia`.",{"title":64,"body":65},"Écrire le fichier configuration.yml","Créez `\u002Fopt\u002Fauthelia\u002Fconfig\u002Fconfiguration.yml`. Définissez `default_redirection_url`, `jwt_secret`, `session.secret`, `storage.encryption_key`, configurez le backend d'authentification (fichier ou LDAP), Redis pour les sessions, et la politique d'accès par défaut (`deny` recommandé).",{"title":67,"body":68},"Créer le fichier users_database.yml (backend fichier)","Pour un démarrage rapide, créez `\u002Fopt\u002Fauthelia\u002Fconfig\u002Fusers_database.yml` avec vos utilisateurs. Les mots de passe doivent être hashés avec Argon2id : `docker run --rm authelia\u002Fauthelia:latest authelia crypto hash generate argon2 --password 'VotreMotDePasse'`. Copiez le hash généré dans le fichier.",{"title":70,"body":71},"Configurer Redis pour les sessions","Ajoutez Redis à votre `docker-compose.yml`. Dans `configuration.yml`, définissez `session.redis.host: redis` et `session.redis.port: 6379`. Redis est indispensable pour que les sessions survivent aux redémarrages d'Authelia.",{"title":73,"body":74},"Rédiger le docker-compose.yml","Définissez les services `authelia`, `redis`, et si vous utilisez Traefik, ajoutez les labels appropriés. Montez `\u002Fopt\u002Fauthelia\u002Fconfig` en lecture et `\u002Fopt\u002Fauthelia\u002Fdata` en lecture-écriture. Exposez le port 9091 en interne, jamais directement sur Internet.",{"title":76,"body":77},"Configurer Traefik avec forwardAuth","Créez un middleware Traefik pointant vers `http:\u002F\u002Fauthelia:9091\u002Fapi\u002Fauthz\u002Fforward-auth`. Appliquez ce middleware aux routers des services à protéger via le label `traefik.http.routers.\u003Cservice>.middlewares: authelia@docker`. Pour Nginx, utilisez `auth_request \u002Fauthelia` avec les directives `proxy_pass`.",{"title":79,"body":80},"Configurer le domaine de session","Dans `configuration.yml`, définissez `session.domain` à votre domaine racine (ex : `mondomaine.com`) pour que le cookie soit partagé entre sous-domaines. C'est la cause la plus fréquente des redirect loops : si `session.domain` ne correspond pas au domaine du service protégé, le cookie n'est jamais renvoyé.",{"title":82,"body":83},"Lancer et valider","Lancez avec `docker compose up -d`. Vérifiez les logs : `docker compose logs -f authelia`. Accédez à `https:\u002F\u002Fauth.mondomaine.com` pour voir le portail de connexion. Testez en accédant à un service protégé : vous devez être redirigé vers le portail, puis renvoyé vers le service après authentification.",{"title":85,"body":86},"Activer le fournisseur OIDC (optionnel)","Depuis v4.34, le fournisseur OIDC est en production. Ajoutez la section `identity_providers.oidc` à votre configuration avec vos clients (Nextcloud, Grafana, Gitea…). Chaque client a un `id`, un `secret` (hashé avec Argon2id) et ses `redirect_uris` autorisées. Vos apps compatibles OAuth2 peuvent alors déléguer entièrement l'authentification à Authelia.",{"type":88,"title":89,"body":90},"tip","Utiliser Authelia comme fournisseur OIDC pour un vrai SSO","Le mode fournisseur OIDC transforme Authelia en vrai SSO : l'utilisateur se connecte une fois sur le portail Authelia, et toutes les applications configurées comme clients OIDC récupèrent l'identité sans redemander de mot de passe. Nextcloud, Grafana, Gitea, Portainer, Outline… tous supportent OIDC. Configurez chaque client avec `client_id`, `client_secret`, et pointez l'URL de découverte vers `https:\u002F\u002Fauth.mondomaine.com\u002F.well-known\u002Fopenid-configuration`. Le scope `groups` permet de transmettre les groupes Authelia aux applications clientes pour la gestion des rôles.",{"type":38,"title":92,"body":93},"Règles de contrôle d'accès : exemples concrets","La section `access_control` est le cœur de la logique d'Authelia. Depuis v4.37, les politiques ont été refondues. Voici des exemples représentatifs. Pour un accès public sans auth : `{domain: 'status.mondomaine.com', policy: bypass}`. Pour un accès MFA fort réservé aux admins : `{domain: 'portainer.mondomaine.com', subject: 'group:admins', policy: two_factor}`. Pour un chemin d'API sans auth (webhooks) : `{domain: 'n8n.mondomaine.com', resources: ['^\u002Fwebhook\u002F.*'], policy: bypass}`. Pour le reste de N8N en MFA simple : `{domain: 'n8n.mondomaine.com', policy: one_factor}`. La règle `default_policy: deny` garantit que tout ce qui n'est pas explicitement listé est bloqué. L'ordre des règles compte : la première règle qui correspond s'applique. Le champ `subject` accepte `user:alice`, `group:admins`, ou une liste combinée.",{"type":38,"title":95,"body":96},"MFA : TOTP, WebAuthn\u002Fpasskey et Duo","Authelia supporte trois méthodes de second facteur, chacune avec ses avantages.\n\n**TOTP** (Time-based One-Time Password) est la méthode la plus universelle : l'utilisateur scanne un QR code avec une app comme Aegis (Android), Raivo (iOS) ou Bitwarden Authenticator. Un code à 6 chiffres change toutes les 30 secondes. Simple à déployer, compatible avec tous les appareils, mais vulnérable au phishing si le code est intercepté en transit.\n\n**WebAuthn\u002Fpasskey** est la méthode la plus robuste, supportée nativement par Authelia depuis v4.36. L'utilisateur enregistre une clé matérielle (YubiKey, Nitrokey) ou un authentificateur de plateforme (Touch ID sur macOS, Windows Hello, Face ID sur iOS). La cryptographie à clé publique rend le phishing impossible : la clé privée ne quitte jamais l'appareil. Pour optimiser la requête GSC « authelia passkey », notez qu'Authelia implémente la spec WebAuthn Level 2 complète, ce qui inclut les passkeys synchronisées (via iCloud Keychain ou Google Password Manager) en plus des clés matérielles.\n\n**Duo** délègue le second facteur au service cloud Duo Security : push mobile, SMS ou appel téléphonique. Pratique pour les équipes qui utilisent déjà Duo, mais introduit une dépendance à un service tiers.\n\nPour la plupart des stacks auto-hébergées, la combinaison recommandée est TOTP comme méthode de base et WebAuthn comme méthode préférée pour les utilisateurs qui ont une YubiKey ou un appareil Apple\u002FWindows récent.",{"type":38,"title":98,"body":99},"Migration vers LLDAP : gestion des équipes","Le backend fichier (`users_database.yml`) convient à un utilisateur ou une petite famille, mais devient difficile à gérer au-delà de 5-10 utilisateurs. LLDAP (Light LDAP) est une implémentation LDAP légère écrite en Rust, avec une interface web simple, qui s'intègre parfaitement avec Authelia.\n\nDéployez LLDAP en ajoutant son service à votre `docker-compose.yml` avec les variables `LLDAP_JWT_SECRET` et `LLDAP_LDAP_BASE_DN` (ex : `dc=mondomaine,dc=com`). Créez vos groupes dans l'interface LLDAP (`admins`, `users`, `devops`…), puis modifiez votre `configuration.yml` pour passer du backend `file` au backend `ldap` : définissez `authentication_backend.ldap.url`, `base_dn`, `users_filter` (`(&(uid={input})(objectClass=person))`), `groups_filter`, `user` (le compte service LLDAP) et `password`.\n\nAttention au breaking change v4.35 : le champ s'appelait `authentification_backend` (avec une faute) avant v4.35 et a été corrigé en `authentication_backend`. Vérifiez votre configuration si vous migrez depuis une version antérieure.\n\nUne fois LLDAP configuré, les groupes LDAP remontent automatiquement dans les règles `access_control` via `subject: 'group:admins'`, et dans les claims OIDC via le scope `groups`.",{"type":38,"title":101,"body":102},"Mise à jour d'Authelia : éviter les breaking changes","Authelia suit un versionnage sémantique strict et documente ses breaking changes par version. Voici les changements notables à connaître pour migrer proprement.\n\n**v4.34** : le fournisseur OIDC passe en production. Si vous l'utilisiez en mode expérimental, certaines options ont changé de nom.\n\n**v4.35** : correction de la faute de frappe `authentification_backend` → `authentication_backend`. Toute configuration utilisant l'ancien nom doit être mise à jour avant de passer à v4.35+, sinon Authelia refuse de démarrer avec une erreur de validation de configuration.\n\n**v4.37** : refonte des politiques `access_control`. La syntaxe des règles a évolué pour être plus explicite. Consultez le changelog officiel avant de mettre à jour depuis v4.36 ou antérieur.\n\n**v4.38.x** (version actuelle) : stabilisation, pas de breaking change majeur depuis v4.37.\n\nProcédure de mise à jour recommandée : (1) lisez le changelog depuis votre version actuelle ; (2) sauvegardez `\u002Fopt\u002Fauthelia\u002Fconfig\u002F` et `\u002Fopt\u002Fauthelia\u002Fdata\u002F` ; (3) testez la nouvelle configuration avec `docker run --rm -v \u002Fopt\u002Fauthelia\u002Fconfig:\u002Fconfig authelia\u002Fauthelia:4.38.x authelia validate-config` avant de redémarrer ; (4) mettez à jour le tag dans `docker-compose.yml` et relancez. La commande `validate-config` détecte les erreurs de schéma avant le déploiement.",{"type":38,"title":104,"body":105},"Monitoring : logs et métriques Prometheus","Authelia expose ses métriques Prometheus sur `\u002Fmetrics` (port configurable, par défaut 9959). Activez-les dans `configuration.yml` avec `telemetry.metrics.enabled: true` et `telemetry.metrics.address: 'tcp:\u002F\u002F0.0.0.0:9959'`. Ne rendez pas ce port public : exposez-le uniquement à votre stack de monitoring interne.\n\nLes métriques clés à surveiller : `authelia_authn_requests_total` (total des tentatives d'authentification, labellisées par succès\u002Féchec), `authelia_authn_duration_seconds` (latence d'authentification), et les métriques Redis sous-jacentes pour la santé des sessions.\n\nPour les logs, Authelia supporte le format JSON structuré (`log.format: json`) idéal pour l'ingestion dans Loki ou un SIEM. Définissez `log.level: info` en production (évitez `debug` qui logue les headers complets). Les logs d'authentification incluent l'IP source, le nom d'utilisateur, le service cible et le résultat — précieux pour détecter les tentatives de force brute.\n\nDans Grafana, créez une alerte sur un taux d'échec d'authentification anormal (ex : plus de 10 échecs en 5 minutes sur le même utilisateur) pour détecter les attaques par dictionnaire avant qu'elles aboutissent.",{"type":107,"title":108,"columns":109,"rows":113},"comparison","Authelia vs Authentik : lequel choisir ?",[110,111,112],"Critère","Authelia","Authentik",[114,118,122,126,130,134,137,139],[115,116,117],"Empreinte Docker","~30 Mo (binaire Go)","~1,5 Go (Python\u002FDjango + worker)",[119,120,121],"RAM minimale","~50 Mo","~512 Mo recommandés",[123,124,125],"Fournisseur OIDC","Oui, depuis v4.34","Oui, mature et riche",[127,128,129],"Fournisseur SAML","Non","Oui",[131,132,133],"Interface d'administration","Configuration YAML uniquement","Interface web complète",[135,128,136],"Proxy d'application (app proxy)","Oui (tunnels Authentik)",[138,128,129],"Provisionnement SCIM",[140,141,142],"Cas d'usage idéal","Stack légère, reverse proxy pur, config as code","IAM complet, SSO entreprise, besoins SAML\u002FSCIM",{"type":38,"title":144,"body":145},"Dépannage des erreurs fréquentes","**Redirect loop infini.** L'utilisateur est renvoyé en boucle entre le service et le portail Authelia sans jamais se connecter. Cause la plus fréquente : `session.domain` ne correspond pas au domaine du service. Si votre service est sur `app.mondomaine.com` et `session.domain` est `autredomaine.com`, le cookie de session n'est jamais renvoyé. Vérifiez aussi que le middleware forwardAuth est bien appliqué et que `default_redirection_url` pointe vers une URL valide.\n\n**Cookie domain mismatch.** Le navigateur refuse de renvoyer le cookie. Cause : `session.domain` doit être le domaine parent commun (`mondomaine.com`), pas un sous-domaine. Vérifiez avec les DevTools (onglet Application > Cookies) que le cookie `authelia_session` a bien le bon domaine.\n\n**Redis unreachable.** Authelia démarre mais les sessions ne persistent pas, ou le log affiche `Error connecting to Redis`. Vérifiez que le conteneur Redis est sur le même réseau Docker qu'Authelia, que le `host` dans `configuration.yml` correspond au nom du service Docker (pas `localhost`), et que Redis n'est pas protégé par un mot de passe non configuré côté Authelia.\n\n**Configuration invalide au démarrage.** Depuis v4.35, le schéma de configuration est strictement validé. Utilisez `authelia validate-config` avant tout redémarrage. Les erreurs les plus courantes : `authentification_backend` (vieille faute), mauvaise indentation YAML, ou champ OIDC manquant (`client_secret` doit être hashé avec Argon2id depuis v4.37).\n\n**MFA non proposé malgré `two_factor` dans les règles.** Vérifiez que l'utilisateur a bien enregistré un second facteur dans son profil (`https:\u002F\u002Fauth.mondomaine.com`). Sans appareil MFA enregistré, Authelia peut appliquer un repli sur `one_factor` selon votre configuration `default_2fa_method`.",{"type":88,"title":147,"body":148},"Conseil final : commencer simple, évoluer progressivement","Déployez d'abord Authelia avec le backend fichier, une seule règle `two_factor` pour vos services les plus exposés et TOTP comme méthode MFA. Une fois stable, migrez vers LLDAP pour la gestion d'équipe, activez le fournisseur OIDC pour le SSO, puis ajoutez WebAuthn pour les utilisateurs qui ont une clé physique ou un appareil supportant les passkeys. Cette progression vous évite de déboguer plusieurs composants nouveaux simultanément et vous permet de valider chaque couche indépendamment.","Déployez Authelia sur votre VPS en un clic","Ajoutez le MFA et le SSO à toute votre stack auto-hébergée sans modifier une seule application. ServOrbit provisionne une instance Authelia prête à l’emploi — configuration générée, utilisateur administrateur créé, intégration au reverse proxy prête.","Déployer Authelia","\u002Fvps-cloud?template=authelia",[154,173,192],{"id":155,"slug":156,"slugs":157,"title":161,"excerpt":162,"readTime":163,"views":164,"isPinned":19,"noindex":19,"publishedAt":165,"updatedAt":166,"category":167,"categories":168,"featuredImage":30,"bgImage":31,"posterImage":170,"relatedSolution":171},131,"deploy-vaultwarden-vps",{"fr":156,"en":158,"ar":159,"es":160},"self-host-your-password-manager-deploy-vaultwarden-on-vps","استضف-مدير-كلمات-المرور-بنفسك-انشر-vaultwarden-على-vps","desplegar-vaultwarden-en-un-vps","Déployer Vaultwarden sur un VPS : mots de passe auto-hébergés","Auto-hébergez Vaultwarden sur un VPS : gestion de mots de passe, compatibilité Bitwarden, coffres d'équipe et TOTP, à coût mensuel fixe et moins de 50 Mo de RAM.",15,3,"2026-06-24T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[169],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fdeploy-vaultwarden-vps-poster.svg",{"categorySlug":27,"appSlug":172},"vaultwarden",{"id":174,"slug":175,"slugs":176,"title":180,"excerpt":181,"readTime":18,"views":182,"isPinned":19,"noindex":19,"publishedAt":183,"updatedAt":184,"category":185,"categories":186,"featuredImage":30,"bgImage":31,"posterImage":188,"relatedSolution":189},108,"securiser-vps-crowdsec",{"fr":175,"en":177,"ar":178,"es":179},"securing-your-vps-with-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","proteger-vps-con-crowdsec","Sécuriser votre VPS avec CrowdSec","Déployez CrowdSec sur votre VPS pour bloquer les attaques grâce à une détection comportementale et une blocklist communautaire mutualisée.",2,"2026-03-04T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[187],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":190,"appSlug":191},"cybersecurity","crowdsec",{"id":193,"slug":194,"slugs":195,"title":199,"excerpt":200,"readTime":18,"views":201,"isPinned":19,"noindex":19,"publishedAt":202,"updatedAt":184,"category":203,"categories":209,"featuredImage":30,"bgImage":31,"posterImage":211,"relatedSolution":212},161,"self-host-dockge-vps",{"fr":194,"en":196,"ar":197,"es":198},"how-to-self-host-dockge-on-a-vps-visual-docker-compose-manager","استضافة-dockge-على-vps-مدير-مرئي-لـ-docker-compose","alojar-dockge-en-un-vps","Héberger Dockge sur un VPS : gestionnaire visuel Docker Compose","Déployez Dockge sur votre VPS : un gestionnaire visuel open source et léger pour créer, modifier et superviser vos stacks Docker Compose depuis le navigateur.",1,"2026-07-03T00:00:00+00:00",{"id":204,"name":205,"slug":206,"color":207,"icon":208},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[210],{"id":204,"name":205,"slug":206,"color":207,"icon":208},"\u002Fblog\u002Fcovers\u002Fself-host-dockge-vps-poster.svg",{"categorySlug":213,"appSlug":214},"deploiement","dockge",true,1794270784625]