Since this WOPI Put method is executed when loolwsd hits owncloud server, it has no session or probably invalid session data. Even though WOPI Put file operation initiated by loolwsd succeds, i.e file is successfully put into owncloud storage and versioned, it returns an HTTP 500 Internal server error as response to loolwsd which causes problem on loolwsd side messing up its state. Following trace can be observed in webserver's error logs after HTTP 500 is returned: PHP Fatal error: Uncaught exception 'Exception' with message 'Session has been closed - no further changes to the session are allowed' in /var/www/html/owncloud9/lib/private/session/internal.php:135 Stack trace: #0 /var/www/html/owncloud9/lib/private/session/internal.php(60): OC\\Session\\Internal->validateSession() #1 /var/www/html/owncloud9/lib/private/session/cryptosessiondata.php(150): OC\\Session\\Internal->set('encrypted_sessi...', 'e747091469b9905...') #2 /var/www/html/owncloud9/lib/private/session/cryptosessiondata.php(64): OC\\Session\\CryptoSessionData->close() #3 [internal function]: OC\\Session\\CryptoSessionData->__destruct() #4 {main}\n thrown in /var/www/html/owncloud9/lib/private/session/internal.php on line 135 Creating a dummy memory session, setting it as current session, and then setting the desired user session seems to address this problem and does not emit HTTP 500 anymore.
richdocuments – ownCloud application to integrate Collabora Online
Installation
make dist
Creates a tarball. The contents should go under owncloud/apps/richdocuments
.
rpmbuild -ba -vv owncloud-collabora-online.spec
Creates an RPM package (tested only with openSUSE). The CODE VM uses it.
Memcache is a requirement (tested only with APCu). Install php-apcu, php5-apcu, or whatever this package is called on your Linux distro, and add the following line to owncloud/config/config.php:
'memcache.local' => '\OC\Memcache\APCu',
From command line you can use:
occ config:system:set --value='\OC\Memcache\APCu' memcache.local
You can enable richdocument application from the command line:
occ app:enable richdocuments
You need to configure the WOPI Client URL, which is where the LibreOffice Online WebSocket Daemon (loolwsd) is listening. It is in Admin - Collabora Online section in ownCloud, or you can set it from command line:
occ config:app:set --value='https://<hostname or IP address>:<port>' richdocuments wopi_url
Default port is 9980. If loolwsd was compiled without SSL (like in the CODE VM), you have to write http
instead of https
. If you use SSL, and you get the following error:
cURL error 60: SSL certificate problem: self signed certificate in certificate chain
You have to add the CA cert manually to ownCloud trusted cert storage:
cat ca-chain.cert.pem >> owncloud/resources/config/ca-bundle.crt