Exploring the problem of many applications with many separate login systems, the identity provider landscape from Okta to Keycloak, the birth of Authentik by the goauthentik project, and an honest comparison with Keycloak, Authelia, and Zitadel.

After ensuring in episode 0 that the environment is ready — core identity protocol skills, Docker Compose installed, and the lab topology designed — in this episode we step back for a moment to answer the most defining question: why do we need Authentik?
This isn't just historical trivia. Understanding the background answers three practical questions: (1) what exactly is wrong with the "many applications, many login systems" situation we've long accepted as normal, (2) why existing solutions — Okta, Keycloak, Authelia — don't always fit your needs, and (3) when Authentik is the right choice and when it isn't. Just like understanding the history of a technology, understanding the background lets you not only install it, but also know why it exists.
Imagine your house has ten doors, and each door has a different key. The same guest has to carry ten different keys, and you have to remember ten different rules about who may enter through which door. That's the state of most self-hosted servers and offices:
123456. There's no shared standard.Authentik was born as an answer to this chaos: one door, one policy, one audit trail, and one place to enforce MFA.
Okta, Auth0, and Microsoft Entra ID (formerly Azure AD) dominate the Identity-as-a-Service market. Their strengths: vendor-managed, guaranteed SLAs, broad enterprise integrations, and a full feature set. The pricing follows — typically per user per month, and costs grow with features (MFA, passwordless, lifecycle management) and user volume. For large companies, this is reasonable. For a homelab, a personal VPS, or a small startup, recurring monthly costs often feel disproportionate.
On the open source side, the two biggest names are Keycloak (backed by Red Hat, written in Java) and Authentik (the goauthentik project, written in Python). Both can be self-hosted at the cost of a server alone. The differences determine your choice, and we'll break them down in the comparison section.
For this series, we focus on self-hosting via Docker Compose — the most common pattern in the Authentik ecosystem and the easiest to practice.
In broad strokes: commercial solutions can cost hundreds of millions of rupiah per year for hundreds of users, while a self-hosted Authentik on a mid-tier VPS can be said to be "free" beyond server cost and time. But remember, self-hosting is not zero-cost — there are maintenance costs, upgrades, and risk if misconfigured. The "commercial vs open source" decision is a business decision, not just a technical preference.
Authentik is developed by the goauthentik project and started to become widely known in the early 2020s. It was designed from the ground up as a modern identity provider for contemporary applications — not an adaptation of an old system — and is distributed as Docker images like ghcr.io/goauthentik/server and ghcr.io/goauthentik/proxy. Some of its design characteristics:
2021+ The goauthentik project gains recognition as a modern open-source IdP
2023.8 License changes from MIT to BUSL (Business Source License)
now Actively developed, large community, complete documentation, Docker-firstThe core of Authentik's strength lies in a single idea: every authentication flow is built from small, composable blocks. A stage is a single step (for example "ask for username", "ask for password", "show consent"), and a flow is a sequence of stages serving a single purpose (for example "login", "register", "reset password"). Like LEGO: with a few dozen stage types, you can assemble a simple login flow or a complex enterprise onboarding flow. We'll cover this thoroughly in episode 4.
| Solution | Language | Approach | Position in the Ecosystem |
|---|---|---|---|
| Keycloak | Java | Config-heavy, large admin console | Full enterprise IdP, industry standard |
| Authentik | Python | UI-first, flows & stages | Modern all-in-one IdP, Docker-first |
| Authelia | Go | Lightweight, single binary | Forward auth specialist, not a full IdP |
| Zitadel | Go | Cloud-first, single binary | Modern IdP, strong cloud features, steep learning curve |
This is the most frequently asked comparison. Keycloak is the veteran — the most complete enterprise feature set and the most widely used in companies. But its configuration is heavy: many menus, the realm concept, and much of it set through dense forms. Authentik answers with a different approach: a clean UI, the expressive flows concept, and simple Docker deployment. Written in Python vs Java, Authentik also feels lighter in day-to-day operations. For new self-hosted projects, many engineers choose Authentik for a more humane configuration experience.
Authelia is an auth proxy specialist: it sits in front of applications and handles forward authentication very well — lightweight, a single Go binary, and file-based configuration. But it isn't a full identity provider: its OIDC is limited, and there's no SAML provider or LDAP outpost. Authentik is a full IdP that also has forward auth capabilities via the proxy provider. If you only need to protect a few applications with SSO + MFA and want something light, Authelia is enough. If you need an identity platform that can be integrated as an OIDC/SAML IdP into other applications, Authentik is far more complete.
Zitadel is a modern Go-based competitor with a cloud-first design and attractive features like an action API and human-to-machine access. It's strong in cloud and Kubernetes ecosystems. Authentik's advantages here: the outpost ecosystem that makes deployment outside a cluster easy (standalone Docker, VPS, bare metal), more practice-oriented documentation, and a very active self-hosting community. Both are capable; the choice often comes down to deployment preference and closeness to the classic Docker ecosystem.
Tip
Rule of thumb: if you need a full IdP with OIDC and SAML, application integration, and forward auth in one product — and you're willing to maintain a server — Authentik is a very strong choice. If you only need a login + MFA layer in front of a few applications and want the lightest option, Authelia may be enough.
In this episode 1, we understood the root problem Authentik solves: the chaos of many login doors — password fatigue, inconsistent policies, and security that depends on the weakest application. We explored the identity provider landscape from commercial solutions (Okta, Auth0, Azure AD) to open source alternatives, saw the birth of Authentik by the goauthentik project — Python-based, cloud-native, UI-first, MIT-licensed until 2023.8 then BUSL — and compared it honestly with Keycloak, Authelia, and Zitadel.
Key takeaways:
In episode 2, we'll dissect Authentik's architecture and core concepts: how the server, worker, PostgreSQL, Redis, and outposts work together, what tenants, applications, providers, flows, stages, and policies are, and the journey of a single request from browser to returning with a token. See you in episode 2!