Skip to main content
PostQueen can sign people in through your own identity provider, so they use the account they already have instead of a new password. Any provider that speaks OpenID Connect works: Authentik, Keycloak, Dex, Okta, Microsoft Entra ID, Auth0 and others. This is about signing in to PostQueen. Connecting social networks is separate: see Channel developer apps.

What changes

Set it up

The example uses Authentik at https://auth.example.com.
1

Create the application in your provider

Create an OAuth2 or OpenID Connect application of the confidential type, with:Copy the client ID, the client secret, and the authorization, token and userinfo endpoints. In Authentik they are https://auth.example.com/application/o/authorize/, .../token/ and .../userinfo/.
2

Set the variables

The userinfo response has to include sub and email.
3

Recreate the container and try it

Recreate the app container so it reads the new values. A plain docker restart or docker compose restart keeps the old container and its old environment.In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. On Kubernetes, see Kubernetes with Helm.
The sign-in screen shows your provider’s button, and signing in lands you in PostQueen.
Copying .env.example turns this on by accident. It ships POSTQUEEN_GENERIC_OAUTH="false", and because any value counts as on, the sign-in screen then shows an unconfigured single sign-on button instead of Google. Remove the line unless you use single sign-on.

If it does not work

IS_GENERAL is not set, or the container was restarted rather than recreated.
The redirect URI registered at the provider is not exactly FRONTEND_URL + /settings: check the scheme, the host and that there is no trailing slash.
The backend log has the reason. POSTQUEEN_OAUTH environment variables are not set means one of the five URL and credential variables is empty. Token request failed quotes your provider’s error, usually a wrong secret or a client that does not accept the secret in the request body.
Last modified on September 23, 2026