Persistent 400 Bad Request with Collabora CODE 24.4.1204 via richdocumentscode proxy.php

[stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;} .css-175oi2r{align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;} .css-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;} .css-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;} [stylesheet-group="2"]{} .r-13awgt0{flex:1;} .r-1adg3ll{display:block;} .r-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;} .r-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;} .r-1udh08x{overflow-x:hidden;overflow-y:hidden;} .r-4iw3lz{border-bottom-width:0;border-left-width:0;border-right-width:0;border-top-width:0;} .r-4qtqp9{display:inline-block;} .r-6koalj{display:flex;} .r-bztko3{overflow-x:visible;overflow-y:visible;} .r-crgep1{margin:0px;} .r-hvic4v{display:none;} .r-krxsd3{display:-webkit-box;} .r-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;} .r-sdzlij{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-top-left-radius:9999px;border-top-right-radius:9999px;} .r-t60dpp{padding:0px;} .r-wwvuq4{padding:0;} .r-xoduu5{display:inline-flex;} .r-ywje51{margin:auto;} .r-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;} [stylesheet-group="2.1"]{} .r-1559e4e{padding-bottom:2px;padding-top:2px;} .r-1fkl15p{padding-left:32px;padding-right:32px;} .r-3o4zer{padding-left:12px;padding-right:12px;} .r-3pj75a{padding-left:16px;padding-right:16px;} .r-cxgwc0{padding-left:24px;padding-right:24px;} .r-dd0y9b{padding-bottom:20px;padding-top:20px;} .r-ddtstp{margin-bottom:0px;margin-top:0px;} .r-dp7rxi{padding-bottom:40px;padding-top:40px;} .r-f8sm7e{margin-left:auto;margin-right:auto;} .r-n7gxbd{padding-left:4px;padding-right:4px;} .r-s49dbf{margin-bottom:1px;margin-top:1px;} .r-sjygvo{padding-left:1em;padding-right:1em;} [stylesheet-group="2.2"]{} .r-1ca1ndr{margin-left:0.5em;} .r-1ez5h0i{margin-left:4px;} .r-1gs4q39{margin-right:4px;} .r-1kkk96v{margin-left:8px;} .r-1kpi4qh{margin-left:0.075em;} .r-1l2kgy{margin-right:0.5em;} .r-1q6cnnd{right:-2px;} .r-1wron08{margin-right:8px;} .r-3t4u6i{margin-left:2px;} .r-45ll9u{left:50%;} .r-5f1w11{left:-2px;} .r-k4bwe5{margin-right:0.075em;} .r-o59np7{padding-right:8px;} .r-ocobd0{right:50%;} .r-qjj4hq{padding-left:8px;} .r-x1x4zq{margin-right:2px;} [stylesheet-group="3"]{} .r-105ug2t{pointer-events:auto!important;} .r-109y4c4{height:1px;} .r-10ptun7{height:16px;} .r-10v3vxq{transform:scaleX(-1);} .r-117bsoe{margin-bottom:20px;} .r-11c0sde{margin-top:24px;} .r-11j9u27{visibility:hidden;} .r-12181gd{box-shadow:0 0 2px rgba(0,0,0,0.03) inset;} .r-12sks89{min-height:22px;} .r-12vffkv>*{pointer-events:auto;} .r-12vffkv{pointer-events:none!important;} .r-12ym1je{width:18px;} .r-135wba7{line-height:24px;} .r-13qz1uu{width:100%;} .r-13wfysu{-webkit-text-decoration-line:none;text-decoration-line:none;} .r-146iojx{max-width:300px;} .r-1472mwg{height:24px;} .r-14j79pv{color:rgba(83,100,113,1.00);} .r-14lw9ot{background-color:rgba(255,255,255,1.00);} .r-15ysp7h{min-height:32px;} .r-16dba41{font-weight:400;} .r-16y2uox{flex-grow:1;} .r-176fswd{transform:translateX(-50%) translateY(-50%);} .r-1777fci{justify-content:center;} .r-17bb2tj{animation-duration:0.75s;} .r-17leim2{background-repeat:repeat;} .r-17s6mgv{justify-content:flex-end;} .r-18jsvk2{color:rgba(15,20,25,1.00);} .r-18tzken{width:56px;} .r-18u37iz{flex-direction:row;} .r-18yzcnr{height:22px;} .r-19wmn03{width:20px;} .r-19yznuf{min-height:52px;} .r-1abnn5w{animation-play-state:paused;} .r-1acpoxo{width:36px;} .r-1ad0z5i{word-break:break-all;} .r-1awozwy{align-items:center;} .r-1b43r93{font-size:14px;} .r-1betnmo{max-width:672px;} .r-1blnp2b{width:72px;} .r-1blvdjr{font-size:23px;} .r-1ceczpf{min-height:24px;} .r-1cwl3u0{line-height:16px;} .r-1d2f490{left:0px;} .r-1ddef8g{-webkit-text-decoration-line:underline;text-decoration-line:underline;} .r-1ebb2ja{list-style:none;} .r-1ff274t{text-align:right;} .r-1gkfh8e{font-size:11px;} .r-1h0z5md{justify-content:flex-start;} .r-1h8ys4a{padding-top:4px;} .r-1hjwoze{height:18px;} .r-1iln25a{word-wrap:normal;} .r-1inkyih{font-size:17px;} .r-1ipicw7{width:300px;} .r-1iusvr4{flex-basis:0px;} .r-1janqcz{width:16px;} .r-1jaylin{width:-webkit-max-content;width:-moz-max-content;width:max-content;} .r-1k78y06{font-family:Tahoma, Arial, sans-serif;} .r-1kihuf0{align-self:center;} .r-1ldzwu0{animation-timing-function:linear;} .r-1loqt21{cursor:pointer;} .r-1mlwlqe{flex-basis:auto;} .r-1mrlafo{background-position:0;} .r-1muvv40{animation-iteration-count:infinite;} .r-1mwlp6a{height:56px;} .r-1nao33i{color:rgba(231,233,234,1.00);} .r-1niwhzg{background-color:rgba(0,0,0,0.00);} .r-1ny4l3l{outline-style:none;} .r-1oifz5y{background-color:rgba(170,17,0,1.00);} .r-1oszu61{align-items:stretch;} .r-1otgn73{touch-action:manipulation;} .r-1p0dtai{bottom:0px;} .r-1pi2tsx{height:100%;} .r-1ps3wis{min-width:44px;} .r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-1qi8awa{min-width:36px;} .r-1r5jyh0{min-height:130px;} .r-1r8g8re{height:36px;} .r-1s2hp8q{min-height:26px;} .r-1sxrcry{background-size:auto;} .r-1tl8opc{font-family:"Segoe UI",Meiryo,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;} .r-1to6hqq{background-color:rgba(255,212,0,1.00);} .r-1ttztb7{text-align:inherit;} .r-1udbk01{text-overflow:ellipsis;} .r-1v2oles{top:50%;} .r-1vmecro{direction:rtl;} .r-1vr29t4{font-weight:800;} .r-1wb8bfx{text-decoration-thickness:2px;} .r-1wbh5a2{flex-shrink:1;} .r-1wyyakw{z-index:-1;} .r-1xcajam{position:fixed;} .r-1xk2f4g{clip:rect(1px, 1px, 1px, 1px);} .r-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;} .r-1xvli5t{height:1.25em;} .r-1y7e96w{min-width:22px;} .r-1ye8kvj{max-width:600px;} .r-1yef0xd{animation-name:r-11cv4x;} .r-1yjpyg1{font-size:31px;} .r-1ykxob0{top:60%;} .r-2o02ov{margin-top:40px;} .r-2tavb8{background-color:rgba(0,0,0,0.60);} .r-2yi16{min-height:36px;} .r-36ujnk{font-style:italic;} .r-37tt59{line-height:32px;} .r-3s2u2q{white-space:nowrap;} .r-417010{z-index:0;} .r-4gszlv{background-size:cover;} .r-4wgw6l{min-width:32px;} .r-54znze{color:rgba(239,243,244,1.00);} .r-56xrmm{line-height:12px;} .r-6026j{background-color:rgba(255,255,255,0.85);} .r-633pao{pointer-events:none!important;} .r-6416eg{-moz-transition-property:background-color, box-shadow;-webkit-transition-property:background-color, box-shadow;transition-property:background-color, box-shadow;} .r-64el8z{min-width:52px;} .r-7q8q6z{cursor:default;} .r-8akbws{-webkit-box-orient:vertical;} .r-8jfcpp{top:-2px;} .r-92ng3h{width:1px;} .r-a023e6{font-size:15px;} .r-adyw6z{font-size:20px;} .r-agouwx{transform:translateZ(0);} .r-ah5dr5>*{pointer-events:none;} .r-ah5dr5{pointer-events:auto!important;} .r-aqfbo4{backface-visibility:hidden;} .r-b88u0q{font-weight:700;} .r-bcqeeo{min-width:0px;} .r-bnwqim{position:relative;} .r-bt1l66{min-height:20px;} .r-bvlit7{margin-bottom:-12px;} .r-deolkf{box-sizing:border-box;} .r-dflpy8{height:1.2em;} .r-dnmrzs{max-width:100%;} .r-ehq7j7{background-size:contain;} .r-emqnss{transform:translateZ(0px);} .r-eqz5dr{flex-direction:column;} .r-ero68b{min-height:40px;} .r-fdjqy7{text-align:left;} .r-fm7h5w{font-family:"TwitterChirpExtendedHeavy","Verdana",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-h9hxbl{width:1.2em;} .r-icoktb{opacity:0.5;} .r-ifefl9{min-height:0px;} .r-impgnl{transform:translateX(50%) translateY(-50%);} .r-iphfwy{padding-bottom:4px;} .r-ipm5af{top:0px;} .r-jmul1s{transform:scale(1.1);} .r-jwli3a{color:rgba(255,255,255,1.00);} .r-kemksi{background-color:rgba(0,0,0,1.00);} .r-lp5zef{min-width:24px;} .r-lrsllp{width:24px;} .r-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;} .r-m6rgpd{vertical-align:text-bottom;} .r-majxgm{font-weight:500;} .r-n6v787{font-size:13px;} .r-nwxazl{line-height:40px;} .r-o7ynqc{transition-duration:0.2s;} .r-peo1c{min-height:44px;} .r-poiln3{font-family:inherit;} .r-pp5qcn{vertical-align:-20%;} .r-q4m81j{text-align:center;} .r-qlhcfr{font-size:0.001px;} .r-qvk6io{line-height:0px;} .r-qvutc0{word-wrap:break-word;} .r-rjixqe{line-height:20px;} .r-rki7wi{bottom:12px;} .r-sb58tz{max-width:1000px;} .r-tjvw6i{text-decoration-thickness:1px;} .r-u6sd8q{background-repeat:no-repeat;} .r-u8s1d{position:absolute;} .r-ueyrd6{line-height:36px;} .r-uho16t{font-size:34px;} .r-vkv6oe{min-width:40px;} .r-vlxjld{color:rgba(247,249,249,1.00);} .r-vqxq0j{border:0 solid black;} .r-vrz42v{line-height:28px;} .r-vvn4in{background-position:center;} .r-wy61xf{height:72px;} .r-x3cy2q{background-size:100% 100%;} .r-x572qd{background-color:rgba(247,249,249,1.00);} .r-xigjrr{-webkit-filter:blur(4px);filter:blur(4px);} .r-yc9v9c{width:22px;} .r-yfoy6g{background-color:rgba(21,32,43,1.00);} .r-yy2aun{font-size:26px;} .r-yyyyoo{fill:currentcolor;} .r-z7pwl0{max-width:700px;} .r-z80fyv{height:20px;} .r-zchlnj{right:0px;} @-webkit-keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} @keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} .r-19gue0{position:absolute;visibility:hidden;top:0;width:50px;pointer-events:none} .r-19gue0.loaded{visibility:visible;top:50vh;width:50px}

Nextcloud Version

  • Version: 31.0.0.18 (per earlier richdocuments 8.6.2 compatibility)

Operating System and Version

  • OS: Unknown (Hostinger VPS, likely Ubuntu/Debian—please confirm)

  • Web Server: LiteSpeed (per logs, e.g., 16:48:48 GMT)

PHP Version

  • PHP: 8.3 (assumed from Hostinger defaults—please confirm with php -v)

Collabora Version

  • richdocuments: 8.6.2

  • richdocumentscode: 24.4.1204 (per occ app:list)

The Issue You Are Facing

After upgrading or restarting my Nextcloud instance, I can’t open .docx files in Nextcloud Office using the built-in Collabora CODE server (richdocumentscode). The UI spins indefinitely, and manual tests via curl return a 400 Bad Request. Direct WOPI calls to Nextcloud work (200 OK), but proxy calls to Collabora fail with “Invalid or unknown request” in logs. This worked pre-restart—now it’s broken.

[stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;} .css-175oi2r{align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;} .css-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;} .css-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;} [stylesheet-group="2"]{} .r-13awgt0{flex:1;} .r-1adg3ll{display:block;} .r-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;} .r-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;} .r-1udh08x{overflow-x:hidden;overflow-y:hidden;} .r-4iw3lz{border-bottom-width:0;border-left-width:0;border-right-width:0;border-top-width:0;} .r-4qtqp9{display:inline-block;} .r-6koalj{display:flex;} .r-bztko3{overflow-x:visible;overflow-y:visible;} .r-crgep1{margin:0px;} .r-hvic4v{display:none;} .r-krxsd3{display:-webkit-box;} .r-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;} .r-sdzlij{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-top-left-radius:9999px;border-top-right-radius:9999px;} .r-t60dpp{padding:0px;} .r-wwvuq4{padding:0;} .r-xoduu5{display:inline-flex;} .r-ywje51{margin:auto;} .r-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;} [stylesheet-group="2.1"]{} .r-1559e4e{padding-bottom:2px;padding-top:2px;} .r-1fkl15p{padding-left:32px;padding-right:32px;} .r-3o4zer{padding-left:12px;padding-right:12px;} .r-3pj75a{padding-left:16px;padding-right:16px;} .r-cxgwc0{padding-left:24px;padding-right:24px;} .r-dd0y9b{padding-bottom:20px;padding-top:20px;} .r-ddtstp{margin-bottom:0px;margin-top:0px;} .r-dp7rxi{padding-bottom:40px;padding-top:40px;} .r-f8sm7e{margin-left:auto;margin-right:auto;} .r-n7gxbd{padding-left:4px;padding-right:4px;} .r-s49dbf{margin-bottom:1px;margin-top:1px;} .r-sjygvo{padding-left:1em;padding-right:1em;} [stylesheet-group="2.2"]{} .r-1ca1ndr{margin-left:0.5em;} .r-1ez5h0i{margin-left:4px;} .r-1gs4q39{margin-right:4px;} .r-1kkk96v{margin-left:8px;} .r-1kpi4qh{margin-left:0.075em;} .r-1l2kgy{margin-right:0.5em;} .r-1q6cnnd{right:-2px;} .r-1wron08{margin-right:8px;} .r-3t4u6i{margin-left:2px;} .r-45ll9u{left:50%;} .r-5f1w11{left:-2px;} .r-k4bwe5{margin-right:0.075em;} .r-o59np7{padding-right:8px;} .r-ocobd0{right:50%;} .r-qjj4hq{padding-left:8px;} .r-x1x4zq{margin-right:2px;} [stylesheet-group="3"]{} .r-105ug2t{pointer-events:auto!important;} .r-109y4c4{height:1px;} .r-10ptun7{height:16px;} .r-10v3vxq{transform:scaleX(-1);} .r-117bsoe{margin-bottom:20px;} .r-11c0sde{margin-top:24px;} .r-11j9u27{visibility:hidden;} .r-12181gd{box-shadow:0 0 2px rgba(0,0,0,0.03) inset;} .r-12sks89{min-height:22px;} .r-12vffkv>*{pointer-events:auto;} .r-12vffkv{pointer-events:none!important;} .r-12ym1je{width:18px;} .r-135wba7{line-height:24px;} .r-13qz1uu{width:100%;} .r-13wfysu{-webkit-text-decoration-line:none;text-decoration-line:none;} .r-146iojx{max-width:300px;} .r-1472mwg{height:24px;} .r-14j79pv{color:rgba(83,100,113,1.00);} .r-14lw9ot{background-color:rgba(255,255,255,1.00);} .r-15ysp7h{min-height:32px;} .r-16dba41{font-weight:400;} .r-16y2uox{flex-grow:1;} .r-176fswd{transform:translateX(-50%) translateY(-50%);} .r-1777fci{justify-content:center;} .r-17bb2tj{animation-duration:0.75s;} .r-17leim2{background-repeat:repeat;} .r-17s6mgv{justify-content:flex-end;} .r-18jsvk2{color:rgba(15,20,25,1.00);} .r-18tzken{width:56px;} .r-18u37iz{flex-direction:row;} .r-18yzcnr{height:22px;} .r-19wmn03{width:20px;} .r-19yznuf{min-height:52px;} .r-1abnn5w{animation-play-state:paused;} .r-1acpoxo{width:36px;} .r-1ad0z5i{word-break:break-all;} .r-1awozwy{align-items:center;} .r-1b43r93{font-size:14px;} .r-1betnmo{max-width:672px;} .r-1blnp2b{width:72px;} .r-1blvdjr{font-size:23px;} .r-1ceczpf{min-height:24px;} .r-1cwl3u0{line-height:16px;} .r-1d2f490{left:0px;} .r-1ddef8g{-webkit-text-decoration-line:underline;text-decoration-line:underline;} .r-1ebb2ja{list-style:none;} .r-1ff274t{text-align:right;} .r-1gkfh8e{font-size:11px;} .r-1h0z5md{justify-content:flex-start;} .r-1h8ys4a{padding-top:4px;} .r-1hjwoze{height:18px;} .r-1iln25a{word-wrap:normal;} .r-1inkyih{font-size:17px;} .r-1ipicw7{width:300px;} .r-1iusvr4{flex-basis:0px;} .r-1janqcz{width:16px;} .r-1jaylin{width:-webkit-max-content;width:-moz-max-content;width:max-content;} .r-1k78y06{font-family:Tahoma, Arial, sans-serif;} .r-1kihuf0{align-self:center;} .r-1ldzwu0{animation-timing-function:linear;} .r-1loqt21{cursor:pointer;} .r-1mlwlqe{flex-basis:auto;} .r-1mrlafo{background-position:0;} .r-1muvv40{animation-iteration-count:infinite;} .r-1mwlp6a{height:56px;} .r-1nao33i{color:rgba(231,233,234,1.00);} .r-1niwhzg{background-color:rgba(0,0,0,0.00);} .r-1ny4l3l{outline-style:none;} .r-1oifz5y{background-color:rgba(170,17,0,1.00);} .r-1oszu61{align-items:stretch;} .r-1otgn73{touch-action:manipulation;} .r-1p0dtai{bottom:0px;} .r-1pi2tsx{height:100%;} .r-1ps3wis{min-width:44px;} .r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-1qi8awa{min-width:36px;} .r-1r5jyh0{min-height:130px;} .r-1r8g8re{height:36px;} .r-1s2hp8q{min-height:26px;} .r-1sxrcry{background-size:auto;} .r-1tl8opc{font-family:"Segoe UI",Meiryo,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;} .r-1to6hqq{background-color:rgba(255,212,0,1.00);} .r-1ttztb7{text-align:inherit;} .r-1udbk01{text-overflow:ellipsis;} .r-1v2oles{top:50%;} .r-1vmecro{direction:rtl;} .r-1vr29t4{font-weight:800;} .r-1wb8bfx{text-decoration-thickness:2px;} .r-1wbh5a2{flex-shrink:1;} .r-1wyyakw{z-index:-1;} .r-1xcajam{position:fixed;} .r-1xk2f4g{clip:rect(1px, 1px, 1px, 1px);} .r-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;} .r-1xvli5t{height:1.25em;} .r-1y7e96w{min-width:22px;} .r-1ye8kvj{max-width:600px;} .r-1yef0xd{animation-name:r-11cv4x;} .r-1yjpyg1{font-size:31px;} .r-1ykxob0{top:60%;} .r-2o02ov{margin-top:40px;} .r-2tavb8{background-color:rgba(0,0,0,0.60);} .r-2yi16{min-height:36px;} .r-36ujnk{font-style:italic;} .r-37tt59{line-height:32px;} .r-3s2u2q{white-space:nowrap;} .r-417010{z-index:0;} .r-4gszlv{background-size:cover;} .r-4wgw6l{min-width:32px;} .r-54znze{color:rgba(239,243,244,1.00);} .r-56xrmm{line-height:12px;} .r-6026j{background-color:rgba(255,255,255,0.85);} .r-633pao{pointer-events:none!important;} .r-6416eg{-moz-transition-property:background-color, box-shadow;-webkit-transition-property:background-color, box-shadow;transition-property:background-color, box-shadow;} .r-64el8z{min-width:52px;} .r-7q8q6z{cursor:default;} .r-8akbws{-webkit-box-orient:vertical;} .r-8jfcpp{top:-2px;} .r-92ng3h{width:1px;} .r-a023e6{font-size:15px;} .r-adyw6z{font-size:20px;} .r-agouwx{transform:translateZ(0);} .r-ah5dr5>*{pointer-events:none;} .r-ah5dr5{pointer-events:auto!important;} .r-aqfbo4{backface-visibility:hidden;} .r-b88u0q{font-weight:700;} .r-bcqeeo{min-width:0px;} .r-bnwqim{position:relative;} .r-bt1l66{min-height:20px;} .r-bvlit7{margin-bottom:-12px;} .r-deolkf{box-sizing:border-box;} .r-dflpy8{height:1.2em;} .r-dnmrzs{max-width:100%;} .r-ehq7j7{background-size:contain;} .r-emqnss{transform:translateZ(0px);} .r-eqz5dr{flex-direction:column;} .r-ero68b{min-height:40px;} .r-fdjqy7{text-align:left;} .r-fm7h5w{font-family:"TwitterChirpExtendedHeavy","Verdana",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-h9hxbl{width:1.2em;} .r-icoktb{opacity:0.5;} .r-ifefl9{min-height:0px;} .r-impgnl{transform:translateX(50%) translateY(-50%);} .r-iphfwy{padding-bottom:4px;} .r-ipm5af{top:0px;} .r-jmul1s{transform:scale(1.1);} .r-jwli3a{color:rgba(255,255,255,1.00);} .r-kemksi{background-color:rgba(0,0,0,1.00);} .r-lp5zef{min-width:24px;} .r-lrsllp{width:24px;} .r-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;} .r-m6rgpd{vertical-align:text-bottom;} .r-majxgm{font-weight:500;} .r-n6v787{font-size:13px;} .r-nwxazl{line-height:40px;} .r-o7ynqc{transition-duration:0.2s;} .r-peo1c{min-height:44px;} .r-poiln3{font-family:inherit;} .r-pp5qcn{vertical-align:-20%;} .r-q4m81j{text-align:center;} .r-qlhcfr{font-size:0.001px;} .r-qvk6io{line-height:0px;} .r-qvutc0{word-wrap:break-word;} .r-rjixqe{line-height:20px;} .r-rki7wi{bottom:12px;} .r-sb58tz{max-width:1000px;} .r-tjvw6i{text-decoration-thickness:1px;} .r-u6sd8q{background-repeat:no-repeat;} .r-u8s1d{position:absolute;} .r-ueyrd6{line-height:36px;} .r-uho16t{font-size:34px;} .r-vkv6oe{min-width:40px;} .r-vlxjld{color:rgba(247,249,249,1.00);} .r-vqxq0j{border:0 solid black;} .r-vrz42v{line-height:28px;} .r-vvn4in{background-position:center;} .r-wy61xf{height:72px;} .r-x3cy2q{background-size:100% 100%;} .r-x572qd{background-color:rgba(247,249,249,1.00);} .r-xigjrr{-webkit-filter:blur(4px);filter:blur(4px);} .r-yc9v9c{width:22px;} .r-yfoy6g{background-color:rgba(21,32,43,1.00);} .r-yy2aun{font-size:26px;} .r-yyyyoo{fill:currentcolor;} .r-z7pwl0{max-width:700px;} .r-z80fyv{height:20px;} .r-zchlnj{right:0px;} @-webkit-keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} @keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} .r-19gue0{position:absolute;visibility:hidden;top:0;width:50px;pointer-events:none} .r-19gue0.loaded{visibility:visible;top:50vh;width:50px}

Steps to Replicate

  1. Install Nextcloud 31.0.0.18, richdocuments 8.6.2, richdocumentscode 24.4.1204.

  2. Set wopi_url to https://elevatedinstinct.com/apps/richdocumentscode/proxy.php via occ.

  3. Upload a .docx file, attempt to open—spins.

  4. Test WOPI direct:

curl -I "https://elevatedinstinct.com/index.php/apps/richdocuments/wopi/files/642_oc5n3eiclijc?access_token=qpgzrlDxOmPRimHOW4JwzPhldseGbRRW"

→ 200 OK

  1. Test proxy:
curl -I "https://elevatedinstinct.com/apps/richdocumentscode/proxy.php?req=/cool/https%3A%2F%2Felevatedinstinct.com%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F642_oc5n3eiclijc%3Faccess_token%3DqpgzrlDxOmPRimHOW4JwzPhldseGbRRW"
[stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;} .css-175oi2r{align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;} .css-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;} .css-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;} [stylesheet-group="2"]{} .r-13awgt0{flex:1;} .r-1adg3ll{display:block;} .r-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;} .r-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;} .r-1udh08x{overflow-x:hidden;overflow-y:hidden;} .r-4iw3lz{border-bottom-width:0;border-left-width:0;border-right-width:0;border-top-width:0;} .r-4qtqp9{display:inline-block;} .r-6koalj{display:flex;} .r-bztko3{overflow-x:visible;overflow-y:visible;} .r-crgep1{margin:0px;} .r-hvic4v{display:none;} .r-krxsd3{display:-webkit-box;} .r-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;} .r-sdzlij{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-top-left-radius:9999px;border-top-right-radius:9999px;} .r-t60dpp{padding:0px;} .r-wwvuq4{padding:0;} .r-xoduu5{display:inline-flex;} .r-ywje51{margin:auto;} .r-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;} [stylesheet-group="2.1"]{} .r-1559e4e{padding-bottom:2px;padding-top:2px;} .r-1fkl15p{padding-left:32px;padding-right:32px;} .r-3o4zer{padding-left:12px;padding-right:12px;} .r-3pj75a{padding-left:16px;padding-right:16px;} .r-cxgwc0{padding-left:24px;padding-right:24px;} .r-dd0y9b{padding-bottom:20px;padding-top:20px;} .r-ddtstp{margin-bottom:0px;margin-top:0px;} .r-dp7rxi{padding-bottom:40px;padding-top:40px;} .r-f8sm7e{margin-left:auto;margin-right:auto;} .r-n7gxbd{padding-left:4px;padding-right:4px;} .r-s49dbf{margin-bottom:1px;margin-top:1px;} .r-sjygvo{padding-left:1em;padding-right:1em;} [stylesheet-group="2.2"]{} .r-1ca1ndr{margin-left:0.5em;} .r-1ez5h0i{margin-left:4px;} .r-1gs4q39{margin-right:4px;} .r-1kkk96v{margin-left:8px;} .r-1kpi4qh{margin-left:0.075em;} .r-1l2kgy{margin-right:0.5em;} .r-1q6cnnd{right:-2px;} .r-1wron08{margin-right:8px;} .r-3t4u6i{margin-left:2px;} .r-45ll9u{left:50%;} .r-5f1w11{left:-2px;} .r-k4bwe5{margin-right:0.075em;} .r-o59np7{padding-right:8px;} .r-ocobd0{right:50%;} .r-qjj4hq{padding-left:8px;} .r-x1x4zq{margin-right:2px;} [stylesheet-group="3"]{} .r-105ug2t{pointer-events:auto!important;} .r-109y4c4{height:1px;} .r-10ptun7{height:16px;} .r-10v3vxq{transform:scaleX(-1);} .r-117bsoe{margin-bottom:20px;} .r-11c0sde{margin-top:24px;} .r-11j9u27{visibility:hidden;} .r-12181gd{box-shadow:0 0 2px rgba(0,0,0,0.03) inset;} .r-12sks89{min-height:22px;} .r-12vffkv>*{pointer-events:auto;} .r-12vffkv{pointer-events:none!important;} .r-12ym1je{width:18px;} .r-135wba7{line-height:24px;} .r-13qz1uu{width:100%;} .r-13wfysu{-webkit-text-decoration-line:none;text-decoration-line:none;} .r-146iojx{max-width:300px;} .r-1472mwg{height:24px;} .r-14j79pv{color:rgba(83,100,113,1.00);} .r-14lw9ot{background-color:rgba(255,255,255,1.00);} .r-15ysp7h{min-height:32px;} .r-16dba41{font-weight:400;} .r-16y2uox{flex-grow:1;} .r-176fswd{transform:translateX(-50%) translateY(-50%);} .r-1777fci{justify-content:center;} .r-17bb2tj{animation-duration:0.75s;} .r-17leim2{background-repeat:repeat;} .r-17s6mgv{justify-content:flex-end;} .r-18jsvk2{color:rgba(15,20,25,1.00);} .r-18tzken{width:56px;} .r-18u37iz{flex-direction:row;} .r-18yzcnr{height:22px;} .r-19wmn03{width:20px;} .r-19yznuf{min-height:52px;} .r-1abnn5w{animation-play-state:paused;} .r-1acpoxo{width:36px;} .r-1ad0z5i{word-break:break-all;} .r-1awozwy{align-items:center;} .r-1b43r93{font-size:14px;} .r-1betnmo{max-width:672px;} .r-1blnp2b{width:72px;} .r-1blvdjr{font-size:23px;} .r-1ceczpf{min-height:24px;} .r-1cwl3u0{line-height:16px;} .r-1d2f490{left:0px;} .r-1ddef8g{-webkit-text-decoration-line:underline;text-decoration-line:underline;} .r-1ebb2ja{list-style:none;} .r-1ff274t{text-align:right;} .r-1gkfh8e{font-size:11px;} .r-1h0z5md{justify-content:flex-start;} .r-1h8ys4a{padding-top:4px;} .r-1hjwoze{height:18px;} .r-1iln25a{word-wrap:normal;} .r-1inkyih{font-size:17px;} .r-1ipicw7{width:300px;} .r-1iusvr4{flex-basis:0px;} .r-1janqcz{width:16px;} .r-1jaylin{width:-webkit-max-content;width:-moz-max-content;width:max-content;} .r-1k78y06{font-family:Tahoma, Arial, sans-serif;} .r-1kihuf0{align-self:center;} .r-1ldzwu0{animation-timing-function:linear;} .r-1loqt21{cursor:pointer;} .r-1mlwlqe{flex-basis:auto;} .r-1mrlafo{background-position:0;} .r-1muvv40{animation-iteration-count:infinite;} .r-1mwlp6a{height:56px;} .r-1nao33i{color:rgba(231,233,234,1.00);} .r-1niwhzg{background-color:rgba(0,0,0,0.00);} .r-1ny4l3l{outline-style:none;} .r-1oifz5y{background-color:rgba(170,17,0,1.00);} .r-1oszu61{align-items:stretch;} .r-1otgn73{touch-action:manipulation;} .r-1p0dtai{bottom:0px;} .r-1pi2tsx{height:100%;} .r-1ps3wis{min-width:44px;} .r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-1qi8awa{min-width:36px;} .r-1r5jyh0{min-height:130px;} .r-1r8g8re{height:36px;} .r-1s2hp8q{min-height:26px;} .r-1sxrcry{background-size:auto;} .r-1tl8opc{font-family:"Segoe UI",Meiryo,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;} .r-1to6hqq{background-color:rgba(255,212,0,1.00);} .r-1ttztb7{text-align:inherit;} .r-1udbk01{text-overflow:ellipsis;} .r-1v2oles{top:50%;} .r-1vmecro{direction:rtl;} .r-1vr29t4{font-weight:800;} .r-1wb8bfx{text-decoration-thickness:2px;} .r-1wbh5a2{flex-shrink:1;} .r-1wyyakw{z-index:-1;} .r-1xcajam{position:fixed;} .r-1xk2f4g{clip:rect(1px, 1px, 1px, 1px);} .r-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;} .r-1xvli5t{height:1.25em;} .r-1y7e96w{min-width:22px;} .r-1ye8kvj{max-width:600px;} .r-1yef0xd{animation-name:r-11cv4x;} .r-1yjpyg1{font-size:31px;} .r-1ykxob0{top:60%;} .r-2o02ov{margin-top:40px;} .r-2tavb8{background-color:rgba(0,0,0,0.60);} .r-2yi16{min-height:36px;} .r-36ujnk{font-style:italic;} .r-37tt59{line-height:32px;} .r-3s2u2q{white-space:nowrap;} .r-417010{z-index:0;} .r-4gszlv{background-size:cover;} .r-4wgw6l{min-width:32px;} .r-54znze{color:rgba(239,243,244,1.00);} .r-56xrmm{line-height:12px;} .r-6026j{background-color:rgba(255,255,255,0.85);} .r-633pao{pointer-events:none!important;} .r-6416eg{-moz-transition-property:background-color, box-shadow;-webkit-transition-property:background-color, box-shadow;transition-property:background-color, box-shadow;} .r-64el8z{min-width:52px;} .r-7q8q6z{cursor:default;} .r-8akbws{-webkit-box-orient:vertical;} .r-8jfcpp{top:-2px;} .r-92ng3h{width:1px;} .r-a023e6{font-size:15px;} .r-adyw6z{font-size:20px;} .r-agouwx{transform:translateZ(0);} .r-ah5dr5>*{pointer-events:none;} .r-ah5dr5{pointer-events:auto!important;} .r-aqfbo4{backface-visibility:hidden;} .r-b88u0q{font-weight:700;} .r-bcqeeo{min-width:0px;} .r-bnwqim{position:relative;} .r-bt1l66{min-height:20px;} .r-bvlit7{margin-bottom:-12px;} .r-deolkf{box-sizing:border-box;} .r-dflpy8{height:1.2em;} .r-dnmrzs{max-width:100%;} .r-ehq7j7{background-size:contain;} .r-emqnss{transform:translateZ(0px);} .r-eqz5dr{flex-direction:column;} .r-ero68b{min-height:40px;} .r-fdjqy7{text-align:left;} .r-fm7h5w{font-family:"TwitterChirpExtendedHeavy","Verdana",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-h9hxbl{width:1.2em;} .r-icoktb{opacity:0.5;} .r-ifefl9{min-height:0px;} .r-impgnl{transform:translateX(50%) translateY(-50%);} .r-iphfwy{padding-bottom:4px;} .r-ipm5af{top:0px;} .r-jmul1s{transform:scale(1.1);} .r-jwli3a{color:rgba(255,255,255,1.00);} .r-kemksi{background-color:rgba(0,0,0,1.00);} .r-lp5zef{min-width:24px;} .r-lrsllp{width:24px;} .r-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;} .r-m6rgpd{vertical-align:text-bottom;} .r-majxgm{font-weight:500;} .r-n6v787{font-size:13px;} .r-nwxazl{line-height:40px;} .r-o7ynqc{transition-duration:0.2s;} .r-peo1c{min-height:44px;} .r-poiln3{font-family:inherit;} .r-pp5qcn{vertical-align:-20%;} .r-q4m81j{text-align:center;} .r-qlhcfr{font-size:0.001px;} .r-qvk6io{line-height:0px;} .r-qvutc0{word-wrap:break-word;} .r-rjixqe{line-height:20px;} .r-rki7wi{bottom:12px;} .r-sb58tz{max-width:1000px;} .r-tjvw6i{text-decoration-thickness:1px;} .r-u6sd8q{background-repeat:no-repeat;} .r-u8s1d{position:absolute;} .r-ueyrd6{line-height:36px;} .r-uho16t{font-size:34px;} .r-vkv6oe{min-width:40px;} .r-vlxjld{color:rgba(247,249,249,1.00);} .r-vqxq0j{border:0 solid black;} .r-vrz42v{line-height:28px;} .r-vvn4in{background-position:center;} .r-wy61xf{height:72px;} .r-x3cy2q{background-size:100% 100%;} .r-x572qd{background-color:rgba(247,249,249,1.00);} .r-xigjrr{-webkit-filter:blur(4px);filter:blur(4px);} .r-yc9v9c{width:22px;} .r-yfoy6g{background-color:rgba(21,32,43,1.00);} .r-yy2aun{font-size:26px;} .r-yyyyoo{fill:currentcolor;} .r-z7pwl0{max-width:700px;} .r-z80fyv{height:20px;} .r-zchlnj{right:0px;} @-webkit-keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} @keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} .r-19gue0{position:absolute;visibility:hidden;top:0;width:50px;pointer-events:none} .r-19gue0.loaded{visibility:visible;top:50vh;width:50px}
  1. → 400 Bad Request

Logs

  • Proxy Debug (latest, 16:48:48 GMT):
2025-03-17 16:48:39 - Sending: 'HEAD /lool/wopi/files/642_oc5n3eiclijc?access_token=qpgzrlDxOmPRimHOW4JwzPhldseGbRRW HTTP/1.1'
2025-03-17 16:48:48 - Response headers: HTTP/1.1 400 (Bad Request), Date: Mon, 17 Mar 2025 16:48:48, Content-Length: 0, Connection: close
  • Collabora Log (last relevant, 16:32:41 GMT):
wsd-496599-496617 2025-03-17 16:32:41 - ERR #27: bad request: [HEAD /cool/wopi/files/...]: Invalid or unknown request
  • LiteSpeed: No errors, just cache debug (16:36:02 GMT).

proxy.php (Current, old-7)

  • Rewrites to /lool/wopi/files/…

  • Adds --o:storage.wopi.host[0]=elevatedinstinct\.com in startCoolwsd().

[stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;} .css-175oi2r{align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;} .css-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;} .css-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;} [stylesheet-group="2"]{} .r-13awgt0{flex:1;} .r-1adg3ll{display:block;} .r-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;} .r-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;} .r-1udh08x{overflow-x:hidden;overflow-y:hidden;} .r-4iw3lz{border-bottom-width:0;border-left-width:0;border-right-width:0;border-top-width:0;} .r-4qtqp9{display:inline-block;} .r-6koalj{display:flex;} .r-bztko3{overflow-x:visible;overflow-y:visible;} .r-crgep1{margin:0px;} .r-hvic4v{display:none;} .r-krxsd3{display:-webkit-box;} .r-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;} .r-sdzlij{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-top-left-radius:9999px;border-top-right-radius:9999px;} .r-t60dpp{padding:0px;} .r-wwvuq4{padding:0;} .r-xoduu5{display:inline-flex;} .r-ywje51{margin:auto;} .r-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;} [stylesheet-group="2.1"]{} .r-1559e4e{padding-bottom:2px;padding-top:2px;} .r-1fkl15p{padding-left:32px;padding-right:32px;} .r-3o4zer{padding-left:12px;padding-right:12px;} .r-3pj75a{padding-left:16px;padding-right:16px;} .r-cxgwc0{padding-left:24px;padding-right:24px;} .r-dd0y9b{padding-bottom:20px;padding-top:20px;} .r-ddtstp{margin-bottom:0px;margin-top:0px;} .r-dp7rxi{padding-bottom:40px;padding-top:40px;} .r-f8sm7e{margin-left:auto;margin-right:auto;} .r-n7gxbd{padding-left:4px;padding-right:4px;} .r-s49dbf{margin-bottom:1px;margin-top:1px;} .r-sjygvo{padding-left:1em;padding-right:1em;} [stylesheet-group="2.2"]{} .r-1ca1ndr{margin-left:0.5em;} .r-1ez5h0i{margin-left:4px;} .r-1gs4q39{margin-right:4px;} .r-1kkk96v{margin-left:8px;} .r-1kpi4qh{margin-left:0.075em;} .r-1l2kgy{margin-right:0.5em;} .r-1q6cnnd{right:-2px;} .r-1wron08{margin-right:8px;} .r-3t4u6i{margin-left:2px;} .r-45ll9u{left:50%;} .r-5f1w11{left:-2px;} .r-k4bwe5{margin-right:0.075em;} .r-o59np7{padding-right:8px;} .r-ocobd0{right:50%;} .r-qjj4hq{padding-left:8px;} .r-x1x4zq{margin-right:2px;} [stylesheet-group="3"]{} .r-105ug2t{pointer-events:auto!important;} .r-109y4c4{height:1px;} .r-10ptun7{height:16px;} .r-10v3vxq{transform:scaleX(-1);} .r-117bsoe{margin-bottom:20px;} .r-11c0sde{margin-top:24px;} .r-11j9u27{visibility:hidden;} .r-12181gd{box-shadow:0 0 2px rgba(0,0,0,0.03) inset;} .r-12sks89{min-height:22px;} .r-12vffkv>*{pointer-events:auto;} .r-12vffkv{pointer-events:none!important;} .r-12ym1je{width:18px;} .r-135wba7{line-height:24px;} .r-13qz1uu{width:100%;} .r-13wfysu{-webkit-text-decoration-line:none;text-decoration-line:none;} .r-146iojx{max-width:300px;} .r-1472mwg{height:24px;} .r-14j79pv{color:rgba(83,100,113,1.00);} .r-14lw9ot{background-color:rgba(255,255,255,1.00);} .r-15ysp7h{min-height:32px;} .r-16dba41{font-weight:400;} .r-16y2uox{flex-grow:1;} .r-176fswd{transform:translateX(-50%) translateY(-50%);} .r-1777fci{justify-content:center;} .r-17bb2tj{animation-duration:0.75s;} .r-17leim2{background-repeat:repeat;} .r-17s6mgv{justify-content:flex-end;} .r-18jsvk2{color:rgba(15,20,25,1.00);} .r-18tzken{width:56px;} .r-18u37iz{flex-direction:row;} .r-18yzcnr{height:22px;} .r-19wmn03{width:20px;} .r-19yznuf{min-height:52px;} .r-1abnn5w{animation-play-state:paused;} .r-1acpoxo{width:36px;} .r-1ad0z5i{word-break:break-all;} .r-1awozwy{align-items:center;} .r-1b43r93{font-size:14px;} .r-1betnmo{max-width:672px;} .r-1blnp2b{width:72px;} .r-1blvdjr{font-size:23px;} .r-1ceczpf{min-height:24px;} .r-1cwl3u0{line-height:16px;} .r-1d2f490{left:0px;} .r-1ddef8g{-webkit-text-decoration-line:underline;text-decoration-line:underline;} .r-1ebb2ja{list-style:none;} .r-1ff274t{text-align:right;} .r-1gkfh8e{font-size:11px;} .r-1h0z5md{justify-content:flex-start;} .r-1h8ys4a{padding-top:4px;} .r-1hjwoze{height:18px;} .r-1iln25a{word-wrap:normal;} .r-1inkyih{font-size:17px;} .r-1ipicw7{width:300px;} .r-1iusvr4{flex-basis:0px;} .r-1janqcz{width:16px;} .r-1jaylin{width:-webkit-max-content;width:-moz-max-content;width:max-content;} .r-1k78y06{font-family:Tahoma, Arial, sans-serif;} .r-1kihuf0{align-self:center;} .r-1ldzwu0{animation-timing-function:linear;} .r-1loqt21{cursor:pointer;} .r-1mlwlqe{flex-basis:auto;} .r-1mrlafo{background-position:0;} .r-1muvv40{animation-iteration-count:infinite;} .r-1mwlp6a{height:56px;} .r-1nao33i{color:rgba(231,233,234,1.00);} .r-1niwhzg{background-color:rgba(0,0,0,0.00);} .r-1ny4l3l{outline-style:none;} .r-1oifz5y{background-color:rgba(170,17,0,1.00);} .r-1oszu61{align-items:stretch;} .r-1otgn73{touch-action:manipulation;} .r-1p0dtai{bottom:0px;} .r-1pi2tsx{height:100%;} .r-1ps3wis{min-width:44px;} .r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-1qi8awa{min-width:36px;} .r-1r5jyh0{min-height:130px;} .r-1r8g8re{height:36px;} .r-1s2hp8q{min-height:26px;} .r-1sxrcry{background-size:auto;} .r-1tl8opc{font-family:"Segoe UI",Meiryo,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;} .r-1to6hqq{background-color:rgba(255,212,0,1.00);} .r-1ttztb7{text-align:inherit;} .r-1udbk01{text-overflow:ellipsis;} .r-1v2oles{top:50%;} .r-1vmecro{direction:rtl;} .r-1vr29t4{font-weight:800;} .r-1wb8bfx{text-decoration-thickness:2px;} .r-1wbh5a2{flex-shrink:1;} .r-1wyyakw{z-index:-1;} .r-1xcajam{position:fixed;} .r-1xk2f4g{clip:rect(1px, 1px, 1px, 1px);} .r-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;} .r-1xvli5t{height:1.25em;} .r-1y7e96w{min-width:22px;} .r-1ye8kvj{max-width:600px;} .r-1yef0xd{animation-name:r-11cv4x;} .r-1yjpyg1{font-size:31px;} .r-1ykxob0{top:60%;} .r-2o02ov{margin-top:40px;} .r-2tavb8{background-color:rgba(0,0,0,0.60);} .r-2yi16{min-height:36px;} .r-36ujnk{font-style:italic;} .r-37tt59{line-height:32px;} .r-3s2u2q{white-space:nowrap;} .r-417010{z-index:0;} .r-4gszlv{background-size:cover;} .r-4wgw6l{min-width:32px;} .r-54znze{color:rgba(239,243,244,1.00);} .r-56xrmm{line-height:12px;} .r-6026j{background-color:rgba(255,255,255,0.85);} .r-633pao{pointer-events:none!important;} .r-6416eg{-moz-transition-property:background-color, box-shadow;-webkit-transition-property:background-color, box-shadow;transition-property:background-color, box-shadow;} .r-64el8z{min-width:52px;} .r-7q8q6z{cursor:default;} .r-8akbws{-webkit-box-orient:vertical;} .r-8jfcpp{top:-2px;} .r-92ng3h{width:1px;} .r-a023e6{font-size:15px;} .r-adyw6z{font-size:20px;} .r-agouwx{transform:translateZ(0);} .r-ah5dr5>*{pointer-events:none;} .r-ah5dr5{pointer-events:auto!important;} .r-aqfbo4{backface-visibility:hidden;} .r-b88u0q{font-weight:700;} .r-bcqeeo{min-width:0px;} .r-bnwqim{position:relative;} .r-bt1l66{min-height:20px;} .r-bvlit7{margin-bottom:-12px;} .r-deolkf{box-sizing:border-box;} .r-dflpy8{height:1.2em;} .r-dnmrzs{max-width:100%;} .r-ehq7j7{background-size:contain;} .r-emqnss{transform:translateZ(0px);} .r-eqz5dr{flex-direction:column;} .r-ero68b{min-height:40px;} .r-fdjqy7{text-align:left;} .r-fm7h5w{font-family:"TwitterChirpExtendedHeavy","Verdana",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-h9hxbl{width:1.2em;} .r-icoktb{opacity:0.5;} .r-ifefl9{min-height:0px;} .r-impgnl{transform:translateX(50%) translateY(-50%);} .r-iphfwy{padding-bottom:4px;} .r-ipm5af{top:0px;} .r-jmul1s{transform:scale(1.1);} .r-jwli3a{color:rgba(255,255,255,1.00);} .r-kemksi{background-color:rgba(0,0,0,1.00);} .r-lp5zef{min-width:24px;} .r-lrsllp{width:24px;} .r-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;} .r-m6rgpd{vertical-align:text-bottom;} .r-majxgm{font-weight:500;} .r-n6v787{font-size:13px;} .r-nwxazl{line-height:40px;} .r-o7ynqc{transition-duration:0.2s;} .r-peo1c{min-height:44px;} .r-poiln3{font-family:inherit;} .r-pp5qcn{vertical-align:-20%;} .r-q4m81j{text-align:center;} .r-qlhcfr{font-size:0.001px;} .r-qvk6io{line-height:0px;} .r-qvutc0{word-wrap:break-word;} .r-rjixqe{line-height:20px;} .r-rki7wi{bottom:12px;} .r-sb58tz{max-width:1000px;} .r-tjvw6i{text-decoration-thickness:1px;} .r-u6sd8q{background-repeat:no-repeat;} .r-u8s1d{position:absolute;} .r-ueyrd6{line-height:36px;} .r-uho16t{font-size:34px;} .r-vkv6oe{min-width:40px;} .r-vlxjld{color:rgba(247,249,249,1.00);} .r-vqxq0j{border:0 solid black;} .r-vrz42v{line-height:28px;} .r-vvn4in{background-position:center;} .r-wy61xf{height:72px;} .r-x3cy2q{background-size:100% 100%;} .r-x572qd{background-color:rgba(247,249,249,1.00);} .r-xigjrr{-webkit-filter:blur(4px);filter:blur(4px);} .r-yc9v9c{width:22px;} .r-yfoy6g{background-color:rgba(21,32,43,1.00);} .r-yy2aun{font-size:26px;} .r-yyyyoo{fill:currentcolor;} .r-z7pwl0{max-width:700px;} .r-z80fyv{height:20px;} .r-zchlnj{right:0px;} @-webkit-keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} @keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} .r-19gue0{position:absolute;visibility:hidden;top:0;width:50px;pointer-events:none} .r-19gue0.loaded{visibility:visible;top:50vh;width:50px}

What I’ve Tried

  • Seven proxy.php versions—/cool/, /lool/, raw URI—all 400.

  • Direct WOPI works—proxy fails.

  • Added storage.wopi.host—no change.

  • Restarted LiteSpeed, killed coolwsd—same 400.

Expected Behavior

Opening a .docx loads Collabora Online editor via proxy.php without spinning or 400 errors.

Actual Behavior

UI spins, proxy returns 400, Collabora logs “Invalid or unknown request”.

Additional Info

  • Worked pre-restart—broke after.

  • Hostinger VPS, AppImage-based CODE—no /etc/coolwsd/coolwsd.xml.

[stylesheet-group="0"]{} body{margin:0;} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);} input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;} [stylesheet-group="1"]{} .css-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;} .css-175oi2r{align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;} .css-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;} .css-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;} [stylesheet-group="2"]{} .r-13awgt0{flex:1;} .r-1adg3ll{display:block;} .r-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;} .r-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;} .r-1udh08x{overflow-x:hidden;overflow-y:hidden;} .r-4iw3lz{border-bottom-width:0;border-left-width:0;border-right-width:0;border-top-width:0;} .r-4qtqp9{display:inline-block;} .r-6koalj{display:flex;} .r-bztko3{overflow-x:visible;overflow-y:visible;} .r-crgep1{margin:0px;} .r-hvic4v{display:none;} .r-krxsd3{display:-webkit-box;} .r-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;} .r-sdzlij{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-top-left-radius:9999px;border-top-right-radius:9999px;} .r-t60dpp{padding:0px;} .r-wwvuq4{padding:0;} .r-xoduu5{display:inline-flex;} .r-ywje51{margin:auto;} .r-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;} [stylesheet-group="2.1"]{} .r-1559e4e{padding-bottom:2px;padding-top:2px;} .r-1fkl15p{padding-left:32px;padding-right:32px;} .r-3o4zer{padding-left:12px;padding-right:12px;} .r-3pj75a{padding-left:16px;padding-right:16px;} .r-cxgwc0{padding-left:24px;padding-right:24px;} .r-dd0y9b{padding-bottom:20px;padding-top:20px;} .r-ddtstp{margin-bottom:0px;margin-top:0px;} .r-dp7rxi{padding-bottom:40px;padding-top:40px;} .r-f8sm7e{margin-left:auto;margin-right:auto;} .r-n7gxbd{padding-left:4px;padding-right:4px;} .r-s49dbf{margin-bottom:1px;margin-top:1px;} .r-sjygvo{padding-left:1em;padding-right:1em;} [stylesheet-group="2.2"]{} .r-1ca1ndr{margin-left:0.5em;} .r-1ez5h0i{margin-left:4px;} .r-1gs4q39{margin-right:4px;} .r-1kkk96v{margin-left:8px;} .r-1kpi4qh{margin-left:0.075em;} .r-1l2kgy{margin-right:0.5em;} .r-1q6cnnd{right:-2px;} .r-1wron08{margin-right:8px;} .r-3t4u6i{margin-left:2px;} .r-45ll9u{left:50%;} .r-5f1w11{left:-2px;} .r-k4bwe5{margin-right:0.075em;} .r-o59np7{padding-right:8px;} .r-ocobd0{right:50%;} .r-qjj4hq{padding-left:8px;} .r-x1x4zq{margin-right:2px;} [stylesheet-group="3"]{} .r-105ug2t{pointer-events:auto!important;} .r-109y4c4{height:1px;} .r-10ptun7{height:16px;} .r-10v3vxq{transform:scaleX(-1);} .r-117bsoe{margin-bottom:20px;} .r-11c0sde{margin-top:24px;} .r-11j9u27{visibility:hidden;} .r-12181gd{box-shadow:0 0 2px rgba(0,0,0,0.03) inset;} .r-12sks89{min-height:22px;} .r-12vffkv>*{pointer-events:auto;} .r-12vffkv{pointer-events:none!important;} .r-12ym1je{width:18px;} .r-135wba7{line-height:24px;} .r-13qz1uu{width:100%;} .r-13wfysu{-webkit-text-decoration-line:none;text-decoration-line:none;} .r-146iojx{max-width:300px;} .r-1472mwg{height:24px;} .r-14j79pv{color:rgba(83,100,113,1.00);} .r-14lw9ot{background-color:rgba(255,255,255,1.00);} .r-15ysp7h{min-height:32px;} .r-16dba41{font-weight:400;} .r-16y2uox{flex-grow:1;} .r-176fswd{transform:translateX(-50%) translateY(-50%);} .r-1777fci{justify-content:center;} .r-17bb2tj{animation-duration:0.75s;} .r-17leim2{background-repeat:repeat;} .r-17s6mgv{justify-content:flex-end;} .r-18jsvk2{color:rgba(15,20,25,1.00);} .r-18tzken{width:56px;} .r-18u37iz{flex-direction:row;} .r-18yzcnr{height:22px;} .r-19wmn03{width:20px;} .r-19yznuf{min-height:52px;} .r-1abnn5w{animation-play-state:paused;} .r-1acpoxo{width:36px;} .r-1ad0z5i{word-break:break-all;} .r-1awozwy{align-items:center;} .r-1b43r93{font-size:14px;} .r-1betnmo{max-width:672px;} .r-1blnp2b{width:72px;} .r-1blvdjr{font-size:23px;} .r-1ceczpf{min-height:24px;} .r-1cwl3u0{line-height:16px;} .r-1d2f490{left:0px;} .r-1ddef8g{-webkit-text-decoration-line:underline;text-decoration-line:underline;} .r-1ebb2ja{list-style:none;} .r-1ff274t{text-align:right;} .r-1gkfh8e{font-size:11px;} .r-1h0z5md{justify-content:flex-start;} .r-1h8ys4a{padding-top:4px;} .r-1hjwoze{height:18px;} .r-1iln25a{word-wrap:normal;} .r-1inkyih{font-size:17px;} .r-1ipicw7{width:300px;} .r-1iusvr4{flex-basis:0px;} .r-1janqcz{width:16px;} .r-1jaylin{width:-webkit-max-content;width:-moz-max-content;width:max-content;} .r-1k78y06{font-family:Tahoma, Arial, sans-serif;} .r-1kihuf0{align-self:center;} .r-1ldzwu0{animation-timing-function:linear;} .r-1loqt21{cursor:pointer;} .r-1mlwlqe{flex-basis:auto;} .r-1mrlafo{background-position:0;} .r-1muvv40{animation-iteration-count:infinite;} .r-1mwlp6a{height:56px;} .r-1nao33i{color:rgba(231,233,234,1.00);} .r-1niwhzg{background-color:rgba(0,0,0,0.00);} .r-1ny4l3l{outline-style:none;} .r-1oifz5y{background-color:rgba(170,17,0,1.00);} .r-1oszu61{align-items:stretch;} .r-1otgn73{touch-action:manipulation;} .r-1p0dtai{bottom:0px;} .r-1pi2tsx{height:100%;} .r-1ps3wis{min-width:44px;} .r-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-1qi8awa{min-width:36px;} .r-1r5jyh0{min-height:130px;} .r-1r8g8re{height:36px;} .r-1s2hp8q{min-height:26px;} .r-1sxrcry{background-size:auto;} .r-1tl8opc{font-family:"Segoe UI",Meiryo,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;} .r-1to6hqq{background-color:rgba(255,212,0,1.00);} .r-1ttztb7{text-align:inherit;} .r-1udbk01{text-overflow:ellipsis;} .r-1v2oles{top:50%;} .r-1vmecro{direction:rtl;} .r-1vr29t4{font-weight:800;} .r-1wb8bfx{text-decoration-thickness:2px;} .r-1wbh5a2{flex-shrink:1;} .r-1wyyakw{z-index:-1;} .r-1xcajam{position:fixed;} .r-1xk2f4g{clip:rect(1px, 1px, 1px, 1px);} .r-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;} .r-1xvli5t{height:1.25em;} .r-1y7e96w{min-width:22px;} .r-1ye8kvj{max-width:600px;} .r-1yef0xd{animation-name:r-11cv4x;} .r-1yjpyg1{font-size:31px;} .r-1ykxob0{top:60%;} .r-2o02ov{margin-top:40px;} .r-2tavb8{background-color:rgba(0,0,0,0.60);} .r-2yi16{min-height:36px;} .r-36ujnk{font-style:italic;} .r-37tt59{line-height:32px;} .r-3s2u2q{white-space:nowrap;} .r-417010{z-index:0;} .r-4gszlv{background-size:cover;} .r-4wgw6l{min-width:32px;} .r-54znze{color:rgba(239,243,244,1.00);} .r-56xrmm{line-height:12px;} .r-6026j{background-color:rgba(255,255,255,0.85);} .r-633pao{pointer-events:none!important;} .r-6416eg{-moz-transition-property:background-color, box-shadow;-webkit-transition-property:background-color, box-shadow;transition-property:background-color, box-shadow;} .r-64el8z{min-width:52px;} .r-7q8q6z{cursor:default;} .r-8akbws{-webkit-box-orient:vertical;} .r-8jfcpp{top:-2px;} .r-92ng3h{width:1px;} .r-a023e6{font-size:15px;} .r-adyw6z{font-size:20px;} .r-agouwx{transform:translateZ(0);} .r-ah5dr5>*{pointer-events:none;} .r-ah5dr5{pointer-events:auto!important;} .r-aqfbo4{backface-visibility:hidden;} .r-b88u0q{font-weight:700;} .r-bcqeeo{min-width:0px;} .r-bnwqim{position:relative;} .r-bt1l66{min-height:20px;} .r-bvlit7{margin-bottom:-12px;} .r-deolkf{box-sizing:border-box;} .r-dflpy8{height:1.2em;} .r-dnmrzs{max-width:100%;} .r-ehq7j7{background-size:contain;} .r-emqnss{transform:translateZ(0px);} .r-eqz5dr{flex-direction:column;} .r-ero68b{min-height:40px;} .r-fdjqy7{text-align:left;} .r-fm7h5w{font-family:"TwitterChirpExtendedHeavy","Verdana",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;} .r-h9hxbl{width:1.2em;} .r-icoktb{opacity:0.5;} .r-ifefl9{min-height:0px;} .r-impgnl{transform:translateX(50%) translateY(-50%);} .r-iphfwy{padding-bottom:4px;} .r-ipm5af{top:0px;} .r-jmul1s{transform:scale(1.1);} .r-jwli3a{color:rgba(255,255,255,1.00);} .r-kemksi{background-color:rgba(0,0,0,1.00);} .r-lp5zef{min-width:24px;} .r-lrsllp{width:24px;} .r-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;} .r-m6rgpd{vertical-align:text-bottom;} .r-majxgm{font-weight:500;} .r-n6v787{font-size:13px;} .r-nwxazl{line-height:40px;} .r-o7ynqc{transition-duration:0.2s;} .r-peo1c{min-height:44px;} .r-poiln3{font-family:inherit;} .r-pp5qcn{vertical-align:-20%;} .r-q4m81j{text-align:center;} .r-qlhcfr{font-size:0.001px;} .r-qvk6io{line-height:0px;} .r-qvutc0{word-wrap:break-word;} .r-rjixqe{line-height:20px;} .r-rki7wi{bottom:12px;} .r-sb58tz{max-width:1000px;} .r-tjvw6i{text-decoration-thickness:1px;} .r-u6sd8q{background-repeat:no-repeat;} .r-u8s1d{position:absolute;} .r-ueyrd6{line-height:36px;} .r-uho16t{font-size:34px;} .r-vkv6oe{min-width:40px;} .r-vlxjld{color:rgba(247,249,249,1.00);} .r-vqxq0j{border:0 solid black;} .r-vrz42v{line-height:28px;} .r-vvn4in{background-position:center;} .r-wy61xf{height:72px;} .r-x3cy2q{background-size:100% 100%;} .r-x572qd{background-color:rgba(247,249,249,1.00);} .r-xigjrr{-webkit-filter:blur(4px);filter:blur(4px);} .r-yc9v9c{width:22px;} .r-yfoy6g{background-color:rgba(21,32,43,1.00);} .r-yy2aun{font-size:26px;} .r-yyyyoo{fill:currentcolor;} .r-z7pwl0{max-width:700px;} .r-z80fyv{height:20px;} .r-zchlnj{right:0px;} @-webkit-keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} @keyframes r-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} .r-19gue0{position:absolute;visibility:hidden;top:0;width:50px;pointer-events:none} .r-19gue0.loaded{visibility:visible;top:50vh;width:50px}

Request

Need exact WOPI path and config for CODE 24.4.1204 with richdocumentscode. Why does /lool/wopi/files/… fail despite matching source?

this sounds bad as lool is not used since ages… but I’m not sure if collabora-built-in still uses it somewhere… as you seem to use VPS I assume you have root and shell - in most cases dedicated Docker or native CODE installation is far easier to maintain and troubleshoot I would recommend moving away from built-in

OK lets try this again I am on a litespeed web server which I had what you called a built-in version of nextcloud but could not get Collabora to work no matter what i did. I submitted this issue to this forum to which i received a short very unhelpful response from WWE Leader. Well anyway I took from his response that your AIO was what you wanted people to use so i began the migration. That was last week and again i can’t get collabora to connect but now we have complicated things by 100% by containerising everything. Now i need reverse proxies to get this to function which works for some things and not others. You have documentation on creating proxies for almost every web server out there except litespeed.
I am a potential new customer at the enterprise level however we are testing your free version to see how the software runs, how is support, etc. Currently i would say your failing as i am not even able to get your product functioning. Your support on this forum leaves a lot to be desired. I don’t know your software because I am new to it and a prospective new client. Your Very unhelpful response was “this sounds bad as lool is not used since ages… but I’m not sure if collabora-built-in still uses it somewhere… as you seem to use VPS I assume you have root and shell - in most cases dedicated Docker or native CODE installation is far easier to maintain and troubleshoot I would recommend moving away from built-in”. OK so what are you actually saying go install the AIO?
Please provide some form of guidence on how to setup proxies in litespeed that work for your software as online i found only this one article all-in-one/reverse-proxy.md at main ¡ nextcloud/all-in-one ¡ GitHub which we have tried following but to no avail and litespeed is not in the mix. Thank You in Advance for your assistance.

litespeed proxies
extprocessor NextcloudProxy {
type proxy
address 127.0.0.1:11001
maxConns 50
initTimeout 300
retryTimeout 30
respBuffer 0
pcKeepAliveTimeout 300
websocket 1 # Make sure this is set to 1
}

extprocessor CollaboraProxy {
type proxy
address 127.0.0.1:9980
maxConns 50
initTimeout 300
retryTimeout 30
respBuffer 0
pcKeepAliveTimeout 300
websocket 1 # Make sure this is set to 1
}

tuning {

Other tuning parameters…

wsMaxIdleTime 600
wsSendBuf 0
wsRecvBuf 0
wsProtocol 1 # Strict WebSocket protocol
}

Vhost context
context /push/ws {
type proxy
handler NextcloudProxy
extraHeaders <<<END_extraHeaders
Host: elevatedinstinct.com
X-Forwarded-For: %{REMOTE_ADDR}e
X-Forwarded-Proto: https
X-Forwarded-Host: elevatedinstinct.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Protocol: push-notification
END_extraHeaders
addDefaultCharset off
websocket 1
}

context /cool/*/ws {
type proxy
handler CollaboraProxy
extraHeaders <<<END_extraHeaders
Host: elevatedinstinct.com
X-Forwarded-For: %{REMOTE_ADDR}e
X-Forwarded-Proto: https
X-Forwarded-Host: elevatedinstinct.com
Connection: Upgrade
Upgrade: websocket
END_extraHeaders
addDefaultCharset off
websocket 1
}

More generic rule for complex WebSocket URLs

context /cool/http* {
type proxy
handler CollaboraProxy
extraHeaders <<<END_extraHeaders
Host: elevatedinstinct.com
X-Forwarded-For: %{REMOTE_ADDR}e
X-Forwarded-Proto: https
X-Forwarded-Host: elevatedinstinct.com
Connection: Upgrade
Upgrade: websocket
END_extraHeaders
addDefaultCharset off
websocket 1
}

The notify_push logs show WebSocket protocol errors, indicating that while connections are attempted, they’re failing due to protocol issues - likely because the WebSocket protocol is not being properly handled by LiteSpeed or I am missing something else which is why i am asking for help.

I put together a little more to perhaps assist

Summary of Nextcloud AIO and Collabora Integration Issues

Current System Configuration

Server Setup

  • Ubuntu 24.04
  • LiteSpeed Web Server 1.8.2 as the main web server
  • Nginx running as a specialized WebSocket proxy
  • Nextcloud All-in-One (AIO) deployed via Docker
  • Collabora Online running in a separate Docker container

Docker Containers

  • Nextcloud AIO containers (including nextcloud-aio-apache on port 11001)
  • nextcloud-aio-notify-push (for WebSocket push notifications)
  • Collabora container accessible on 127.0.0.1:9980

Proxy Configuration

  • LiteSpeed handles all regular HTTP/HTTPS traffic
  • Main Nextcloud traffic is proxied to port 11001
  • Nginx is configured as a specialized WebSocket proxy on port 8765
  • LiteSpeed forwards WebSocket paths to Nginx

Specific Configurations

  • Collabora container parameters:
docker run -d --name collabora \
  --restart always \
  -p 127.0.0.1:9980:9980 \
  -e "aliasgroup1=https://elevatedinstinct.com:443" \
  -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.post_allow.host[0]=127.0.0.1 --o:net.post_allow.host[1]=::1 --o:net.service_root=/cool --o:net.frame_ancestors=https://elevatedinstinct.com" \
  collabora/code
  • Nginx WebSocket proxy configuration:
server {
    listen 127.0.0.1:8765;
    server_name _;
    
    location /push/ws {
        proxy_pass http://127.0.0.1:11001/push/ws;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 3600s;
    }
    
    location ~ ^/cool/ {
        proxy_pass http://127.0.0.1:9980$request_uri;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 3600s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

Current Issues

1. WebSocket Push Notifications

  • WebSocket connections to ‘wss://elevatedinstinct.com/push/ws’ consistently fail
  • Error message: “Failed to execute ‘send’ on ‘WebSocket’: Still in CONNECTING state”
  • Temporary workaround: We’ve disabled push notifications using the command:
docker exec -it nextcloud-aio-nextcloud php /var/www/html/occ config:app:set notify_push enabled --value="no"

2. Collabora Integration Problems

  • Document loading consistently fails with timeouts
  • POST requests to Collabora paths return 400 Bad Request errors
  • Error message: “Document loading failed due to timeout: Please check for failing network requests”
  • Communication between LiteSpeed/Nginx and the Collabora container appears to be failing

3. Docker Network Configuration

  • Nextcloud AIO creates a Docker network (nextcloud-aio)
  • All containers are on the same network but communication appears problematic

Troubleshooting Attempts

  1. Configured multiple proxy setups in LiteSpeed for Collabora paths
  2. Implemented a specialized Nginx proxy for WebSocket connections
  3. Verified all required paths are properly proxied based on Collabora documentation
  4. Added specific WebSocket headers and proper timeout configurations
  5. Restarted and reconfigured the Collabora container with various options
  6. Verified network connectivity between containers

Despite these efforts, Collabora integration is still failing to work properly, though the WebSocket errors have been reduced by disabling push notifications. The current issues appear to be related to how LiteSpeed and/or Nginx are proxying requests to the Collabora container, possibly related to header handling or proxy configurations.

hello @Troy_Danella as a potential customer you migh reach out to Nextcloud GmbH and negotiate pre-sales support. This forum is for SOHO users, operated by voluteers in their spare time. You where informed about this fact when you created an account. You also advised to use search and refer related issues once posting.

I’m really wondering how professional and trained person setup a system with an unsupported web server? completely ignoring installation manuals and even unable to post all config files in a concise and understandable way as per support template? why do you think volunteers should spend time and do your work to solve issues with an unsupported setup you are not willing to solve?

This forum is not a professional paid support so level you expectations. If you look for a kindness of professional support - I’m happy to go all the “did you switch of and on” and “let me google this for you” at the rate of professional support - say 200$/hour :thinking: - let me know if you are interested.

Already doing the pre sales thing. You are so right and i am sorry for taking your time. I didn’t create this account originally, one of my staff did for me, well sort of used it as me and then i had to get involved. Oh And unfortunately we have to use Litespeed as that is what is mandated at this clients facilities, and we have strongly suggested to just use the AIO out of the box. Trust me I would rather use anything else, it is a security thing for them even though it makes no sense to us, we have been unable to convince them otherwise. I may also take you up on your offer at 200.00 an hour and I will let you know in a day or so. Thank you for offering to help and of course We would pay you.
-Troy