Auth0's console quietly hides how many separate jobs it is doing for you: hosted login pages, a user directory, social and enterprise connections, MFA, machine-to-machine tokens, Rules and Actions, and the Management API. Before choosing a replacement, inventory which of those you actually depend on, because the answer decides the shape of the move. A protocol-focused server like Ory Hydra assumes you bring your own user store and interface, while a full product such as Keycloak, ZITADEL, or Logto ships the directory, admin screens, and sign-in flows together.
The gaps show up in the details Auth0 quietly handled: key rotation, email templates, brute-force protection, anomaly detection, and provider-specific quirks in each social login. Rules and Actions are the sharpest edge, because they usually contain business logic that grew over time; treat them as application code to redesign and test, not snippets to paste over. It also helps to separate customer identity from internal access: if you only need single sign-on in front of apps your team already runs, Authelia and authentik fit that reverse-proxy pattern rather than a full customer-facing product.
Migrations here run app by app, not all at once. Stand up a parallel realm or tenant, move one low-risk application first by repointing its issuer, client ID, secret, callback URLs, scopes, and JWKS, and verify every token claim before touching the next. User exports carry profile fields and metadata, but password hashes migrate only if the target supports the same algorithm; many teams fall back to forced reset or just-in-time rehashing on first login. MFA enrollments, sessions, and refresh tokens rarely move cleanly, so keep Auth0 live and a rollback path ready until real traffic has proven the new system.