Report an issue

Similar



Jordy Kuhne
ย ย ย 

NullPointerException

Hi,
I tried to deploy using the docker compose example, but then I get this error:
 NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=ja โ”‚
โ”‚ java.lang.NullPointerException                                                                                                                                                      โ”‚
โ”‚     at java.base/jdk.internal.platform.cgroupv2.CgroupV2Subsystem.getInstance(CgroupV2Subsystem.java:81)                                                                            โ”‚
โ”‚     at java.base/jdk.internal.platform.CgroupSubsystemFactory.create(CgroupSubsystemFactory.java:113)                                                                               โ”‚
โ”‚     at java.base/jdk.internal.platform.CgroupMetrics.getInstance(CgroupMetrics.java:167)                                                                                            โ”‚
โ”‚     at java.base/jdk.internal.platform.SystemMetrics.instance(SystemMetrics.java:29)                                                                                                โ”‚
โ”‚     at java.base/jdk.internal.platform.Metrics.systemMetrics(Metrics.java:58)                                                                                                       โ”‚
โ”‚     at java.base/jdk.internal.platform.Container.metrics(Container.java:43)                                                                                                         โ”‚
โ”‚     at jdk.management/com.sun.management.internal.OperatingSystemImpl.<init>(OperatingSystemImpl.java:182)                                                                          โ”‚
โ”‚     at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl.getOperatingSystemMXBean(PlatformMBeanProviderImpl.java:281)                                            โ”‚
โ”‚     at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl$3.nameToMBeanMap(PlatformMBeanProviderImpl.java:198)                                                    โ”‚
โ”‚     at java.management/java.lang.management.ManagementFactory.lambda$getPlatformMBeanServer$0(ManagementFactory.java:487)                                                           โ”‚
โ”‚     at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)                                                                                          โ”‚
โ”‚     at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)                                                                                          โ”‚
โ”‚     at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1693)                                                                                             โ”‚
โ”‚     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)                                                                                              โ”‚
โ”‚     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)                                                                                       โ”‚
โ”‚     at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)                                                                                      โ”‚
โ”‚     at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)                                                                                โ”‚
โ”‚     at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)                                                                                              โ”‚
โ”‚     at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)                                                                                             โ”‚
โ”‚     at java.management/java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:488)                                                                    โ”‚
โ”‚     at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:475)                                                     โ”‚
โ”‚     at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)                                                                                                     โ”‚
โ”‚     at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)                                                                                                     โ”‚
โ”‚ Exception thrown by the agent : java.lang.NullPointerException
This seems to be because openjdk has a bug with linux kernel 6.12 and beyond. This should be fixed with the latest version of openjdk.
Is it possible to update the docker images to the latest version of openjdk?
Im on Docker version 27.5.1, build 27.5.1-0ubuntu3
I use ClearFlask on:
  • [x] Self-hosted (Own domain)
  • [ ] Cloud (clearflask.com)
  • [ ] Haven't tried (yet)
My financial contributions to ClearFlask:
  • [x] I use a free Plan
  • [ ] Thinking about it
  • [ ] Monthly / Yearly Plan
  • [ ] Lifetime Plan
ย 1
Accepted
Romain MUNIER
ย ย ย 

Can't add Teammates to my project

Hello,
I'm desperately trying to add a co-worker to my project and dashboard but I get this error (logs are also attached.
Do you have any idea about the source of the problem?
Thanks in advance for your reply.
10:15:18.145 [http-nio-8080-exec-8] WARN  c.s.c.w.f.ApiExceptionMapperFilter - Uncaught exception
clearflask-server-1   | javax.servlet.ServletException: java.util.NoSuchElementException: No value present
clearflask-server-1   | 	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:412)
clearflask-server-1   | 	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349)
clearflask-server-1   | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379)
clearflask-server-1   | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)
clearflask-server-1   | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 	at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 	at com.smotana.clearflask.web.filter.HttpRedirectorFilter.doFilter(HttpRedirectorFilter.java:52)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 	at com.smotana.clearflask.web.filter.ApiExceptionMapperFilter.doFilter(ApiExceptionMapperFilter.java:48)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
clearflask-server-1   | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
clearflask-server-1   | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
clearflask-server-1   | 	at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:571)
clearflask-server-1   | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
clearflask-server-1   | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
clearflask-server-1   | 	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
clearflask-server-1   | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
clearflask-server-1   | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
clearflask-server-1   | 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
clearflask-server-1   | 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
clearflask-server-1   | 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
clearflask-server-1   | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1693)
clearflask-server-1   | 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
clearflask-server-1   | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
clearflask-server-1   | 	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
clearflask-server-1   | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
clearflask-server-1   | 	at java.base/java.lang.Thread.run(Thread.java:829)
clearflask-server-1   | Caused by: java.util.NoSuchElementException: No value present
clearflask-server-1   | 	at java.base/java.util.Optional.get(Optional.java:148)
clearflask-server-1   | 	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
clearflask-server-1   | 	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
clearflask-server-1   | 	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
clearflask-server-1   | 	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
clearflask-server-1   | 	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
clearflask-server-1   | 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
clearflask-server-1   | 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
clearflask-server-1   | 	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
clearflask-server-1   | 	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
clearflask-server-1   | 	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
clearflask-server-1   | 	at com.smotana.clearflask.web.resource.ProjectResource.projectAdminsListAdmin(ProjectResource.java:378)
clearflask-server-1   | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
clearflask-server-1   | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
clearflask-server-1   | 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
clearflask-server-1   | 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
clearflask-server-1   | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
clearflask-server-1   | 	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
clearflask-server-1   | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
clearflask-server-1   | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
clearflask-server-1   | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
clearflask-server-1   | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
clearflask-server-1   | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
clearflask-server-1   | 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
clearflask-server-1   | 	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
clearflask-server-1   | 	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
clearflask-server-1   | 	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397)
clearflask-server-1   | 	... 36 common frames omitted
clearflask-server-1   | 26-Feb-2025 10:15:18.150 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [api] in context with path [] threw exception [java.util.NoSuchElementException: No value present] with root cause
clearflask-server-1   | 	java.util.NoSuchElementException: No value present
clearflask-server-1   | 		at java.base/java.util.Optional.get(Optional.java:148)
clearflask-server-1   | 		at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
clearflask-server-1   | 		at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
clearflask-server-1   | 		at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
clearflask-server-1   | 		at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
clearflask-server-1   | 		at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
clearflask-server-1   | 		at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
clearflask-server-1   | 		at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
clearflask-server-1   | 		at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
clearflask-server-1   | 		at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
clearflask-server-1   | 		at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
clearflask-server-1   | 		at com.smotana.clearflask.web.resource.ProjectResource.projectAdminsListAdmin(ProjectResource.java:378)
clearflask-server-1   | 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
clearflask-server-1   | 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
clearflask-server-1   | 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
clearflask-server-1   | 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
clearflask-server-1   | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
clearflask-server-1   | 		at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
clearflask-server-1   | 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
clearflask-server-1   | 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
clearflask-server-1   | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
clearflask-server-1   | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
clearflask-server-1   | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
clearflask-server-1   | 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
clearflask-server-1   | 		at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
clearflask-server-1   | 		at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
clearflask-server-1   | 		at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397)
clearflask-server-1   | 		at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349)
clearflask-server-1   | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379)
clearflask-server-1   | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)
clearflask-server-1   | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 		at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 		at com.smotana.clearflask.web.filter.HttpRedirectorFilter.doFilter(HttpRedirectorFilter.java:52)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 		at com.smotana.clearflask.web.filter.ApiExceptionMapperFilter.doFilter(ApiExceptionMapperFilter.java:48)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   | 		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
clearflask-server-1   | 		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
clearflask-server-1   | 		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
clearflask-server-1   | 		at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:571)
clearflask-server-1   | 		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
clearflask-server-1   | 		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
clearflask-server-1   | 		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
clearflask-server-1   | 		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
clearflask-server-1   | 		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
clearflask-server-1   | 		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
clearflask-server-1   | 		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
clearflask-server-1   | 		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
clearflask-server-1   | 		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1693)
clearflask-server-1   | 		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
clearflask-server-1   | 		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
clearflask-server-1   | 		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
clearflask-server-1   | 		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
clearflask-server-1   | 		at java.base/java.lang.Thread.run(Thread.java:829)
I use ClearFlask on:
  • [X] Self-hosted (Own domain)
  • [ ] Cloud (clearflask.com)
  • [ ] Haven't tried (yet)
My financial contributions to ClearFlask:
  • [X] I use a free Plan
  • [x] Thinking about it
  • [ ] Monthly / Yearly Plan
  • [ ] Lifetime Plan
ย 6
Accepted
ไป™ๅ›ๅพก
ย ย ย 

I hope to use reverse proxy to deploy the website, but I don't know how to configure it

Describe your issue here
I use ClearFlask on:
  • [x] Self-hosted (Own domain)
  • [ ] Cloud (clearflask.com)
  • [ ] Haven't tried (yet)
My financial contributions to ClearFlask:
  • [x] I use a free Plan
  • [ ] Thinking about it
  • [ ] Monthly / Yearly Plan
  • [ ] Lifetime Plan
If I want to reverse proxy a domain name and use a reverse proxy server to implement HTTPS, how should I fill out the configuration file? Should I modify some incorrect configurations? Please help me
my config:
{
    "connectToken": "xxx",
    "disableAutoFetchCertificate": true,
    "forceRedirectHttpToHttps": false,
    "parentDomain": "do.xx.com",
    "apiBasePath": "http://localhost:8080"
}

connet error: Oops, something went wrong
Error: connect ECONNREFUSED 127.0.0.1:8080
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 8080
}
Type in your domain
com.smotana.clearflask.web.Application$Config.domain=do.xx.com
## SPDX-FileCopyrightText: 2019-2022 Matus Faro <matus@smotana.com>
## SPDX-License-Identifier: Apache-2.0
version: '3.8'
volumes:
  data:
    driver: local
services:
  clearflask-connect:
    image: cf-connet
    depends_on:
      - clearflask-server
    ports:
      - 9080:9080
      - 9443:9443
    environment:
      - NODE_ENV=production
      - ENV=selfhost
      - CLEARFLASK_CREATE_CONNECT_CONFIG_IF_MISSING=1
    volumes:
      - ./connect:/opt/clearflask/
  clearflask-server:
    image: cf-server
    ports:
      - 8080:8080
      # JMX
      - 9950:9950
      - 9951:9951
    environment:
      - CLEARFLASK_ENVIRONMENT=PRODUCTION_SELF_HOST
      - CLEARFLASK_CREATE_SERVER_CONFIG_IF_MISSING=1
    volumes:
      - ./server:/opt/clearflask/
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8080/api/health" ]
      interval: 5s
      timeout: 15s
      retries: 2
  # MySQL (enabled by default as an alternative to ElasticSearch)
  mysql-db:
    image: sql-5.7
    platform: linux/amd64
    command:
      - 'mysqld'
      - '--port=3306'
      - '--sql-mode=IGNORE_SPACE'
      - '--explicit-defaults-for-timestamp'
      - '--secure-file-priv=/tmp'
    volumes:
      - ./data/mysql:/var/lib/mysql
    ports:
      - 13306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=clearflask
  localstack:
    profiles:
      - with-deps
    image: localstack
    expose:
      - 4566
      - 4571
    environment:
      - DEFAULT_REGION=us-east-1
      - LOCALSTACK_HOSTNAME=localstack
      - HOSTNAME_EXTERNAL=localstack
      - SERVICES=dynamodb,ses,s3
      - LS_LOG=warn
      - START_WEB=0
      - USE_SSL=0
      - FORCE_NONINTERACTIVE=true
      - DATA_DIR=/tmp/localstack/data
      - LEGACY_PERSISTENCE=1
    volumes:
      - ./data/localstack:/tmp/localstack
ย 4
Accepted
Igor Mihaljko
ย ย ย 

Can't create initial super admin account

I am trying to self-host ClearFlask on my own environment
My docker compose file looks like this (using real DynamoDB, S3 and SES)
## SPDX-FileCopyrightText: 2019-2022 Matus Faro <matus@smotana.com>
## SPDX-License-Identifier: Apache-2.0
volumes:
  data:
    driver: local
services:
  clearflask-connect:
    image: ghcr.io/clearflask/clearflask-connect:latest
    depends_on:
      - clearflask-server
    ports:
      - 19080:9080
      - 19443:9443
    environment:
      - NODE_ENV=production
      - ENV=selfhost
      - CLEARFLASK_CREATE_CONNECT_CONFIG_IF_MISSING=1
    volumes:
      - ./connect:/opt/clearflask/
  clearflask-server:
    image: ghcr.io/clearflask/clearflask-server:latest
    ports:
      - 18080:8080
      # JMX
      - 9950:9950
      - 9951:9951
    environment:
      - CLEARFLASK_ENVIRONMENT=PRODUCTION_SELF_HOST
      - CLEARFLASK_CREATE_SERVER_CONFIG_IF_MISSING=1
    volumes:
      - ./server:/opt/clearflask/
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:18080/api/health" ]
      interval: 5s
      timeout: 15s
      retries: 2
  # MySQL (enabled by default as an alternative to ElasticSearch)
  mysql-db:
    image: mysql:5.7@sha256:2c23f254c6b9444ecda9ba36051a9800e8934a2f5828ecc8730531db8142af83
    platform: linux/amd64
    command:
      - 'mysqld'
      - '--port=3306'
      - '--sql-mode=IGNORE_SPACE'
      - '--explicit-defaults-for-timestamp'
      - '--secure-file-priv=/tmp'
    volumes:
      - ./data/mysql:/var/lib/mysql
    ports:
      - 13306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=clearflask
  # ElasticSearch (disabled by default)
  #  elasticsearch:
  #    profiles:
  #      - with-deps
  #    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
  #    expose:
  #      - 9200
  #    environment:
  #      - ES_JAVA_OPTS=-Xms2g -Xmx2g
  #      - discovery.type=single-node
  #    mem_limit: 4g
  #    volumes:
  #      - ./data/elasticsearch:/usr/share/elasticsearch/data
  # For DynamoDB, S3 and SES alternative

My connect.config.json is as follows (domain is redacted)
{
    "connectToken": "7cb1e1c26f5d4705a213529257d081c6",
    "disableAutoFetchCertificate": true,
    "forceRedirectHttpToHttps": true,
    "parentDomain": "feedback.redacted.com",
    "apiBasePath": "http://api.feedback.redacted.net:18080"
}
My config-selfhost.cfg is as follows (some values are redacted)
com.smotana.clearflask.security.limiter.challenge.CaptchaChallenger$Config.enabled=false
com.smotana.clearflask.store.dynamo.DefaultDynamoDbProvider$Config.productionRegion=eu-central-1
com.smotana.clearflask.store.mysql.DefaultMysqlProvider$Config.host=mysql-db
com.smotana.clearflask.store.mysql.DefaultMysqlProvider$Config.user=root
com.smotana.clearflask.store.mysql.DefaultMysqlProvider$Config.pass=clearflask
com.smotana.clearflask.core.push.provider.BrowserPushServiceImpl$Config.publicKey=redacted
com.smotana.clearflask.core.push.provider.BrowserPushServiceImpl$Config.privateKey=redacted
com.smotana.clearflask.util.DefaultServerSecret$Config.sharedKey:cursor=redacted
com.smotana.clearflask.store.impl.DynamoElasticUserStore$Config.tokenSignerPrivKey=redacted
com.smotana.clearflask.web.Application$Config.domain=feedback.redacted.com
com.smotana.clearflask.web.Application$Config.defaultSearchEngine=READWRITE_MYSQL
com.smotana.clearflask.web.security.AuthCookieImpl$Config.authCookieSecure=true
com.smotana.clearflask.web.Application$Config.startupWaitUntilDeps=true
com.smotana.clearflask.web.Application$Config.createIndexesOnStartup=true
com.smotana.clearflask.security.ClearFlaskSso$Config.secretKey=439E5B12-F4D6-4BEF-9890-2CEEEFA67A8D
com.smotana.clearflask.web.security.SuperAdminPredicate$Config.superAdminEmailRegex=^admin@localhost$
com.smotana.clearflask.web.resource.AccountResource$Config.signupEnabled=true
com.smotana.clearflask.web.security.AuthenticationFilter$Config.connectToken=7cb1e1c26f5d4705a213529257d081c6
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.useService=ses
com.smotana.clearflask.core.email.AmazonSimpleEmailServiceProvider$Config.region=eu-central-1
com.smotana.clearflask.core.email.AmazonSimpleEmailServiceProvider$Config.serviceEndpoint=
com.smotana.clearflask.store.s3.DefaultS3ClientProvider$Config.productionRegion=eu-central-1
com.smotana.clearflask.store.impl.S3ContentStore$Config.hostname=clearflask-s3.s3.amazonaws.com
com.smotana.clearflask.store.impl.S3ContentStore$Config.bucketName=clearflask-s3
com.smotana.clearflask.store.impl.S3ContentStore$Config.scheme=https
com.smotana.clearflask.store.impl.S3ContentStore$Config.createBucket=false
com.smotana.clearflask.store.impl.S3ContentStore$Config.proxyEnabled=false
com.smotana.clearflask.store.ConfigAwsCredentialsProvider$Config.awsAccessKeyId=redacted
com.smotana.clearflask.store.ConfigAwsCredentialsProvider$Config.awsSecretKey=redacted
I also am using Apache as a reverse proxy for both main site (frontend) and API (backend)
My Apache configurations are as follows
Backend
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

ProxyPass / http://localhost:18080/
ProxyPassReverse / http://localhost:18080/
<Proxy *>
    allow from all
</Proxy>
Frontend
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}

#ProxyPreserveHost On
ProxyPass / http://localhost:19080/
ProxyPassReverse / http://localhost:19080/
DynamoDB is correctly configured because I can see that when I start the docker compose, a table is added to it I know for sure that SES is also working because I have tested it manually outside this environment For S3 I can't be sure because I haven't got yet to the point where I could successfully log in to the ClearFlask dashboard
I can start docker compose, apparently, without any issues. This is what I get as a final log entry when the docker compose is started
clearflask-server-1   | 20-Nov-2024 15:28:22.976 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [27,115] ms
clearflask-server-1   | 20-Nov-2024 15:28:22.981 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
clearflask-server-1   | 20-Nov-2024 15:28:22.997 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 27223 ms
As soon as I try to create an admin account, I get this in the logs
clearflask-connect-1  | react-i18next:: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.
clearflask-server-1   | 20-Nov-2024 15:30:53.969 SEVERE [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [api] in context with path [] threw exception [com.smotana.clearflask.web.ApiException: 404: Project does not exist or was deleted by owner] with root cause
clearflask-server-1   |         com.smotana.clearflask.web.ApiException: 404: Project does not exist or was deleted by owner
clearflask-server-1   |                 at com.smotana.clearflask.web.resource.ProjectResource.lambda$configBindSlug$0(ProjectResource.java:158)
clearflask-server-1   |                 at java.base/java.util.Optional.orElseThrow(Optional.java:408)
clearflask-server-1   |                 at com.smotana.clearflask.web.resource.ProjectResource.configBindSlug(ProjectResource.java:158)
clearflask-server-1   |                 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
clearflask-server-1   |                 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
clearflask-server-1   |                 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
clearflask-server-1   |                 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
clearflask-server-1   |                 at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
clearflask-server-1   |                 at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
clearflask-server-1   |                 at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
clearflask-server-1   |                 at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
clearflask-server-1   |                 at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
clearflask-server-1   |                 at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
clearflask-server-1   |                 at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
clearflask-server-1   |                 at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
clearflask-server-1   |                 at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
clearflask-server-1   |                 at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
clearflask-server-1   |                 at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)
clearflask-server-1   |                 at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
clearflask-server-1   |                 at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
clearflask-server-1   |                 at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
clearflask-server-1   |                 at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   |                 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   |                 at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   |                 at com.smotana.clearflask.web.filter.HttpRedirectorFilter.doFilter(HttpRedirectorFilter.java:52)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   |                 at com.smotana.clearflask.web.filter.ApiExceptionMapperFilter.doFilter(ApiExceptionMapperFilter.java:48)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
clearflask-server-1   |                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
clearflask-server-1   |                 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
clearflask-server-1   |                 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
clearflask-server-1   |                 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
clearflask-server-1   |                 at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:571)
clearflask-server-1   |                 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
clearflask-server-1   |                 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
clearflask-server-1   |                 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
clearflask-server-1   |                 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
clearflask-server-1   |                 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
clearflask-server-1   |                 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
clearflask-server-1   |                 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
clearflask-server-1   |                 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
clearflask-server-1   |                 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1693)
clearflask-server-1   |                 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
clearflask-server-1   |                 at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
clearflask-server-1   |                 at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
clearflask-server-1   |                 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
clearflask-server-1   |                 at java.base/java.lang.Thread.run(Thread.java:829)
I have no idea what I am doing wrong and how to solve this
Maybe someone can get a glimps on this and see where is my mistake?
I use ClearFlask on:
  • [X] Self-hosted (Own domain)
  • [ ] Cloud (clearflask.com)
  • [ ] Haven't tried (yet)
My financial contributions to ClearFlask:
  • [X] I use a free Plan for now because I am evaluating options
  • [ ] Thinking about it
  • [ ] Monthly / Yearly Plan
  • [ ] Lifetime Plan
ย 3
Considering
sautner
ย ย ย 

No image running self-host behind reverse proxy

We are evaluating using ClearFlask running self-host behind nginx reverse proxy.
Images are uploaded to localstack, but are not rendered after. There is only this error on logs:
INFO  c.s.c.web.security.Sanitizer - HTML Policy violation(s) for proapplications-aom comment id testing--yovks, element-attribute violations(s): {img=[]}
It's possible to use localstack (S3) without exposing this service? Considering S3ContentStore$Config.proxyEnabled=true

connect.config.json

Changed values
    "disableAutoFetchCertificate": true,
    "forceRedirectHttpToHttps": true,
    "parentDomain": "domain.site",

config-selfhost.cfg

Changed values
com.smotana.clearflask.web.Application$Config.domain=domain.site
com.smotana.clearflask.web.security.AuthCookieImpl$Config.authCookieSecure=true
Unchanged values
# S3 object storage or equivalent
# If using real S3, comment out serviceEndpoint, signingRegion, proxyEnabled and proxyResolveTo
com.smotana.clearflask.store.s3.DefaultS3ClientProvider$Config.serviceEndpoint=http://s3.localhost.localstack.cloud:4566
com.smotana.clearflask.store.s3.DefaultS3ClientProvider$Config.signingRegion=us-east-1
com.smotana.clearflask.store.s3.DefaultS3ClientProvider$Config.dnsResolverTo=localstack
com.smotana.clearflask.store.s3.DefaultS3ClientProvider$Config.productionRegion=us-east-1
# For real S3, use this value as hostname: <bucket_name>.s3.amazonaws.com
com.smotana.clearflask.store.impl.S3ContentStore$Config.hostname=local-upload.s3.localhost.localstack.cloud:4566
com.smotana.clearflask.store.impl.S3ContentStore$Config.bucketName=local-upload
com.smotana.clearflask.store.impl.S3ContentStore$Config.scheme=http
com.smotana.clearflask.store.impl.S3ContentStore$Config.createBucket=true
# Set to true if your S3 service is publicly accessible for pre-signed urls
# as in, if you are using real S3, set to false, if you are using localstack, set to true
com.smotana.clearflask.store.impl.S3ContentStore$Config.proxyEnabled=true
com.smotana.clearflask.store.impl.S3ContentStore$Config.proxyResolveTo=localstack

docker-compose.yml

Changed values
services:
  clearflask-connect:
    ports:
      - 127.0.0.1:9080:9080
      - 127.0.0.1:9443:9443
Localstack are with default settings:
   image: localstack/localstack:0.14.3
    expose:
      - 4566
      - 4571
    environment:
      - DEFAULT_REGION=us-east-1
      - LOCALSTACK_HOSTNAME=localstack
      - HOSTNAME_EXTERNAL=localstack
      - SERVICES=dynamodb,ses,s3
      - LS_LOG=warn
      - START_WEB=0
      - USE_SSL=0
      - FORCE_NONINTERACTIVE=true
      - DATA_DIR=/tmp/localstack/data
      - LEGACY_PERSISTENCE=1
    volumes:
      - ./data/localstack:/tmp/localstack

nginx config

    location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_pass http://127.0.0.1:9080;
    }

I use ClearFlask on:
  • [x] Self-hosted (Own domain)
  • [ ] Cloud (clearflask.com)
  • [ ] Haven't tried (yet)
My financial contributions to ClearFlask:
  • [x] I use a free Plan
  • [ ] Thinking about it
  • [ ] Monthly / Yearly Plan
  • [ ] Lifetime Plan
I'd be willing to implement this feature:
  • [x] Yes
ย 2ย ย ย ย 9
Accepted
Anon7614a
ย ย ย 

Problems of managing users and admins

I found there're might be two systems/mechanisms of user management. One is signing up from xxxx.com/login page and this will by default create a new project with that user and make him as owner. Another is with OAuth/SSO or manually added by the owner, which belongs to current project.
My requirement is, there should be only one project, it has one owner and multiple admins, other normal users should create there account with OAuth. I tested and found following problems:
  1. Cannot directly add existing account as project admin (in the teammate page), I have to send invitation email to the corresponding email address of that user, and he has to do sign up again from the invitation url, he cannot use the existing OAuth created account to login to dashboard as this account has no way to set password (maybe the real reason is there're two different accounts, described below). But because I want only one project, it is better to not allow signing up after initializing the first project.
  2. Actually when signing up the email being input do not really need to be the same as the address which received the invitation, so it seems the user owns two accounts now, one for dashbord admin of the project, another for frontend usage of the same project. Even though the user input same email as his frontend OAuth account, these are still two different accounts, and the admin user has to remember yet another password. The good news is if he use same email, then jumping from dashboard to frontend will automatically use the corresponding frontend account.
  3. After adding new user in the dashboard (ADD button in xxxx.com/dashbord/users), it cannot login from the xxxx.com/login entry and it always says email or password incorrect. It seems this is just a frontend account so cannot login from backend. However there's no way to directly login a frontend account using email and password, so I don't know what's the meaning of manually adding users in the dashboard, is it just used for on-behalf things? Another bug is after deleting this manually created user from dashboard and trying to sign up using the same email, it says the email already exists, so it looks like it's not really deleted, but still exists in database.
ย 3
Considering
Nick Douma
ย ย ย 

SMTP send error using self-host option

Using the self-host docker-compose file and the latest clearflask-server image (with digest ed1f3a04bec9), and an external SMTP server configured as such:
# Select generic SMTP ('smtp') or Amazon SES ('ses')
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.useService=smtp
# For SMTP
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpStrategy=SMTP
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpHost=outgoing.server.net
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPort=587
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpUser=user@tld.com
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPassword=xxxx
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.emailDisplayName=Clearflask
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailLocalPart=noreply
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailDomainOverride=company.com
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.bccEmails=nick.douma@company.com
I seem to get an error about building the email body, a class cast exception from multipart_mixed to a DataContentHandler:
clearflask-server_1   | 14:29:57.645 [pool-28-thread-1] ERROR o.s.i.util.concurrent.NamedRunnable - Failed to run sendMail process
clearflask-server_1   | org.simplejavamail.mailer.internal.MailerException: Failed to send email [ID: '<1617344838.3.1706797737574@21f994d5da02>'], reason: Unknown error
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.handleException(SendMailClosure.java:85)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:76)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.AbstractProxyServerSyncingClosure.run(AbstractProxyServerSyncingClosure.java:56)
clearflask-server_1   | 	at org.simplejavamail.internal.util.concurrent.NamedRunnable.run(NamedRunnable.java:40)
clearflask-server_1   | 	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
clearflask-server_1   | 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
clearflask-server_1   | 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
clearflask-server_1   | 	at java.base/java.lang.Thread.run(Thread.java:829)
clearflask-server_1   | Caused by: java.lang.ClassCastException: class com.sun.mail.handlers.multipart_mixed cannot be cast to class jakarta.activation.DataContentHandler (com.sun.mail.handlers.multipart_mixed and jakarta.activation.DataContentHandler are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @2e237e39)
clearflask-server_1   | 	at jakarta.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:620)
clearflask-server_1   | 	at jakarta.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:591)
clearflask-server_1   | 	at jakarta.activation.DataHandler.getDataContentHandler(DataHandler.java:591)
clearflask-server_1   | 	at jakarta.activation.DataHandler.writeTo(DataHandler.java:290)
clearflask-server_1   | 	at jakarta.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1683)
clearflask-server_1   | 	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1911)
clearflask-server_1   | 	at org.eclipse.angus.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1305)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.lambda$sendMessage$0(TransportRunner.java:61)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:81)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.sendMessage(TransportRunner.java:56)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:69)
clearflask-server_1   | 	... 6 common frames omitted
clearflask-server_1   | 	Suppressed: jakarta.mail.MessagingException: Exception reading response
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2509)
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.close(SMTPTransport.java:1401)
clearflask-server_1   | 		at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:82)
clearflask-server_1   | 		... 8 common frames omitted
clearflask-server_1   | 	Caused by: java.net.SocketTimeoutException: Read timed out
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.socketRead0(Native Method)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1454)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1065)
clearflask-server_1   | 		at org.eclipse.angus.mail.util.TraceInputStream.read(TraceInputStream.java:107)
clearflask-server_1   | 		at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
clearflask-server_1   | 		at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:271)
clearflask-server_1   | 		at org.eclipse.angus.mail.util.LineInputStream.readLine(LineInputStream.java:104)
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2489)
clearflask-server_1   | 		... 10 common frames omitted
I've tried all non-TLS and TLS mechanisms supported. When dumping the packets, it seems that the connection goes correctly until the STARTTLS command, and after that nothing is else is sent until the remote server closes the connection. Seems like something goes wrong with building the sender/recipient, or the email body.
Am I configuring this wrong, or is this a bug?
ย 5
Accepted
Anon5b743
ย ย ย 

SMTP Connection

I've just installed a docker based instance and am encountering issues configuring SMTP. This instance is from the latest docker containers ( ghcr.io/clearflask/clearflask-server:latest ) or rather a copy from yesterday.
My configuration:
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpStrategy=SMTP_TLS
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpHost=smtp.sparkpostmail.com
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPort=587
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpUser=SMTP_Injection
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPassword=redacted
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.emailDisplayName=displayname
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailLocalPart=noreply
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailDomainOverride=redacted.com

the container itself (clearflask-server) can connect (have tested with nmap) on the cli. However when the web app tries to connect I see logs such as:
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.sparkpostmail.com, port: 587 Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
The server requires TLSv1.2 which is not mentioned as disabled in the java.security file and it seems likely this is the correct configuration and a "workable" situation.
openssl s_client -connect smtp.sparkpostmail.com:587 -starttls smtp
Server response snippit:
-----END CERTIFICATE----- subject=CN = *.sparkpostmail.com
issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = RapidSSL TLS RSA CA G1
No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA Server Temp Key: ECDH, P-256, 256 bits
SSL handshake has read 4579 bytes and written 473 bytes Verification: OK
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384
An item I see that may be an issue is the wildcard certificate?
I have followed a suggestion from a previous query on this topic and added the following env var to the server container, however am not seeing any related logs.
`JAVA_OPTS="-Djavax.net.debug=ssl"`
I have also followed the email providers suggestions, no joy: https://support.sparkpost.com/docs/faq/smtp-connection-problems
Can anyone provide some additional suggestions for debugging?
ย 3ย ย ย ย 7
Accepted