Office always fails to load - POST [...]/apps/richdocumentscode/proxy.php?[...] 400
In Nextcloud 24.0.1.
Trying to open any kind of office file always fails with the error:
"Loading document failed. Please try again later."
And the javascript error: POST [...]/apps/richdocumentscode/proxy.php?[...] 400
For the server, I use:
- Ubuntu 20.04.4 LTS
- NGINX as webserver (NOT reverse proxy)
- Built-In CollaboraOnline Server (but I'm planning to switch to my own server)
The nginx error log shows no problems on the nginx side.
Opening /apps/richdocumentscode/proxy.php?status in browser returns: {"status":"OK"}
Here is the javascript console log:
script?v=3:132 Uncaught TypeError: Cannot read properties of null (reading 'parentNode') at script?v=3:132:23 at script?v=3:135:7 (anonymous) @ script?v=3:132 (anonymous) @ script?v=3:135 script?v=3:69 Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') at HTMLBodyElement.<anonymous> (script?v=3:69:26) at $ (sideMenu.js?v=df33b9ac-38:24:259) (anonymous) @ script?v=3:69 $ @ sideMenu.js?v=df33b9ac-38:24 setTimeout (async) $ @ sideMenu.js?v=df33b9ac-38:24 326 @ sideMenu.js?v=df33b9ac-38:24 n @ sideMenu.js?v=df33b9ac-38:1 (anonymous) @ sideMenu.js?v=df33b9ac-38:1 (anonymous) @ sideMenu.js?v=df33b9ac-38:1 proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 POST https://nerdvpn.de/apps/richdocumentscode/proxy.php?req=/cool/https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8%3Faccess_token%3DrAsAEygny7rK1EJPWCospKNzxtC53U8N%26access_token_ttl%3D0/ws?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&compat=/ws/open/open/0 400 getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.ProxySocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.createWebSocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 Uncaught TypeError: Cannot read properties of null (reading 'split') at proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264:11950 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 load (async) (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 POST https://nerdvpn.de/apps/richdocumentscode/proxy.php?req=/cool/https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8%3Faccess_token%3DrAsAEygny7rK1EJPWCospKNzxtC53U8N%26access_token_ttl%3D0%26permission%3Dedit/ws?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&compat=/ws/open/open/0 400 getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.ProxySocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.createWebSocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 connect @ proxy.php?req=/browser/3eff190/bundle.js:1 loadDocument @ proxy.php?req=/browser/3eff190/bundle.js:1 _activate @ proxy.php?req=/browser/3eff190/bundle.js:1 (anonymous) @ proxy.php?req=/browser/3eff190/bundle.js:1 setTimeout (async) _onSocketClose @ proxy.php?req=/browser/3eff190/bundle.js:1 _signalErrorClose @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 load (async) getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.ProxySocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.createWebSocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 POST https://nerdvpn.de/apps/richdocumentscode/proxy.php?req=/cool/https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8%3Faccess_token%3DrAsAEygny7rK1EJPWCospKNzxtC53U8N%26access_token_ttl%3D0%26permission%3Dedit/ws?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&compat=/ws/open/open/0 400 getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 setTimeout (async) getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.ProxySocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.createWebSocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 connect @ proxy.php?req=/browser/3eff190/bundle.js:1 loadDocument @ proxy.php?req=/browser/3eff190/bundle.js:1 _activate @ proxy.php?req=/browser/3eff190/bundle.js:1 _onGotFocus @ proxy.php?req=/browser/3eff190/bundle.js:1 handler @ proxy.php?req=/browser/3eff190/bundle.js:1 focus @ proxy.php?req=/browser/3eff190/bundle.js:1 focus @ proxy.php?req=/browser/3eff190/bundle.js:1 _activate @ proxy.php?req=/browser/3eff190/bundle.js:1 (anonymous) @ proxy.php?req=/browser/3eff190/bundle.js:1 setTimeout (async) _onSocketClose @ proxy.php?req=/browser/3eff190/bundle.js:1 _signalErrorClose @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 load (async) getSessionId @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.ProxySocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 global.createWebSocket @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 (anonymous) @ proxy.php?req=/browser/3eff190/cool.html?WOPISrc=https%3A%2F%2Fnerdvpn.de%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F49245_oc53rmloovn8&title=Vorlage_Brief_MZ.odt&lang=de&closebutton=1&revisionhistory=1:264 Office.vue:198 FAILED
I have similar problems but with apache: My workaround ist restart the collabora server by restarting apache2. But currntly not sure if that should become a daily cronjob just to be on the safe side or switch to docker oder native install.
Same issue here, Apache log reports this:
"POST /apps/richdocumentscode/proxy.php?req=/cool/https%3A%2F%2Finternal.example.com%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F3308_ocuyrqlcoazn%3Faccess_token%3DQSjZNrYcjgrZBoX744mnuUG5ReZqOKwb%26access_token_ttl%3D0%26permission%3Dedit/ws?WOPISrc=https%3A%2F%2Finternal.example.com%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F3308_ocuyrqlcoazn&compat=/ws/open/open/0 HTTP/1.1" 400
Same issue here... In fact, if you remove /cool/ after the req= and replay the post request, it works... I think there is a problem when populating the req http parameter. I'm using ISPConfig to prepare my websites so perhaps it's a proxy problem or a rewrite problem ? Anyway it's really a problematic issue as it's in production state and our customers complain about their internal cloud not working. How can we help to resolve the issue ?
I completly uninstall CODE and kill all cool running processes and re-install and re-set the use of CODE and ... it works ! Have a try. Olivier.
I completly uninstall CODE and kill all cool running processes and re-install and re-set the use of CODE and ... it works ! Have a try. Olivier.
I already tried reinstalling multiple times. Sometimes, it will work for a short while but it always breaks at some point with above error and never recovers back to working state.
Just a fair warning. Yours may break again, too.
I've stepped away from using this app ever since. Something this unrealiable just doesn't do it for me and most of my users have a dedicated office app themselves.
Same error here: /apps/richdocumentscode/proxy.php?req=/cool/* returns 400
already tried reinstall CODE like @aplose mentioned, no change.
Same error here: /apps/richdocumentscode/proxy.php?req=/cool/* returns 400
already tried reinstall CODE like @aplose mentioned, no change.
Did you kill all processes with "cool" in the command line ? (ps -ef | grep cool)
Same error here: /apps/richdocumentscode/proxy.php?req=/cool/* returns 400 already tried reinstall CODE like @aplose mentioned, no change.
Did you kill all processes with "cool" in the command line ? (ps -ef | grep cool) Thank you for the hint.
I removed CODE, rebooted the server (RasPi), installed CODE again and setup to use built-in CODE. After the reboot there was no "cool" process running.
Tried it two times, but still getting the error "Failed to load Nextcloud Office - please try again later".
My current workaround:
# cronjob
*/5 * * * * www-data sleep 23; php --define apc.enable_cli=1 -f /var/www/nextcloud/html/cron.php
# hack damit der collabora office server nicht hängen bleibt irgendwann
07 2 * * * www-data sleep 2; killall coolwsd; sleep 2; bash -c "( /var/www/nextcloud/html/apps/richdocumentscode/collabora/Collabora_Online.AppImage --pidfile=/tmp/coolwsd.pid || /var/www/nextcloud/html/apps/richdocumentscode/collabora/Collabora_Online.AppImage --appimage-extract-and-run --pidfile=/tmp/coolwsd.pid) >/dev/null & disown"
@doppelgrau @oandradesanchez Thank you! It took me several hours to find this solution, much appreciated
I got it working again (Nextcloud Version 25.0.7) , the steps I performed:
- deactivating and removing the CODE server-
- manually removing the coolwsd processes.. (command line: killall coolwsd, or ps axuw | grep coolwsd and do kill -9 [prcoessNR] by hand)
Is there a more decent way of restarting the coolwsd process ? Is restarting needed? I killed it and I could still open files? (an open file in a tab was re-opened upon focus)
[edit] typos and written out solution a but more
This got me thinking, could the cause be that the update process does not take into account that there might be an "old coolwsd process" still active in memory, thus causing a v3rsion conflict resulting in this problem?
This got me thinking, could the cause be that the update process does not take into account that there might be an "old coolwsd process" still active in memory, thus causing a v3rsion conflict resulting in this problem?
Could be. I just came across the issue after an update. Killing anything that relates to coolwsd fixed it.
I did a server update and got a non working Office again.. I had this "deja vue" feeling.., now I know why: https://github.com/CollaboraOnline/richdocumentscode/issues/186#issuecomment-1579477529 ;)
I'll document this now :P
I'm now on NX 29 and using a dockerized dedicated collabora server instead of the built-in and it works without any problems whatsoever.
I can recommend anyone facing problems with collabora to just NOT use the built-in one. Deploying a standalone dockerized collabora with a separate domain is super easy, you only need roughly 1 GiB of ram.
For anyone interested I'll post my setup (docker compose, nginx) here. You can also get guide using apache2 instead of nginx from https://collabora-online-for-nextcloud.readthedocs.io/en/latest/install/
First, get a domain and a cert for your new collabora server. I recommend using certbot or dehydrated. I will use office.example.com below.
Create user, group and dir
groupadd --gid 10060 collabora
useradd --gid 10060 --uid 10060 --home-dir /srv/collabora --create-home --shell /bin/bash collabora
usermod -aG docker collabora
nginx
upstream collabora {
server 192.42.9.2:9980;
keepalive 3;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name office.example.com;
add_header X-Robots-Tag "none";
ssl_certificate /srv/letsencrypt/certs/office.example.com/fullchain.pem;
ssl_certificate_key /srv/letsencrypt/certs/office.example.com/privkey.pem;
access_log off;
error_log /dev/null emerg;
location / {
proxy_pass http://collabora;
proxy_http_version 1.1;
proxy_read_timeout 300s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
add_header X-Frontend-Host $host;
}
}
/srv/collabora/docker-compose.yml
services:
code:
image: collabora/code:latest
restart: "unless-stopped"
container_name: collabora
cpus: "4"
mem_reservation: "512m"
mem_limit: "1024m"
env_file:
- .env
cap_add:
- MKNOD
environment:
- TZ=Europe/Berlin
- password=${COLLABORA_PASSWD}
- username=${COLLABORA_USERNAME}
- domain=${COLLABORA_DOMAIN}
- DONT_GEN_SSL_CERT="True"
- server_name=${COLLABORA_DOMAIN}
- "extra_params=--o:ssl.enable=false --o:ssl.termination=true"
volumes:
- ./config:/config
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "http://127.0.0.1:9980"]
interval: 5m
timeout: 5s
networks:
collabora_proxy:
ipv4_address: 192.42.9.2
networks:
collabora_proxy:
external: true
/srv/collabora/.env
COLLABORA_USERNAME=collabora
COLLABORA_PASSWD=CHANGETHIS
COLLABORA_DOMAIN=office.example.com
Create the network
docker network create --subnet 192.42.9.0/24 --opt com.docker.network.bridge.name=collabora_proxy collabora_proxy
And then ONLY install the Nextcloud app "Nextcloud Office", got to Management Settings and enter your own collabora url with username and passwort as such: https://collabora:[email protected]
You can use docker compose up to start collabora, I recommend using:
/etc/systemd/system/collabora.service
[Unit]
Description=Collabora Office Server
Documentation=https://collabora-online-for-nextcloud.readthedocs.io/en/latest/install/
After=network.target
[Service]
Type=simple
Restart=always
User=collabora
Group=collabora
EnvironmentFile=/srv/collabora/.env
ExecStart=/usr/bin/docker compose up
ExecStop=/usr/bin/docker compose down
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
WorkingDirectory=/srv/collabora
ReadWriteDirectories=/srv/collabora
[Install]
WantedBy=multi-user.target