Zextras Docs is a fully customised LibreOffice online package that enables collaborative editing of documents, spreadsheets, and presentations directly from the Zimbra WebClient.
Zextras Docs Server Components
The service’s heart is the Zextras Docs server. Each document opened with a LibreOffice engine is hosted by the service, which answers to the client with an image for every keystroke and modification in the text.
Extension for Zextras Docs
The extension is the crucial component that connects everything together. Its primary responsibilities are as follows:
- Choose the Docs server where the next document will be opened.
- When the client has to open a document, redirect them.
- On behalf of the Docs server, read and write documents to and from system storage.
- Connect to each Docs server using an administrator websocket and monitor their availability and resource utilisation.
- Concurrent user connections to the same page on the same server should be orchestrated. (sharing of documents)
Docs Zimlet Zextras
- In the ZWC, change the “create” button to the relevant Docs function.
- Replace the preview feature with Docs.
- Allow document previewing.
System Requirements Minimum
- Ubuntu 16.04, Centos 7, or Ubuntu 18.04
- A minimum of two CPU cores
- RAM must be at least 4 GB.
- A minimum of 4 GB of free disc space
Compatibility with browsers
Flow of Document Management
- The Zimlet instructs the Extension to generate a new blank document.
- The Extension generates the document and returns its ID to the client.
- The Zimlet launches a new Zimbra tab with an iframe pointing to ‘/service/extension/wopi-proxy’.
- The extension takes the client’s request, generates a new token for the required content, and responds with a new url.
- The new URL is /docs/[docs-node-id]/[token], which will be proxied to the specified Docs Server node by nginx.
- The web application establishes a websocket connection via nginx.
- Docs Server accepts the websocket connection and a token, and then sends a read wopi command to the mailbox url specified in the arguments (the url is validated against permitted nodes).
- The Extension checks the token and provides information and content in response.
- The document is parsed, rendered, and returned to the client by the Docs Server node.
- The document has been completely opened and edited.