Authelia vs Pomerium

Authelia handles login, second factors and an OIDC provider itself, while Pomerium is an identity-aware proxy that depends on an external identity provider. This page shows which fits your apps, policies and licensing constraints.

On this page

Authelia vs Pomerium: when to choose each

Choose Authelia when your self-hosted web apps sit behind a supported reverse proxy and you want the login portal, second factors and an OpenID Connect provider in one Apache-2.0 service. Authelia authenticates users itself against an LDAP directory or a YAML file of hashed passwords, and it offers one-time passwords, security keys, passkeys and Duo mobile push as second factors. Two limits matter before you commit: it only serves websites over HTTPS, and its support chart lists no SAML, so SAML-only applications need another path. Check the supported proxies list for the proxy you run before you design around it.

Choose Pomerium when the gateway should enforce access but identity should stay with a provider you already operate, such as Keycloak, Microsoft Entra ID or Okta. Pomerium Core is Apache-2.0 and self-run, and it reaches beyond web apps: the Zero plans cover native SSH, TCP and UDP access, Kubernetes access and mTLS, while directory sync, Rego policies, administrator RBAC and SSH session recording sit in the Enterprise edition. With Zero, your Core cluster stays in your environment while Pomerium hosts the control plane and management console. Read the Pomerium pricing page closely and confirm with the vendor where control-plane data is held and how its change process works before your security team signs off.

The decision turns on four questions. First, does an identity store already exist? If users live in Active Directory, FreeIPA or Keycloak, Pomerium's external-provider model avoids a second user database. Authelia can read the same LDAP tree, but it then also stores second-factor registrations and authentication logs in PostgreSQL, MySQL or SQLite, which you must back up and secure. Second, must MFA be enforced at the gateway itself? Authelia handles this natively, while with Pomerium you must confirm that the upstream provider enforces it for every route. Third, do you need SSH, TCP or Kubernetes access, or only HTTP? Fourth, who will operate the control plane? Self-run Authelia and Pomerium Core put that work on your team, while Pomerium Zero moves the management console to the vendor. Write down these four answers before comparing license terms.

Authelia vs Pomerium by scenario

This table maps common team situations to the better fit between Authelia and Pomerium and states the condition that decides it. Read each row against your own identity sources, protocols and network rules, since the answer usually turns on where users already log in.

ScenarioBetter fitCondition that makes it so
Small team with an existing LDAP directoryAutheliaAuthelia authenticates against LDAP such as OpenLDAP, FreeIPA or Active Directory and adds second factors itself, so the directory stays the source of truth without a separate identity provider.
Homelab with no identity providerAutheliaAuthelia can read users from a YAML file of hashed passwords and runs its own login portal and 2FA, which removes the need to run any other identity service first.
Team that already runs Keycloak or Entra IDPomeriumPomerium relies on an external identity provider over OAuth 2.0 and OIDC and lists Keycloak, Microsoft Entra ID and others, so existing login, MFA and user lifecycle stay where they are. Confirm your provider and claim mapping in a test cluster.
Need for SSH and Kubernetes access alongside web appsPomeriumPomerium Zero plans include native SSH, TCP and UDP access and Kubernetes access alongside clientless web access. Authelia is a companion to reverse proxies for HTTP(S) sites, so it does not cover these protocols in the same way.
Regulated environment that must keep traffic in its own networkAutheliaAuthelia runs entirely inside your proxy and infrastructure, with user data in PostgreSQL, MySQL or SQLite. With Pomerium Zero, application traffic stays in your environment, but the managed control plane is hosted by Pomerium, so assessors will want that boundary documented. Ask Pomerium for the data flow and whether an Enterprise self-hosted control plane fits your rules.
Need for OIDC or SAML issuance to other applicationsAutheliaAuthelia acts as an OpenID Connect provider and is OpenID Certified for several profiles, but its support chart lists no SAML. If SAML is required, confirm the gap or pair it with another identity provider.
Need for per-route policies and continuous authorizationPomeriumPomerium Zero includes attribute-based policies and continuous authorization. Rego policies and RBAC for administrators are reserved for its Enterprise edition, so confirm which features your chosen tier includes.
Illustrative: a three-person startup with a Microsoft 365 tenantPomeriumIllustrative only. Entra ID already handles sign-in and MFA, so Pomerium on Zero Business can add proxy access without a second login store, provided the route and user counts fit the plan limits.

How Authelia and Pomerium are built and deployed

Authelia and Pomerium both sit in front of your applications, but they divide the work differently. The cards below cover where each component runs, what state it keeps, and where application traffic and identity checks actually flow.

Authelia as a proxy companion

Authelia does not carry application traffic itself. Your reverse proxy asks Authelia whether each request may pass, and unauthenticated users are redirected to Authelia's login portal. Confirm that your proxy is on the supported list, because the integration pattern differs between Traefik, NGINX, Caddy and the others. Check also that every protected site is served over HTTPS, since Authelia's session cookies depend on it and the project does not support plain HTTP.

Authelia state in SQL storage

Authelia keeps user preferences, second factor device registrations and authentication logs in PostgreSQL, MySQL or local SQLite. SQLite is simple for a single host, but a multi-node or high-availability design needs a networked database. Plan backups and restore tests for this store, because losing second factor registrations means users must re-enroll their devices. Ask your team who owns that database and how it is upgraded alongside Authelia.

Pomerium Core as a self-run proxy

Pomerium Core is the proxy you run yourself, and it is licensed under Apache-2.0. It carries application traffic between users and internal services, so it sits directly in the request path and must be sized, monitored and upgraded like any other ingress tier. Pomerium releases move quickly, with v0.33.4 published on October 2, 2026, so confirm your upgrade cadence and test each release against your identity provider before rollout.

External identity provider dependency

Pomerium does not authenticate passwords or issue second factors itself. It relies on an external provider over OAuth 2.0 and OIDC, such as Microsoft Entra ID, Okta, Google or Keycloak. That provider becomes a critical dependency: its availability, its MFA policy and its token lifetimes shape how Pomerium behaves. Authelia, by contrast, can serve as the login and second factor authority for the whole stack. Ask who owns the identity provider and whether it already enforces the MFA you need.

Kubernetes Ingress Controller option

For clusters, Pomerium publishes a Kubernetes Ingress Controller under Apache-2.0 in its own repository, so Pomerium can serve as the ingress for Kubernetes services. This moves route definitions into Kubernetes manifests and changes how upgrades roll out. Authelia integrates with Kubernetes through the ingress or proxy you already run, so the Kubernetes story depends on which proxy you choose. Confirm which controller version matches your Pomerium Core version before upgrading either.

Zero control plane and cluster split

With Pomerium Zero, you run the Pomerium Core cluster in your own environment, while Pomerium hosts the control plane and management console. Application traffic stays in your environment, but policy and management data sit with the vendor, which matters for data residency reviews. Authelia has no hosted control plane, so everything it manages stays on your side. Ask Pomerium exactly what metadata reaches the hosted control plane before you approve it.

Capability comparison: Authelia and Pomerium

This table compares licensing, protocols, identity sources, proxy support, second factors, policy, remote access and audit features for Authelia and Pomerium. Where the researched facts do not confirm a capability, the cell tells you what to verify with the vendor. Use it to shortlist, then test the rows that matter most for your applications.

CapabilityAutheliaPomerium
LicenseApache-2.0 for the open-source server (v4.39.28 is the current release)Pomerium Core is Apache-2.0; Zero and Enterprise are paid editions with a managed or self-hosted control plane
ProtocolsActs as an OpenID Connect provider, OpenID Certified for Basic, Implicit, Hybrid, Form Post and Config OP profiles; no SAML supportUses OAuth 2.0 and OIDC for user identity and relies on an external identity provider; SAML is not listed in the supplied facts, so confirm it
User backendsChecks LDAP directories such as OpenLDAP, OpenDJ, FreeIPA or Active Directory, or a YAML file of hashed passwordsDelegates login to providers such as Keycloak, Okta, Microsoft Entra ID, Google or Ping; directory sync is an Enterprise feature
Supported reverse proxiesWorks beside Traefik, Caddy, Envoy, NGINX, NGINX Proxy Manager, SWAG, HAProxy and Skipper, with Apache and IIS listed separatelyIs itself the proxy and also offers a Kubernetes Ingress Controller under Apache-2.0
Second factorsOne-time passwords, security keys, passkeys and Duo mobile pushSupplied facts do not list second factors; confirm which MFA methods the identity provider supplies
Policy featuresProxy asks for an allow decision per request; confirm rule granularity and syntax in the current documentationAttribute-based policies and continuous authorization on Zero plans; Rego policies are reserved for Enterprise
SSH, TCP and UDP accessNot covered by the supplied facts; Authelia's web-focused model suggests HTTP(S) apps, so confirm any other protocol supportNative SSH, TCP and UDP access through the Pomerium CLI or desktop app on Zero plans; SSH session recording is Enterprise
Kubernetes access and mTLSNot covered by the supplied facts; confirm with the vendor before assuming either capabilityKubernetes access and mTLS are listed on Zero plans; confirm the same features on your chosen plan
Audit logs and administrator RBACStores authentication logs in PostgreSQL, MySQL or SQLite; confirm admin role controls with the vendorAccess and audit logs on Zero plans; administrator RBAC is reserved for Enterprise

What is free and what is paid in each platform

Authelia is licensed under Apache-2.0, according to the authelia/authelia GitHub repository, and the current release line is v4.39.28, released on September 17, 2026, according to the authelia/authelia GitHub releases page. There is no separate paid tier described in the sources supplied for this comparison, so the software cost is the infrastructure and the effort to run it. Your costs are the servers or containers, the PostgreSQL, MySQL or SQLite storage you choose, and the staff time to configure the reverse proxy integration, second factors and user backend.

  • License: Apache-2.0 applies to the project itself, which means you can run it in your own environment without a license fee.
  • Current release: v4.39.28 is the line to pin against when you plan upgrades and patch windows.
  • Recurring cost: Infrastructure, storage and operator time recur. The license does not.
  • Support: Any paid support or implementation work is quoted separately, and the sources here do not describe an Authelia support subscription.

Confirm with the Authelia project whether any commercial support or enterprise offering exists before you budget for one.

What drives the running cost of each gateway

The cost of running either gateway is mostly staff time, infrastructure and the identity source behind it, and the mix differs sharply. For Authelia, the software is Apache-2.0 with no paid edition, so the license line on a quote is usually zero. The recurring costs are the servers or containers for Authelia and its storage in PostgreSQL, MySQL or SQLite, the directory or YAML user file it reads from, and the engineer hours spent on upgrades, access rule changes and second factor support requests. Ask whoever quotes the work to separate one-time setup (proxy configuration, session and storage design, MFA enrollment) from the recurring upkeep of the user store, which is the cost most likely to grow with headcount.

For Pomerium, the picture has two layers. Pomerium Core is Apache-2.0 and self-run, so its direct cost is the cluster and the people who maintain it. If you use Pomerium Zero, the pricing page lists Zero Business at $9 per user per month billed monthly or $7 billed annually, with limits of 5 clusters, 100 routes, 100 policies and 5 custom domains. Those per-user fees scale with headcount, and crossing a route, policy or cluster limit may move you to a higher plan or to Enterprise, which has custom pricing. Pomerium also does not supply an identity provider, so the cost of Microsoft Entra ID, Okta, Keycloak or another IdP sits outside the gateway line item and may already be paid for elsewhere.

Before accepting any written quote, confirm the following: which components are one-time and which recur; who pays for the identity provider or directory licenses; what the expected user count, app count, cluster count and second factor methods are, since each drives effort and subscription cost; who owns upgrades and policy changes after go-live; and whether the price includes support, backups and testing. Ask the vendor to confirm current Zero and Enterprise pricing directly, because the pricing page is the only source for those figures here, and ask DeployOpen to state its scope, deliverables and timeline in writing before work begins.

Moving from Authelia to Pomerium, or back

This sequence takes a team from Authelia's built-in login and second factors to Pomerium's external identity provider model, or the reverse, one route at a time. The output is a documented inventory, a policy map, a verified identity provider, and a cutover record with a rollback path for every protected app.

  1. Inventory protected apps and routes

    The platform owner lists every application behind the current gateway, including its hostname, upstream service, path rules, and which teams depend on it. Include apps that bypass the proxy for API or machine traffic, since those need a separate decision. The inventory is complete when each route has an owner, a named business user group, and a note on whether it is user-facing or service-to-service. Confirm the route count against the live Authelia and proxy configuration, not against memory.

  2. Map Authelia rules to Pomerium policies

    The security engineer translates each Authelia access rule, which matches on domain, path, subject, and authentication level, into a Pomerium route policy. Pomerium policies are evaluated against identity attributes supplied by the external provider, so group and claim names must be decided before any rule is written. Flag every rule that depends on a second factor level, because that requirement has to be restated in the new model. The map is done when each old rule has a matching new policy or a documented reason it was dropped.

  3. Select and connect the external identity provider

    Pomerium relies on an external provider for user identity, and the supported list in its identity provider documentation includes Keycloak, Microsoft Entra ID, Okta, Google, and others. The identity team chooses the provider that already holds the user directory, then registers Pomerium as a client and confirms that the expected claims and groups arrive. Authelia can authenticate against LDAP or a file, so a team moving from a file backend must first decide where users will live. Done means a test user signs in through the new provider and the group claims match the policy map.

  4. Rebuild second factor enrollment at the provider

    Authelia stores second factor registrations for one-time passwords, security keys, passkeys, and Duo push in its own storage, and those registrations do not move to Pomerium. Where the identity provider handles MFA, users enroll again in the provider's own factor tools, and the team confirms which assurance level each route requires. Helpdesk staff need a documented reset procedure before users are asked to re-enroll. Ask the provider vendor which factors it supports and how step-up is configured, since this varies by product. The step closes when a pilot group has enrolled and passed a test on a protected route.

  5. Move users and group membership

    User identities already in an LDAP directory or in a directory service remain there and transfer by design, so the work is to confirm that group membership is correct and that the provider reads it. Accounts that exist only in Authelia's YAML file must be recreated in the chosen provider with their passwords reset, because stored password hashes are not a migration path into a different identity system. Record the count of accounts moved and the groups mapped. The step is complete when a reconciliation report shows each active user present in the provider with the expected groups.

  6. Cut over route by route with rollback

    The team moves one route or a small group of routes to Pomerium at a time while Authelia continues to protect the rest. Each cutover keeps the previous proxy configuration in version control so the route can be returned to Authelia quickly. Monitoring checks login success, denied requests, and upstream health for each moved route before the next one starts. Because both gateways can coexist during the transition, rollback is a configuration change, not a rebuild. The step is done when every route has been moved, tested, and signed off by its application owner.

  7. Retire the old session and storage layer

    Once every route is on the new gateway, the team stops Authelia, removes its routes from the reverse proxy, and disposes of its session data and storage. Authentication logs in PostgreSQL, MySQL, or SQLite may hold records that the audit or retention policy requires, so export or archive them first and record where they are kept. Revoke any Authelia client credentials and secrets that are no longer needed. The sequence closes when the old service is stopped, the archive is verified, and the configuration repository shows no remaining references to Authelia.

Where Authelia and Pomerium projects usually run long

Both projects tend to run long for reasons that have little to do with the software itself. With Authelia, the work starts with HTTPS on every protected site, since its session cookies require it and the project does not support plain HTTP. Next comes the proxy integration: each reverse proxy in use (Traefik, Caddy, NGINX and others on the supported proxies list) needs its forward-auth wiring tested against every protected hostname. Then you choose the first-factor backend, either an LDAP directory such as FreeIPA or Active Directory or a YAML file of hashed passwords, and configure storage in PostgreSQL, MySQL or SQLite. Second factor enrollment (one-time passwords, security keys, passkeys or Duo push) and session settings are separate tasks that many teams underestimate.

Pomerium moves the effort elsewhere. You first connect an external identity provider, such as Keycloak, Microsoft Entra ID or Okta, and then write a policy for each route. Before you start, confirm whether Core, which you run yourself under Apache-2.0, or Zero, where Pomerium hosts the control plane, fits your data and operations requirements, because that decision changes what you build and who maintains it. On Kubernetes, the Ingress Controller setup adds its own configuration and testing layer. Confirm the exact steps for your cluster version with the Pomerium ingress controller repository rather than relying on assumptions.

Four issues cause most overruns in both. Unclear group mapping appears when identity provider groups do not line up with the access rules, so users get in or get blocked without explanation. Incomplete route inventories leave some applications outside the gateway entirely, which is the first thing an auditor will test. MFA rollout stalls when users must enroll devices before they can log in, so plan a support window and a fallback method. Policy testing is often skipped: build a test matrix of users, groups and routes, and run it after every change. Ask any implementation partner to show how each of these four items will be inventoried, owned and verified before work begins.

Authelia vs Pomerium: questions buyers ask before choosing

Can Authelia replace a full identity provider?

Not in most cases. Authelia is a two-factor and single sign-on server that sits in front of reverse-proxied apps, and it authenticates users itself against a YAML file or an LDAP directory such as OpenLDAP, FreeIPA or Active Directory. It also includes an OpenID Connect provider with OpenID Certified profiles, but its support chart lists no SAML support. If you need SAML federation, brokering logins to other providers, or a管理 console for many realms and clients, you should evaluate a dedicated identity provider such as Keycloak alongside it. Confirm the exact protocol coverage you need against the Authelia OpenID Connect documentation before you commit.

Does Pomerium need Keycloak or another identity provider?

Yes. Pomerium uses OAuth 2.0 and OIDC for user identity and does not act as the login system for your users. It documents integrations with providers including Keycloak, Microsoft Entra ID, Okta, Google and others, so you need one of them in place before Pomerium can authenticate anyone. That makes the identity provider a separate system to run, back up and patch, and it changes who owns user lifecycle decisions. Ask your team which provider already holds the user population, because that choice usually decides the architecture more than the proxy does.

What does Pomerium Zero cost per user?

The Pomerium pricing page lists Zero Business at $9 per user per month billed monthly or $7 per user per month billed annually, and Zero Personal as free for personal use. Enterprise is priced on request with a self-hosted control plane. Ask for the written quote to confirm which features, cluster counts, route counts and support terms each tier includes, because Zero Business limits clusters, routes, policies and custom domains. The cost of running the Pomerium Core cluster in your own environment is separate and depends on your infrastructure and staff time.

Does Authelia work over plain HTTP?

No. Authelia only works for websites served over HTTPS because its session cookies require it, and the project declines to support plain HTTP. Plan certificate issuance and renewal for every protected hostname before you deploy, and check how your reverse proxy terminates TLS. For internal-only labs, an internal certificate authority is usually the practical route. Confirm your certificate process against the Authelia architecture documentation.

How long does a migration between Authelia and Pomerium take?

The duration depends on the number of applications, how each one authenticates today, and whether you must change the reverse proxy in front of it. Authelia works through forward-auth checks in supported proxies such as Traefik, Caddy, NGINX and Envoy, while Pomerium replaces the access path with its own proxy and policy model, so routes and policies must be rebuilt. No supplied figure gives a standard duration, so ask for a written scope that lists each application, its authentication method, and the policy mapping. The work needs a team that understands both your proxy configuration and your identity source.

Can a small team run Authelia or Pomerium without outside help?

A small team can run either one if it already operates a reverse proxy, manages TLS certificates and has someone who can own the identity source. Authelia adds a service with its own storage in PostgreSQL, MySQL or SQLite, plus second-factor enrollment and recovery procedures to maintain. Pomerium Core adds a proxy cluster and a separate identity provider, and Pomerium Zero moves the control plane to Pomerium's hosting. Where skills or hours are thin, DeployOpen can plan, implement, harden, back up and document either setup inside your infrastructure under a fixed-scope written agreement, and offers retainers for ongoing support and upgrades.

Which option fits a team that needs a clear audit trail for access decisions?

Both can produce access and authentication logs, but the source of those logs differs. Authelia stores authentication logs and second-factor registrations in its configured database, so you must decide where those records go and how long they are kept. Pomerium Zero includes access and audit logs in its plans, and Enterprise reserves session management and SSH session recording. Ask each vendor to show a sample log entry for a denied request and a successful second-factor login, then map those fields to your monitoring and retention requirements. Compliance evidence still comes from your auditor, since DeployOpen prepares controls and evidence but does not issue audit reports.

How DeployOpen helps choose, implement or migrate

DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Authelia vs Pomerium, we start from your applications, identity sources and network layout, then write down which gateway fits each path before anything is built.

How we scope

  • We map which internal web apps, SSH or TCP services and APIs need gateway protection today.
  • We confirm your identity source, whether LDAP, Active Directory, an external OIDC provider or a local user file.
  • Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts.

How we build

  • We deploy the chosen gateway in your environment, with HTTPS, reverse proxy integration and policy rules written as code.
  • We configure second factors, session behavior and access policies against the requirements agreed in scope.
  • We test each protected route for bypass, login failure paths and policy enforcement before sign-off.

How we hand over

  • You receive configuration, policy inventory, architecture notes and runbooks for backups and upgrades.
  • We document which parts of the design depend on the vendor editions, licenses and features you confirmed.
  • Your team walks through the handover so operators can change routes, users and policies without us.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can cover version upgrades of the gateway and its identity backend on a schedule you agree.
  • If you later change identity provider or move from Authelia to Pomerium, we scope that migration in writing.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.