Openremote on RPi 3

Hi,
I am trying to install OR on a Raspberry Pi 3B for 3 days without any success! Till now a manged to install docker on a fresh Bullseye RPI OS 64bit.
Docker and docker compose are running from the pi user account:

pi@rpi-openremote:~ $ docker -v
Docker version 20.10.21, build baeda1f
pi@rpi-openremote:~ $ docker compose version
Docker Compose version v2.12.2
pi@rpi-openremote:~ $ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
7050e35b49f5: Pull complete
Digest: sha256:faa03e786c97f07ef34423fccceeec2398ec8a5759259f94d99078f264e9d7af
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

I retreived images as described here: GitHub - openremote/openremote: 100% open-source IoT Platform - Integrate your devices, create rules, and analyse and visualise your data

docker compose pull

But when I try to create and start containers:

docker compose -p openremote up

It ends unexpectly with the following error:

openremote-manager-1     | Caused by: java.net.SocketTimeoutException: Read timed out
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
openremote-manager-1     |      at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
openremote-manager-1     |      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
openremote-manager-1     |      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
openremote-manager-1     |      at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
openremote-manager-1     |      at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
openremote-manager-1     |      at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
openremote-manager-1     |      at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
openremote-manager-1     |      at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
openremote-manager-1     |      at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
openremote-manager-1     |      at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
openremote-manager-1     |      at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
openremote-manager-1     |      at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
openremote-manager-1     |      at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
openremote-manager-1     |      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
openremote-manager-1     |      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:336)
openremote-manager-1     |      ... 23 more
openremote-manager-1 exited with code 1
container for service "manager" is unhealthy
pi@rpi-openremote:~ $

I suspect an issue with keycloak but I cannot see it in the log. I did many tries, reinstalling everything many times. I am certainly doing something wrong but I don’t know what!

Has anyone had this problem before? Many thanks
Christophe

Hi,
I started one more time from scratch with a new Bullseye RPI OS Desktop 64bit, increase the swap to 1024MB, I hope my SD card will hold up. Now docker compose no longer closes unexpectedly. I am using the following command because I would like to have access to OpenRemote from another PC (192.168.1.23 is the RPi IP):

EXTERNAL_URL=https://192.168.1.23 OR_HOSTNAME=192.168.1.23 docker compose -p openremote up

However when I try to access http://192.168.1.23 from my laptop, I get the following message:
image

And the following error in the log:

openremote-keycloak-1    | 2022-11-28 11:08:33,014 WARN  [org.keycloak.events] (executor-thread-18) type=CLIENT_INFO_ERROR, realmId=fbe93d93-b278-4cca-b980-17f5b02f15c4, clientId=null, userId=null, ipAddress=172.18.0.4, error=invalid_token, reason='Not authorized to view client. Not valid token or client credentials provided.'
openremote-manager-1     | 2022-11-28 11:08:33.024  WARNING [WebService task-2             ] curity.keycloak.KeycloakIdentityProvider : Error loading client 'openremote' for realm 'master' from identity provider, exception from call to identity provider follows
openremote-manager-1     | com.google.common.util.concurrent.UncheckedExecutionException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
openremote-manager-1     |      at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
openremote-manager-1     |      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.getKeycloakDeployment(KeycloakIdentityProvider.java:308)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.lambda$init$0(KeycloakIdentityProvider.java:201)
openremote-manager-1     |      at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89)
openremote-manager-1     |      at org.keycloak.adapters.PreAuthActionsHandler.preflightCors(PreAuthActionsHandler.java:100)
openremote-manager-1     |      at org.keycloak.adapters.PreAuthActionsHandler.handleRequest(PreAuthActionsHandler.java:75)
openremote-manager-1     |      at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:68)
openremote-manager-1     |      at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
openremote-manager-1     |      at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
openremote-manager-1     |      at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
openremote-manager-1     |      at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
openremote-manager-1     |      at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
openremote-manager-1     |      at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
openremote-manager-1     |      at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
openremote-manager-1     |      at java.base/java.lang.Thread.run(Thread.java:833)
openremote-manager-1     | Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:226)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:200)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:62)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:154)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
openremote-manager-1     |      at jdk.proxy2/jdk.proxy2.$Proxy19.getAdapterConfig(Unknown Source)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:378)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:370)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
openremote-manager-1     |      ... 28 more
openremote-keycloak-1    | 2022-11-28 11:08:33,096 WARN  [org.keycloak.events] (executor-thread-18) type=CLIENT_INFO_ERROR, realmId=fbe93d93-b278-4cca-b980-17f5b02f15c4, clientId=null, userId=null, ipAddress=172.18.0.4, error=invalid_token, reason='Not authorized to view client. Not valid token or client credentials provided.'
openremote-manager-1     | 2022-11-28 11:08:33.103  WARNING [WebService task-2             ] curity.keycloak.KeycloakIdentityProvider : Error loading client 'openremote' for realm 'master' from identity provider, exception from call to identity provider follows
openremote-manager-1     | com.google.common.util.concurrent.UncheckedExecutionException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
openremote-manager-1     |      at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
openremote-manager-1     |      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.getKeycloakDeployment(KeycloakIdentityProvider.java:308)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.lambda$init$0(KeycloakIdentityProvider.java:201)
openremote-manager-1     |      at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89)
openremote-manager-1     |      at org.keycloak.adapters.undertow.ServletKeycloakAuthMech.authenticate(ServletKeycloakAuthMech.java:83)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:245)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:268)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.access$100(SecurityContextImpl.java:231)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl.attemptAuthentication(SecurityContextImpl.java:125)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl.authTransition(SecurityContextImpl.java:99)
openremote-manager-1     |      at io.undertow.security.impl.SecurityContextImpl.authenticate(SecurityContextImpl.java:92)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:55)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
openremote-manager-1     |      at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
openremote-manager-1     |      at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69)
openremote-manager-1     |      at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
openremote-manager-1     |      at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
openremote-manager-1     |      at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
openremote-manager-1     |      at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
openremote-manager-1     |      at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
openremote-manager-1     |      at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
openremote-manager-1     |      at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
openremote-manager-1     |      at java.base/java.lang.Thread.run(Thread.java:833)
openremote-manager-1     | Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:226)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:200)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:62)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:154)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
openremote-manager-1     |      at jdk.proxy2/jdk.proxy2.$Proxy19.getAdapterConfig(Unknown Source)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:378)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:370)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
openremote-manager-1     |      ... 41 more
openremote-keycloak-1    | 2022-11-28 11:08:33,183 WARN  [org.keycloak.events] (executor-thread-18) type=CLIENT_INFO_ERROR, realmId=fbe93d93-b278-4cca-b980-17f5b02f15c4, clientId=null, userId=null, ipAddress=172.18.0.4, error=invalid_token, reason='Not authorized to view client. Not valid token or client credentials provided.'
openremote-manager-1     | 2022-11-28 11:08:33.194  WARNING [WebService task-2             ] curity.keycloak.KeycloakIdentityProvider : Error loading client 'openremote' for realm 'master' from identity provider, exception from call to identity provider follows
openremote-manager-1     | com.google.common.util.concurrent.UncheckedExecutionException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
openremote-manager-1     |      at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
openremote-manager-1     |      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.getKeycloakDeployment(KeycloakIdentityProvider.java:308)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.lambda$init$0(KeycloakIdentityProvider.java:201)
openremote-manager-1     |      at org.keycloak.adapters.AdapterDeploymentContext.resolveDeployment(AdapterDeploymentContext.java:89)
openremote-manager-1     |      at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:61)
openremote-manager-1     |      at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
openremote-manager-1     |      at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
openremote-manager-1     |      at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
openremote-manager-1     |      at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69)
openremote-manager-1     |      at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
openremote-manager-1     |      at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
openremote-manager-1     |      at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
openremote-manager-1     |      at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
openremote-manager-1     |      at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
openremote-manager-1     |      at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
openremote-manager-1     |      at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
openremote-manager-1     |      at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
openremote-manager-1     |      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
openremote-manager-1     |      at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
openremote-manager-1     |      at java.base/java.lang.Thread.run(Thread.java:833)
openremote-manager-1     | Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:226)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:200)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:62)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:154)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
openremote-manager-1     |      at jdk.proxy2/jdk.proxy2.$Proxy19.getAdapterConfig(Unknown Source)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:378)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider$1.load(KeycloakIdentityProvider.java:370)
openremote-manager-1     |      at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
openremote-manager-1     |      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
openremote-manager-1     |      ... 37 more
openremote-keycloak-1    | 2022-11-28 11:08:33,740 WARN  [org.keycloak.events] (executor-thread-18) type=LOGIN_ERROR, realmId=fbe93d93-b278-4cca-b980-17f5b02f15c4, clientId=openremote, userId=null, ipAddress=192.168.1.13, error=client_not_found

Note that I am able to log in keycloak with https://192.168.1.23/auth

And as you can see on this screenshot, there is no client ID “openremote”. Is the problem coming from there?

Christophe

Hi,

I can see from your manager logs that it is unable to communicate with Keycloak, the manager communicates with keycloak over REST API and it provisions the openremote client during setup.

Make sure your keycloak service KEYCLOAK_ADMIN_PASSWORD env variable value matches the manager service OR_ADMIN_PASSWORD env variable.

I would recommend deleting all docker volumes as well as something might be incorrect in there from the first failed startup attempt.

Hi Rich, thanks for your input. I guess both KEYCLOAK_ADMIN_PASSWORD and OR_ADMIN_PASSWORD env variables are the default ones (admin/secret), but I will check. I continue to investigate… :confused:

Like I said, you should probably delete the existing docker volumes and let them be re-created again.

Thanks Rich, I will try that in the coming days and keep you in touch

Hi,
I tried again to reinstall from scratch, deleting all existing docker volumes, however I still have the following error when I execute docker compose -p openremote up with this yaml file: https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml

openremote-manager-1     | 2022-12-01 22:54:07.334  INFO    [main                          ] nremote.manager.setup.KeycloakCleanSetup : Deleting all non-master realms
openremote-manager-1     | 2022-12-01 22:54:08.915  INFO    [main                          ] nremote.manager.setup.KeycloakCleanSetup : Deleting all non-master admin users
openremote-manager-1     | 2022-12-01 22:54:09.053  INFO    [main                          ] nremote.manager.setup.KeycloakCleanSetup : Deleting all non default clients
openremote-manager-1     | 2022-12-01 22:54:19.510  SEVERE  [main                          ] org.openremote.container.Container       : >>> Runtime container startup failed
openremote-manager-1     | java.lang.RuntimeException: Error setting up application
openremote-manager-1     |      at org.openremote.manager.setup.SetupService.start(SetupService.java:110)
openremote-manager-1     |      at org.openremote.container.Container.start(Container.java:168)
openremote-manager-1     |      at org.openremote.container.Container.startBackground(Container.java:209)
openremote-manager-1     |      at org.openremote.manager.Main.main(Main.java:31)
openremote-manager-1     | Caused by: javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: java.net.SocketTimeoutException: Read timed out
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:341)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:447)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:64)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.post(ClientInvocationBuilder.java:227)
openremote-manager-1     |      at org.openremote.container.web.OAuthFilter.requestToken(OAuthFilter.java:141)
openremote-manager-1     |      at org.openremote.container.web.OAuthFilter.updateToken(OAuthFilter.java:102)
openremote-manager-1     |      at org.openremote.container.web.OAuthFilter.getAccessToken(OAuthFilter.java:77)
openremote-manager-1     |      at org.openremote.container.web.OAuthFilter.getAuthHeader(OAuthFilter.java:63)
openremote-manager-1     |      at org.openremote.container.web.OAuthFilter.filter(OAuthFilter.java:152)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest(ClientInvocation.java:583)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:444)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
openremote-manager-1     |      at jdk.proxy2/jdk.proxy2.$Proxy141.findAll(Unknown Source)
openremote-manager-1     |      at org.openremote.manager.security.ManagerKeycloakIdentityProvider.lambda$getClients$67(ManagerKeycloakIdentityProvider.java:1035)
openremote-manager-1     |      at org.openremote.container.security.keycloak.KeycloakIdentityProvider.getRealms(KeycloakIdentityProvider.java:259)
openremote-manager-1     |      at org.openremote.manager.security.ManagerKeycloakIdentityProvider.getClients(ManagerKeycloakIdentityProvider.java:1035)
openremote-manager-1     |      at org.openremote.manager.setup.KeycloakCleanSetup.doClean(KeycloakCleanSetup.java:69)
openremote-manager-1     |      at org.openremote.manager.setup.KeycloakCleanSetup.onStart(KeycloakCleanSetup.java:47)
openremote-manager-1     |      at org.openremote.manager.setup.SetupService.start(SetupService.java:105)
openremote-manager-1     |      ... 3 more
openremote-manager-1     | Caused by: java.net.SocketTimeoutException: Read timed out
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
openremote-manager-1     |      at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
openremote-manager-1     |      at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
openremote-manager-1     |      at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
openremote-manager-1     |      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
openremote-manager-1     |      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
openremote-manager-1     |      at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
openremote-manager-1     |      at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
openremote-manager-1     |      at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
openremote-manager-1     |      at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
openremote-manager-1     |      at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
openremote-manager-1     |      at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
openremote-manager-1     |      at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
openremote-manager-1     |      at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
openremote-manager-1     |      at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
openremote-manager-1     |      at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
openremote-manager-1     |      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
openremote-manager-1     |      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
openremote-manager-1     |      at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:336)
openremote-manager-1     |      ... 23 more
container for service "manager" is unhealthy
pi@rpi-openremote:~ $

Any advice would be great. Thanks.
Christophe

Hi, just an update to share my findings. I am not a docker expert, but I guess Raspberry Pi3 is not powerful enough to OR3 containers. As I explained, docker-compose fails with a time out error at the first execution. I then tried to re-execute docker-compose a second time after this first fail, it was successful but it was not possible to login https://localhost (client not found). However it was possible to login Keycloak https://localhost/auth with admin/secret, that allows me to see that openremote client was not created in Keycloak. I tried to manually create it but it didn’t fix the issue. As a last remedy, I installed OR3 in a Google Cloud engine instance, then I backed up the Posgres database and restored it in the RPi with the following procedure: Developer Guide: Useful commands and queries · openremote/openremote Wiki · GitHub
And it finaly works…
Hope it could help someone

RPi4 with 1GB RAM works quite nicely