Enable to send ongoing requests from metabase server behind proxy

Hello everybody.
My metabase application is allocated on a server behind proxy.
The problem is that the server is not able to establish websocker connection with slack messeging server.
Logs from the service:

io.netty.channel.ConnectTimeoutException: connection timed out: cerberus-xxxx.lb.slack-msgs.com/35.154.102.71:443
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:267)
	at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
	at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:125)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Unknown Source)
08-13 03:24:45 e[1mERROR metabot.websockete[0m :: Websocker connection error:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
	at java.base/java.security.cert.CertPathBuilder.build(Unknown Source)
	at java.base/sun.security.validator.PKIXValidator.doBuild(Unknown Source)
	at java.base/sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
	at java.base/sun.security.validator.Validator.validate(Unknown Source)
	at java.base/sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
	at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
	at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
	at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.upgrade(DefaultHttpClientConnectionOperator.java:193)
	at org.apache.http.impl.conn.BasicHttpClientConnectionManager.upgrade(BasicHttpClientConnectionManager.java:337)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:416)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at clj_http.core$request.invokeStatic(core.clj:626)
	at clj_http.core$request.invoke(core.clj:554)
	at clj_http.core$request.invokeStatic(core.clj:555)
	at clj_http.core$request.invoke(core.clj:554)
	at clojure.lang.Var.invoke(Var.java:384)
	at clj_http.client$wrap_request_timing$fn__44602.invoke(client.clj:1085)
	at clj_http.headers$wrap_header_map$fn__43749.invoke(headers.clj:147)
	at clj_http.client$wrap_query_params$fn__44492.invoke(client.clj:819)
	at clj_http.client$wrap_basic_auth$fn__44498.invoke(client.clj:842)
	at clj_http.client$wrap_oauth$fn__44503.invoke(client.clj:859)
	at clj_http.client$wrap_user_info$fn__44512.invoke(client.clj:879)
	at clj_http.client$wrap_url$fn__44584.invoke(client.clj:1037)
	at clj_http.client$wrap_decompression$fn__44301.invoke(client.clj:420)
	at clj_http.client$wrap_input_coercion$fn__44416.invoke(client.clj:639)
	at clj_http.client$wrap_additional_header_parsing$fn__44441.invoke(client.clj:694)
	at clj_http.client$wrap_output_coercion$fn__44403.invoke(client.clj:583)
	at clj_http.client$wrap_exceptions$fn__44253.invoke(client.clj:254)
	at clj_http.client$wrap_accept$fn__44456.invoke(client.clj:737)
	at clj_http.client$wrap_accept_encoding$fn__44463.invoke(client.clj:759)
	at clj_http.client$wrap_content_type$fn__44450.invoke(client.clj:720)
	at clj_http.client$wrap_form_params$fn__44549.invoke(client.clj:961)
	at clj_http.client$wrap_nested_params$fn__44570.invoke(client.clj:995)
	at clj_http.client$wrap_flatten_nested_params$fn__44579.invoke(client.clj:1019)
	at clj_http.client$wrap_method$fn__44517.invoke(client.clj:895)
	at clj_http.cookies$wrap_cookies$fn__43286.invoke(cookies.clj:131)
	at clj_http.links$wrap_links$fn__44081.invoke(links.clj:63)
	at clj_http.client$wrap_unknown_host$fn__44587.invoke(client.clj:1048)
	at clj_http.client$request_STAR_.invokeStatic(client.clj:1176)
	at clj_http.client$request_STAR_.invoke(client.clj:1169)
	at clj_http.client$get.invokeStatic(client.clj:1182)
	at clj_http.client$get.doInvoke(client.clj:1178)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at metabase.integrations.slack$do_slack_request.invokeStatic(slack.clj:40)
	at metabase.integrations.slack$do_slack_request.doInvoke(slack.clj:38)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at clojure.core$partial$fn__5841.invoke(core.clj:2631)
	at clojure.core$partial$fn__5839.invoke(core.clj:2623)
	at clojure.core$comp$fn__5807.invoke(core.clj:2568)
	at metabase.metabot.websocket$connect_websocket_BANG_.invokeStatic(websocket.clj:30)
	at metabase.metabot.websocket$connect_websocket_BANG_.invoke(websocket.clj:29)
	at metabase.metabot.websocket$reopen_websocket_connection_if_needed_BANG_.invokeStatic(websocket.clj:101)
	at metabase.metabot.websocket$reopen_websocket_connection_if_needed_BANG_.invoke(websocket.clj:91)
	at metabase.metabot.websocket$start_websocket_monitor_BANG_$fn__56211.invoke(websocket.clj:116)
	at clojure.core$binding_conveyor_fn$fn__5754.invoke(core.clj:2030)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

I’ve set http proxy server in JVM environmental variable. The connection with https://slack.com is established, but it cannot establish it with cerberus-xxxx.lb.slack-msgs.com via websocket. This conenction is used by MetaBot, so I can not enable it…
Please, who has faced problem like this, give me any feedback…

Hi @razer96
Like I already wrote in your issue, when I pointed at the outgoing proxy issue, MetaBot is the only thing not working. If you read the comments, you’ll see that there’s currently no solution.

I have a hope :smiley: The more this issue is mentioned on the forums, the more possibly that someone will give a response ))