I’ve just looked at some tutorials for Keycloak and Authentik and there’s definitely a very steep learning curve for these two solutions. I feel like I need something a lot simpler to be able to fully grasp the concept.
What is the easiest solution for beginners to implement Sigle-Sign-On for their selfhosted services?
I just setup authentik in podman quadlet and got a lot of my services setup with it. Their documentation is actually very good and thorough. It covers a ton of services with easy to follow instructions.
I already have Forgejo installed and found out it does basic Oauth2. I didn’t have to do anything. It just worked out of the box.
What do you mean? You can set up other services to use your Forgejo accounts?
I tried several and I found casdoor pretty painless.
I like Pocket ID. It’s also very simple to set up and just works™
@Lemmchen@feddit.org I just wanted to add a new service as I saw this page. May be helpful for you too: https://pocket-id.org/docs/client-examples
+1 for PocketID
I’d love to use PocketID, but I fear my users aren’t really set up to use passkeys (they’re awesome!) and I assume they wouldn’t work on the Android TV Jellyfin client (does anybody have experience with that?).
That may be a problem, because Pocket ID works with Passkeys only. But you can also configure Emails, so your users can get one time login links.
Regarding Jellyfin: You can login on your phone using oidc. On the TV you can use Quick Connect then
Technically true, BUT.
PocketID does offer a fallback to a numeric code for clients that don’t support passkeys (e.g. most embedded webviews on mobile).
For those, you simply need to navigate to the PocketID interface (for less technically adept people you can put it on the home screen on their phones), and click the big center button “Create” in the “Login Code” section (see attached screenshot).
Unfortunately these login codes are long lived (10-15 minute I believe?) and aren’t OTP compatible so you can’t just register it in a code provider to use whenever needed.

If they can use their phones to log in with passkeys this might just work, hmm. I’ll definitely take a closer look at that then. Thank you!
Edit:

That’s very unfortunate as my users will basically only use the Android or Android TV app and not a browser. Maybe it’s not too bad if it is a one time thing, but it definitely makes it not ideal.Jellyfin is actually the only self hosted service I don’t use LDAP or OIDC on purpose. Jellyfin is used only by me, my wife and sometimes a guest. So I just created the accounts by hand. I did so, because I want empty passwords there, so we can easily login. On the android tv app the login screen behaves like the Netflix profile selection screen, if the passwords are empty.
Also, Jellyfin supports LDAP backing, so OP could set up PocketID with an LLDAP backing server (minor extra complexity). Managing passwords will still be a chore as PocketID does not support neither setting them up nor syncing it with LDAP (it can read and authenticate LDAP users, not write them), but then Jellyfin can work without the OIDC plugin, just using the LDAP login approach.
Yeah, I’ve just realized that Jellyfin doesn’t have native OIDC support and requires a third-party plugin for that functionality. Maybe going all-in instead on a LDAP solution is the right way then? But I think most common selfhostable software only supports OIDC and not necessarily LDAP. I might be wrong though.
Protocol-wise, OIDC is generally the most supported out there. LDAP too, to an extent.
Software wise, I find Kanidm quite simple to set up (basically just one container). It’s mostly managed via the terminal though, and lacks some eyecandy. But some of the examples in its docs should be easy to follow and get you familiar with mapping scopes/groups between Kanidm and services.
Authelia is okay too
I honestly didn’t find authentik very complicated. You can be up and running pretty much after starting it. I used docker to run it.
I use Authelia. I found it pretty easy to set up. They even provide guides with examples on how to integrate with other applications. For instance, I use Traefik for my reverse proxy: Traefik | Integration | Authelia
You can use a simple YAML file for your IdP or LDAP if you need more than a handful of users.
What’s the difficulty with keycloak? I just set this up last weekend
https://oneuptime.com/blog/post/2026-03-18-run-keycloak-podman-container/view
I think this might be on of those cases where the TUI is actually easier to understand than the WebUI. In the WebUI there are tons of terms I’ve never even heard before, but this actually looks kinda straight forward. Thanks!
Oh absolutely! I try to always start from cli and config files first personally so keycloak made a lot of sense to me. Good luck with whatever you choose.
Void auth, or kanidm look like easier alternatives.
I quite lldap too. I wish there was an easy way to glop oauth ontop of it.
Oidc is easier to implement than SAML. Oauth2 is for authorization (vs authentication). Its used along with Oidc, but Oidc is the authentication piece (the SSO part)
I say Oidc is easier to implement because it is json based (jwt token) vs SAML which uses XML, which is very verbose and has stuff like namespaces and xsd’s which can make XML a pain to work with.
I’d suggest you stick to keycloak and set up Oidc. This is a good tutorial https://medium.com/@buffetbenjamin/keycloak-essentials-openid-connect-c7fa87d3129d
Edit: take a look at authentik too. I’ve always used keycloak but authentik looks interesting
.htaccessfiles are pretty simple to set up, if not hosting anything too sensitive.







