Deploying Your Theme
This section explains how to load and enable your theme in your production Keycloak instance.
Warning: If your goal is to test your theme in a Keycloak docker container for development purpose, this is NOT the correct section of the documentation. Refer to the Testing Your Theme in a Keycloak Docker Container section for detailed instructions. This section is intended for deploying your theme to a production Keycloak instance, which involves a completely different process.
Building the JAR File
Keycloak uses an extension system where themes or other custom plugins are packaged as standardized JAR files.
The first step is to build your theme into a JAR file that can be loaded into Keycloak.
npm run build-keycloak-theme
This command will create a /dist_keycloak directory containing the necessary JAR files.

By default, Keycloakify generates multiple JAR files to support different Keycloak versions. Here’s how to choose the correct JAR file for your production environment:
• Keycloak 11 to 21 and 26 and newer: Use keycloak-theme-for-kc-all-other-versions.jar.
• Keycloak 22 to 25: Use keycloak-theme-for-kc-22-to-25.jar.
You can configure which JAR files are generated and how they are named. For details, refer to this guide:
keycloakVersionTargetsIf you have an OPS team and your responsibility is limited to developing the theme, your job ends here. The JAR file is your deliverable. You can provide it to the person managing your Keycloak instance—they will know what to do with it.
If you are responsible for both development and deployment, keep reading to learn how to load and enable the theme in Keycloak.
Loading the JAR File into Keycloak
Now that your theme is packaged as a JAR file, you can load it into your Keycloak server, just like any other Keycloak extension.
For official guidance, refer to the Keycloak documentation on registering provider implementations. While the official documentation provides a general overview, you might wonder how to apply those instructions in practice. Below, you’ll find a few code snippets illustrating how to load your theme, depending on the method you use to deploy Keycloak in production.
Improtrant note:
How to deploy Keycloak in production is beyond the scope of Keycloakify’s documentation.
If you’re unfamiliar with deploying a Keycloak instance, we strongly recommend starting with the official Keycloak deployment guides.
Do not attempt to use these snippets directly without understanding how Keycloak deployment works.
Once you’re confident in deploying Keycloak, revisit this section to integrate your custom theme seamlessly.
One of the most common ways to deploy Keycloak in production is by using the official Docker image.
If you are following this approach, you can use the -v
option to mount your JAR file into the /opt/keycloak
directory inside the container.
Here’s an example of how to run the Keycloak container with your custom theme:
docker run \
# ...other options
-v "./dist_keycloak/keycloak-theme-for-kc-all-other-versions.jar":/opt/keycloak/providers/keycloak-theme.jar \
quay.io/keycloak/keycloak:26.0.7 \
start
Enabling Your Theme
Once your JAR file is loaded into your Keycloak instance, enable your theme in the Keycloak Admin Console:
1. Go to Realm Settings in your desired realm.
2. Under the Themes section, select your theme from the dropdown menus (e.g., Login Theme).
Never configure the master realm for your application. Create a separate realm for your application to ensure the master realm remains untouched.

Note that the name that apprear in the dropdown (here "keycloakify-starter") can be configured with the themeName option. If you implement theme variants you'll have more than one option.
Last updated
Was this helpful?