Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Keycloak
  3. Enabling features

Enabling features

Scheduled Pinned Locked Moved Keycloak
26 Posts 7 Posters 955 Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Locutus

    Can we then add support for passkeys, which seems like something most users here can use?

    girishG Offline
    girishG Offline
    girish
    Staff
    wrote on last edited by
    #4

    @Locutus sure, why not. https://git.cloudron.io/packages/keycloak-app/-/merge_requests/8

    1 Reply Last reply
    0
    • L Offline
      L Offline
      Locutus
      wrote on last edited by
      #5

      Thank you. I read that WEB_AUTHN is also required for passkeys, though that seems explicitly disabled.

      1 Reply Last reply
      0
      • girishG Offline
        girishG Offline
        girish
        Staff
        wrote on last edited by
        #6

        I am not sure why it's disabled explicitly. This was from the original package author @nj

        1 Reply Last reply
        0
        • girishG Offline
          girishG Offline
          girish
          Staff
          wrote on last edited by
          #7

          https://git.cloudron.io/packages/keycloak-app/-/merge_requests/9

          1 Reply Last reply
          0
          • andreasduerenA Offline
            andreasduerenA Offline
            andreasdueren
            wrote on last edited by
            #8

            My understand is, that this was added to the package but enabling it still won't work:

            root@bdb4c70c-3a98-4263-b7b4-06816ea7d6c3:/app/code/bin# ./kc.sh build --features="passkeys"
            WARNING: The following run time options were found, but will be ignored during build time: kc.cache, kc.db-url, kc.db-username, kc.db-password, kc.hostname, kc.hostname-strict, kc.http-enabled, kc.http-host, kc.http-port, kc.proxy-headers, kc.proxy-trusted-addresses
            
            Updating the configuration and installing your custom providers, if any. Please wait.
            2025-02-13 13:16:07,396 INFO  [org.key.com.Profile] (main) Preview features enabled: passkeys:v1
            2025-02-13 13:16:08,305 INFO  [org.key.com.Profile] (main) Preview features enabled: passkeys:v1
            2025-02-13 13:16:08,680 WARN  [io.qua.config] (build-21) Unrecognized configuration key "quarkus.smallrye-health.extensions.enabled" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
            2025-02-13 13:16:09,481 INFO  [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-19) Persistence unit 'keycloak-default': Enforcing Quarkus defaults for dialect 'org.hibernate.dialect.H2Dialect' by automatically setting 'jakarta.persistence.database-product-version=2.3.230'.
            2025-02-13 13:16:09,483 INFO  [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-19) A legacy persistence.xml file is present in the classpath. This file will be used to configure JPA/Hibernate ORM persistence units, and any configuration of the Hibernate ORM extension will be ignored. To ignore persistence.xml files instead, set the configuration property 'quarkus.hibernate-orm.persistence-xml.ignore' to 'true'.
            ERROR: Failed to run 'build' command.
            ERROR: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
                    [error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.nio.file.ReadOnlyFileSystemException
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.createDirectory(ZipFileSystem.java:708)
                    at jdk.zipfs/jdk.nio.zipfs.ZipPath.createDirectory(ZipPath.java:742)
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.createDirectory(ZipFileSystemProvider.java:186)
                    at java.base/java.nio.file.Files.createDirectory(Files.java:700)
                    at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:808)
                    at java.base/java.nio.file.Files.createDirectories(Files.java:753)
                    at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:664)
                    at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:228)
                    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
                    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
                    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
                    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
                    at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
                    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
                    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
                    at java.base/java.lang.Thread.run(Thread.java:1583)
                    at org.jboss.threads.JBossThread.run(JBossThread.java:483)
            
            ERROR: Build failure: Build failed due to errors
                    [error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.nio.file.ReadOnlyFileSystemException
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.createDirectory(ZipFileSystem.java:708)
                    at jdk.zipfs/jdk.nio.zipfs.ZipPath.createDirectory(ZipPath.java:742)
                    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.createDirectory(ZipFileSystemProvider.java:186)
                    at java.base/java.nio.file.Files.createDirectory(Files.java:700)
                    at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:808)
                    at java.base/java.nio.file.Files.createDirectories(Files.java:753)
                    at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:664)
                    at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:228)
                    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
                    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
                    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
                    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
                    at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
                    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
                    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
                    at java.base/java.lang.Thread.run(Thread.java:1583)
                    at org.jboss.threads.JBossThread.run(JBossThread.java:483)
            
            For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
            
            girishG 1 Reply Last reply
            0
            • andreasduerenA andreasdueren

              My understand is, that this was added to the package but enabling it still won't work:

              root@bdb4c70c-3a98-4263-b7b4-06816ea7d6c3:/app/code/bin# ./kc.sh build --features="passkeys"
              WARNING: The following run time options were found, but will be ignored during build time: kc.cache, kc.db-url, kc.db-username, kc.db-password, kc.hostname, kc.hostname-strict, kc.http-enabled, kc.http-host, kc.http-port, kc.proxy-headers, kc.proxy-trusted-addresses
              
              Updating the configuration and installing your custom providers, if any. Please wait.
              2025-02-13 13:16:07,396 INFO  [org.key.com.Profile] (main) Preview features enabled: passkeys:v1
              2025-02-13 13:16:08,305 INFO  [org.key.com.Profile] (main) Preview features enabled: passkeys:v1
              2025-02-13 13:16:08,680 WARN  [io.qua.config] (build-21) Unrecognized configuration key "quarkus.smallrye-health.extensions.enabled" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
              2025-02-13 13:16:09,481 INFO  [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-19) Persistence unit 'keycloak-default': Enforcing Quarkus defaults for dialect 'org.hibernate.dialect.H2Dialect' by automatically setting 'jakarta.persistence.database-product-version=2.3.230'.
              2025-02-13 13:16:09,483 INFO  [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-19) A legacy persistence.xml file is present in the classpath. This file will be used to configure JPA/Hibernate ORM persistence units, and any configuration of the Hibernate ORM extension will be ignored. To ignore persistence.xml files instead, set the configuration property 'quarkus.hibernate-orm.persistence-xml.ignore' to 'true'.
              ERROR: Failed to run 'build' command.
              ERROR: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
                      [error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.nio.file.ReadOnlyFileSystemException
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.createDirectory(ZipFileSystem.java:708)
                      at jdk.zipfs/jdk.nio.zipfs.ZipPath.createDirectory(ZipPath.java:742)
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.createDirectory(ZipFileSystemProvider.java:186)
                      at java.base/java.nio.file.Files.createDirectory(Files.java:700)
                      at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:808)
                      at java.base/java.nio.file.Files.createDirectories(Files.java:753)
                      at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:664)
                      at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:228)
                      at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
                      at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
                      at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
                      at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
                      at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
                      at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
                      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
                      at java.base/java.lang.Thread.run(Thread.java:1583)
                      at org.jboss.threads.JBossThread.run(JBossThread.java:483)
              
              ERROR: Build failure: Build failed due to errors
                      [error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.nio.file.ReadOnlyFileSystemException
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.createDirectory(ZipFileSystem.java:708)
                      at jdk.zipfs/jdk.nio.zipfs.ZipPath.createDirectory(ZipPath.java:742)
                      at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.createDirectory(ZipFileSystemProvider.java:186)
                      at java.base/java.nio.file.Files.createDirectory(Files.java:700)
                      at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:808)
                      at java.base/java.nio.file.Files.createDirectories(Files.java:753)
                      at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:664)
                      at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:228)
                      at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
                      at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
                      at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
                      at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
                      at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
                      at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
                      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
                      at java.base/java.lang.Thread.run(Thread.java:1583)
                      at org.jboss.threads.JBossThread.run(JBossThread.java:483)
              
              For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
              
              girishG Offline
              girishG Offline
              girish
              Staff
              wrote on last edited by
              #9

              @andreasdueren the package builds the final jar with the features enabled, why does one have to build it again?

              andreasduerenA 1 Reply Last reply
              0
              • girishG girish

                @andreasdueren the package builds the final jar with the features enabled, why does one have to build it again?

                andreasduerenA Offline
                andreasduerenA Offline
                andreasdueren
                wrote on last edited by
                #10

                @girish I thought that was necessary because it didn't seem like the feature was installed on my instance. I'll investigate...

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  msbt
                  App Dev
                  wrote on last edited by
                  #11

                  Quick update on this: A customer of mine refined the package and supplied the code to dynamically enable/disable features and also rebuild the executable on restart. Corresponding MR is here.

                  Until now custom providers were not usable because adding them required a rebuild of the app (which wasn't working due to readonly fs), with this patch this should work.

                  cc @girish @nebulon

                  1 Reply Last reply
                  4
                  • girishG Offline
                    girishG Offline
                    girish
                    Staff
                    wrote on last edited by
                    #12

                    @msbt thanks, will take a look!

                    M 1 Reply Last reply
                    1
                    • girishG girish

                      @msbt thanks, will take a look!

                      M Offline
                      M Offline
                      msbt
                      App Dev
                      wrote on last edited by
                      #13

                      @girish a quick test would be setting --metrics-enabled=false to true, you'll see a message that the server is listening on another port

                      1 Reply Last reply
                      0
                      • girishG Offline
                        girishG Offline
                        girish
                        Staff
                        wrote on last edited by
                        #14

                        @msbt mm, so while that MR works, it goes against our philosophy of code being readonly at runtime. Wondering if there are any strong reasons to do this. After all, we can just enable the necessary features in the package. Things like --db etc should not be changed by users (the manifest addons are static)

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          msbt
                          App Dev
                          wrote on last edited by
                          #15

                          @girish the problem is that if you add a new provider, the executable needs a rebuild, else it won't recognize it (as far as I understand it)

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            msbt
                            App Dev
                            wrote on last edited by
                            #16

                            @girish https://www.keycloak.org/server/configuration-provider#_installing_and_uninstalling_a_provider

                            1 Reply Last reply
                            0
                            • girishG Offline
                              girishG Offline
                              girish
                              Staff
                              wrote on last edited by
                              #17

                              @msbt ah ok, this is for providers and not this features thing. So, in your case, there is a custom provider jar file and we have to rebuild keycloak with that?

                              1 Reply Last reply
                              0
                              • girishG Offline
                                girishG Offline
                                girish
                                Staff
                                wrote on last edited by
                                #18

                                mm, I see. Even setting some provider configuration requires a rebuild.. crazy

                                1 Reply Last reply
                                0
                                • G Offline
                                  G Offline
                                  gpichler
                                  wrote on last edited by
                                  #19

                                  Yes it's mainly about providers. Changing features is an additional option. I do not think it would be wise to include all possible providers and features upstream whenever a user requests them.

                                  1 Reply Last reply
                                  1
                                  • S Offline
                                    S Offline
                                    shrey
                                    wrote on last edited by shrey
                                    #20

                                    @girish is there any workaround/solution planned for this (capability to add/modify features)?

                                    Example, i'm trying to add SMS Auth and Webhook Events capabilities, by first adding the .jar files to the providers folder > add/edit the corresponding conf/env variables in keycloak.conf > trigger the build operation. But it simply restarts the container, while removing all of my changes to the .conf file.

                                    1 Reply Last reply
                                    1
                                    • G Offline
                                      G Offline
                                      gpichler
                                      wrote on last edited by
                                      #21

                                      @shrey You could try my patch in the MR https://git.cloudron.io/packages/keycloak-app/-/merge_requests/12 :
                                      Add the .jar in the providers/, add additional commandline flags in env.sh and then simply restart the container.

                                      1 Reply Last reply
                                      1
                                      • girishG Offline
                                        girishG Offline
                                        girish
                                        Staff
                                        wrote on last edited by
                                        #22

                                        @gpichler @shrey we will try to get the MR merged soonish . Just have to double check if there is any other workaround we can use because we really dislike code being writable!

                                        1 Reply Last reply
                                        1
                                        • G Offline
                                          G Offline
                                          gpichler
                                          wrote on last edited by
                                          #23

                                          @girish Out of curiosity: What is your rational for not liking code being writable? Is it a security consideration?

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Bookmarks
                                          • Search