Error when saving file to alfresco

Hello, I’m facing an issue when trying to connect the onlyoffice docker image (onlyoffice/documentserver:latest) in our alfresco docker compose stack.
Opening the file in onlyoffice through the alfresco interface works, but saving the file to alfresco fails:


In the onlyoffice log I see the following error:

2024-05-29 16:06:29 [2024-05-29T14:06:29.406] [ERROR] [localhost] [8db87172-62b9-4809-825e-2070a42eb1bc_1.0] [admin1] nodeJS - sendServerRequest error: url = https://host.docker.internal/alfresco/s/parashift/onlyoffice/callback?nodeRef=workspace://SpacesStore/8db87172-62b9-4809-825e-2070a42eb1bc&cb_key=KZYV0RiDyXjMlfNXeORbDI3ziyMLUUCMO7-4obwgJnE;data = {"key":"8db87172-62b9-4809-825e-2070a42eb1bc_1.0","status":6,"url":"https://localhost:443/cache/files/data/8db87172-62b9-4809-825e-2070a42eb1bc_1.0_174/output.docx/output.docx?md5=BU_eK6r2o_Xj4quJjRh3QA&expires=1716992490&WOPISrc=8db87172-62b9-4809-825e-2070a42eb1bc_1.0&filename=output.docx","changesurl":"https://localhost:443/cache/files/data/8db87172-62b9-4809-825e-2070a42eb1bc_1.0_174/changes.zip/changes.zip?md5=ZdL3ofNz144lV6dKFHDpxw&expires=1716992490&WOPISrc=8db87172-62b9-4809-825e-2070a42eb1bc_1.0&filename=changes.zip","history":{"serverVersion":"8.0.1","changes":[{"created":"2024-05-29 14:06:28","user":{"id":"admin","name":"Administrator "}}]},"users":["admin"],"actions":[{"type":2,"userid":"admin"}],"lastsave":"2024-05-29T14:06:28.000Z","forcesavetype":1,"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiI4ZGI4NzE3Mi02MmI5LTQ4MDktODI1ZS0yMDcwYTQyZWIxYmNfMS4wIiwic3RhdHVzIjo2LCJ1cmwiOiJodHRwczovL2xvY2FsaG9zdDo0NDMvY2FjaGUvZmlsZXMvZGF0YS84ZGI4NzE3Mi02MmI5LTQ4MDktODI1ZS0yMDcwYTQyZWIxYmNfMS4wXzE3NC9vdXRwdXQuZG9jeC9vdXRwdXQuZG9jeD9tZDU9QlVfZUs2cjJvX1hqNHF1SmpSaDNRQSZleHBpcmVzPTE3MTY5OTI0OTAmV09QSVNyYz04ZGI4NzE3Mi02MmI5LTQ4MDktODI1ZS0yMDcwYTQyZWIxYmNfMS4wJmZpbGVuYW1lPW91dHB1dC5kb2N4IiwiY2hhbmdlc3VybCI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0My9jYWNoZS9maWxlcy9kYXRhLzhkYjg3MTcyLTYyYjktNDgwOS04MjVlLTIwNzBhNDJlYjFiY18xLjBfMTc0L2NoYW5nZXMuemlwL2NoYW5nZXMuemlwP21kNT1aZEwzb2ZOejE0NGxWNmRLRkhEcHh3JmV4cGlyZXM9MTcxNjk5MjQ5MCZXT1BJU3JjPThkYjg3MTcyLTYyYjktNDgwOS04MjVlLTIwNzBhNDJlYjFiY18xLjAmZmlsZW5hbWU9Y2hhbmdlcy56aXAiLCJoaXN0b3J5Ijp7InNlcnZlclZlcnNpb24iOiI4LjAuMSIsImNoYW5nZXMiOlt7ImNyZWF0ZWQiOiIyMDI0LTA1LTI5IDE0OjA2OjI4IiwidXNlciI6eyJpZCI6ImFkbWluIiwibmFtZSI6IkFkbWluaXN0cmF0b3IgIn19XX0sInVzZXJzIjpbImFkbWluIl0sImFjdGlvbnMiOlt7InR5cGUiOjIsInVzZXJpZCI6ImFkbWluIn1dLCJsYXN0c2F2ZSI6IjIwMjQtMDUtMjlUMTQ6MDY6MjguMDAwWiIsImZvcmNlc2F2ZXR5cGUiOjEsImZpbGV0eXBlIjoiZG9jeCIsImlhdCI6MTcxNjk5MTU4OSwiZXhwIjoxNzE2OTkxODg5fQ.DGn32QgrJmtrUVHv7jI_CVb_8NX53yPKWmpyU4VdhmQ","filetype":"docx"} Error: Error response: statusCode:500; headers:{"server":"nginx/1.20.2","date":"Wed, 29 May 2024 14:06:29 GMT","content-length":"59","connection":"close","x-frame-options":"SAMEORIGIN"}; body:
2024-05-29 16:06:29 {"error":1, "message":"04290044 Exception in Transaction."}
2024-05-29 16:06:29     at Request._callback (/snapshot/server/Common/sources/utils.js)
2024-05-29 16:06:29     at Request.callback (/snapshot/server/Common/node_modules/request/request.js:185:22)
2024-05-29 16:06:29     at Request.emit (node:events:527:28)
2024-05-29 16:06:29     at Request.<anonymous> (/snapshot/server/Common/node_modules/request/request.js:1161:10)
2024-05-29 16:06:29     at Request.emit (node:events:527:28)
2024-05-29 16:06:29     at IncomingMessage.<anonymous> (/snapshot/server/Common/node_modules/request/request.js:1083:12)
2024-05-29 16:06:29     at Object.onceWrapper (node:events:641:28)
2024-05-29 16:06:29     at IncomingMessage.emit (node:events:539:35)
2024-05-29 16:06:29     at endReadableNT (node:internal/streams/readable:1345:12)
2024-05-29 16:06:29     at processTicksAndRejections (node:internal/process/task_queues:83:21)

In alfresco I get the error

2024-05-29 16:06:29 2024-05-29T14:06:29,402 [] ERROR [onlyoffice.scripts.CallBack] [http-nio-8080-exec-1] Error execution script Callback
2024-05-29 16:06:29 org.alfresco.error.AlfrescoRuntimeException: 04290044 Exception in Transaction.
2024-05-29 16:06:29     at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:538) ~[alfresco-repository-20.64.jar:20.64]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack.execute(CallBack.java:158) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:506) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:685) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.alfresco.repo.web.scripts.RepositoryContainer.executeScriptInternal(RepositoryContainer.java:356) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:309) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:423) ~[spring-webscripts-8.33.jar:8.33]
2024-05-29 16:06:29     at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:210) ~[spring-webscripts-8.33.jar:8.33]
2024-05-29 16:06:29     at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:131) ~[spring-webscripts-8.33.jar:8.33]
2024-05-29 16:06:29     at org.alfresco.repo.web.scripts.AlfrescoWebScriptServlet.service(AlfrescoWebScriptServlet.java:43) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[servlet-api.jar:4.0.FR]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.alfresco.module.aosmodule.service.ContextRootFilter.doFilter(ContextRootFilter.java:93) ~[alfresco-aos-repo-binding-1.6.0-M1.jar:?]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.springframework.extensions.webscripts.servlet.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:177) ~[spring-webscripts-8.33.jar:8.33]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:68) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.alfresco.web.app.servlet.ClearSecurityContextFilter.doFilter(ClearSecurityContextFilter.java:53) ~[alfresco-remote-api-20.64.jar:20.64]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[catalina.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-coyote.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-coyote.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-coyote.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-util.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-util.jar:9.0.62]
2024-05-29 16:06:29     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.62]
2024-05-29 16:06:29     at java.lang.Thread.run(Thread.java:833) ~[?:?]
2024-05-29 16:06:29 Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:443 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused
2024-05-29 16:06:29     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at com.parashift.onlyoffice.util.RequestManager.executeRequest(RequestManager.java:91) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.util.RequestManager.executeRequestToDocumentServer(RequestManager.java:55) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack.updateNode(CallBack.java:305) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack.access$100(CallBack.java:38) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack$ProccessRequestCallback.execute(CallBack.java:247) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:452) ~[alfresco-repository-20.64.jar:20.64]
2024-05-29 16:06:29     ... 44 more
2024-05-29 16:06:29 Caused by: java.net.ConnectException: Connection refused
2024-05-29 16:06:29     at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
2024-05-29 16:06:29     at sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[?:?]
2024-05-29 16:06:29     at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
2024-05-29 16:06:29     at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
2024-05-29 16:06:29     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[?:?]
2024-05-29 16:06:29     at java.net.Socket.connect(Socket.java:633) ~[?:?]
2024-05-29 16:06:29     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.13.jar:4.5.13]
2024-05-29 16:06:29     at com.parashift.onlyoffice.util.RequestManager.executeRequest(RequestManager.java:91) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.util.RequestManager.executeRequestToDocumentServer(RequestManager.java:55) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack.updateNode(CallBack.java:305) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack.access$100(CallBack.java:38) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at com.parashift.onlyoffice.scripts.CallBack$ProccessRequestCallback.execute(CallBack.java:247) ~[onlyoffice-integration-platform-jar-6.1.0.jar:?]
2024-05-29 16:06:29     at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:452) ~[alfresco-repository-20.64.jar:20.64]
2024-05-29 16:06:29     ... 44 more

The reason why I think this goes wrong is because the url/changesurl is refering to https://localhost:443/cache/…, this is the url under which the file can be found in the onlyoffice container, but the alfresco container has to use a different url to connect to onlyoffice (in our case https://onlyoffice:443/cache/…), but I don’t know how to change this.
I thought maybe I have to change the files.docservice.url.public property, as defined here: Connecting ONLYOFFICE Docs to ONLYOFFICE Groups - ONLYOFFICE but I cannot find the specified file (/var/www/onlyoffice/WebStudio/web.appsettings.config) in the docker image: onlyoffice/documentserver:latest
What can I do to fix this?

Hello,
Currently you don’t use the X-forwarded-host header, you need to configure proxy according to our guides to resolve the issue: Using ONLYOFFICE Docs behind the proxy - ONLYOFFICE
After you do it, Docs should be accessible for for Alfresco.

Thanks for the quick response.
I don’t think this is the solution to our problem. All of the requests that are initiated by the browser are working well.
However a request that is initiated by onlyoffice, that is sent to alfresco, has this “incorrect” url (localhost instead of onlyoffice). As far as I know the X-forwarded-host header is used to add to a request (in a proxy), to tell the server what it’s own ip is, so it can use this in url’s it generates in the response. But in this case the url is present in the request body sent by onlyoffice, so I don’t think the X-forwarded-host is able to fix this. And if it is, I don’t understand where I should do this, because adding it in the nginx in front of onlyoffice and alfresco makes the requests to onlyoffice fail (because requests from the browser are redirected to https://onlyoffice while they should be to https://localhost)

To hopefully make the problem a bit clearer, this is in steps what is going on:

  1. I open a file in onlyoffice through the alfresco ui → This works fine
  2. The file is opened in onlyoffice → This works fine
  3. I edit the file through In onlyoffice → this works fine
  4. I press the save button in onlyoffice
  5. Onlyoffice sends a request to alfresco to tell it where it can find the updated file ->! This works but not as expected, because in the request body it has a url (https://localhost:/cache/…) that can only accessed from within the onlyoffice container, so this url is incorrect for alfresco
  6. Alfresco recieves the request from onlyoffice and tries to get the file from the url that it has been given. → This fails, because this url can’t be reached, as a result alfresco returns a 500 server error to onlyoffice
  7. The file can not be saved, so onlyoffice shows a warning in the browser

We still suggest to add X-Forwarded-Host header, localhost is being used now exactly because the header is not specified. This header informs proxy server that the hostname from which the response was sent should be saved.
After that Document Server will form the links to documents in accordance with specified hostname.
You should configure the above in a proxy config, you can choose Apache, HAProxy, etc (you’d need to install one of them and edit the config). There you can find configurations for them: GitHub - ONLYOFFICE/document-server-proxy: Common setting for Document Server proxy