Docker Self-host Collabora Online server

Pull Docker Image

docker pull collabora/code

Start a new container

⚠️ Bind Both TCP And UDP Incase Reverse Proxy Enable HTTP/3

docker run -t -d --name collabora \
-p 127.0.0.1:9980:9980 \
-p 127.0.0.1:9980:9980/udp \
-e "username=admin" \
-e "password=password" \
-e "aliasgroup1=https://inclouds.top:443" \
-e "aliasgroup2=https://nocdn.inclouds.top:443" \
-e "aliasgroup3=https://cloud.inclouds.top:443" \
-e "server_name=office.inclouds.top" \
-e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" \
--restart always \
collabora/code

aliasgroup1 Website That Use Collabora Online Service
aliasgroup2 Different Domain From aliasgroup1
server_name Domain Of Reverse proxy
extra_params=--o:ssl.enable=false --o:ssl.termination=true SSL Termination
--restart always Auto Restarts After Crashes

Nginx Reverse proxy

⚠️ An Error Will Occurred With Collabora SSL Termination Function,
If Nginx Enable HTTP/3 And Docker Dosen’t Bind With UDP Port.

server {
 listen       443 ssl;
 server_name  collaboraonline.example.com;

 ssl_certificate /path/to/certificate;
 ssl_certificate_key /path/to/key;

 # static files
 location ^~ /browser {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # WOPI discovery URL
 location ^~ /hosting/discovery {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # Capabilities
 location ^~ /hosting/capabilities {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # main websocket
 location ~ ^/cool/(.*)/ws$ {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }

 # download, presentation and image upload
 location ~ ^/(c|l)ool {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # Admin Console websocket
 location ^~ /cool/adminws {
   proxy_pass http://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }
}

Collabora Admin Console

https://office.inclouds.top/browser/dist/admin/admin.html

ERROR

Exception while processing incoming request
Happens When Nginx Enable HTTP/3 And Docker Don’t Bind With UDP Port.
Happens Also When Cloudflare CDN/Proxy Enable HTTP/3.

HTTP/3 Blocked In Some Aera/Country
Better Just Use HTTP/2

Leave a Comment