Skip to content

Self-hosting

Building from source Coming soon

Building the O3O editing server image from MPL 2.0 sources: experimental status, the steps and the license obligations.

Coming soon

The feature described on this page is coming soon; it is not part of v1.

On this page

Why a source build is needed#

  • The DEV image is the upstream build: it carries the upstream name and logo, cannot be rebranded through configuration, and is for internal testing only.
  • The DEV image has its own hard cap of 20 connections and 10 documents. The O3O image's compiled-in cap is still pending a decision; Dockerfile.source temporarily defaults to 9999 so the gate is the only place that enforces the plan's cap. The compiled-in cap counts EVERY connection, read-only included, and cannot be raised at run time, so the image must be built with a cap no lower than the conns of the token it serves.
  • White labelling for the enterprise edition is only possible with a source-built image.

Status#

ComponentStatus
online/docker/Dockerfile.sourceWritten, not run end to end (experimental)
online/docker/build-source.shWritten, not run end to end (experimental)
Released O3O imageNot available
White label (logo, product name, colours)Coming soon
Build time, disk and RAM neededNot measured

How to build (experimental)#

  1. Prepare a machine

    Use a Linux x86_64 machine with Docker and plenty of free disk space; the build includes the whole document engine and is very heavy.
  2. Read the instructions

    The header comment of online/docker/build-source.sh is the authoritative guide to its parameters and the image tag it produces.
  3. Build and try it

    Run the script, set O3O_ONLINE_IMAGE to the new image and O3O_ONLINE_IMAGE_KIND=o3o, then check that /o3o/status reports dev_image = false.
BashReference commands
# EXPERIMENTAL, NOT YET BUILT
cd online
less docker/build-source.sh          # read the header comment first
bash docker/build-source.sh          # run exactly as the header describes

# online/.env once the build succeeded
O3O_ONLINE_IMAGE=<image tag produced by the script>
O3O_ONLINE_IMAGE_KIND=o3o

# Check
curl -s http://localhost:8080/o3o/status | jq '{dev_image, upstream}'

License obligations#

The editing server source code is licensed under the Mozilla Public License 2.0; the DocBuilder image contains LibreOffice and third-party fonts. The summary below helps track the obligations; the license texts are authoritative, and this is not legal advice.

  • MPL 2.0 is a file-level copyleft: an MPL file you modify stays under the MPL.
  • When you DISTRIBUTE an executable form (a Docker image included) containing MPL code, recipients must be told how to obtain the source of that MPL code, modifications included, in a timely manner and at no more than the cost of distribution.
  • Keep the license notices found in the source code intact.
  • O3O's own code (the gate, DocBuilder, api.js, the proxy configuration) is owned by O3O, is not MPL-licensed and contains no modified MPL files, so that code itself is not subject to the MPL copyleft. The gate and api.js only talk to the editing server over HTTP and WebSocket. DocBuilder does not modify LibreOffice code, but it loads LibreOffice's UNO library (python3-uno) into its own process, and the DocBuilder image is distributed WITH LibreOffice; MPL 2.0 allows such a combination as a Larger Work (section 3.3) without bringing O3O's code under the MPL, but the LibreOffice part of the image keeps its own obligations: distributing the image means including the license notices and stating where the LibreOffice source can be obtained (next two items).
  • The o3o-docbuilder image packages LibreOffice installed from the Debian bookworm archive (mostly MPL 2.0, some parts LGPL and other free licenses) together with Debian system packages. When you distribute this image to customers: keep the license files shipped in the image (/usr/share/doc/<package>/copyright, /usr/lib/libreoffice/LICENSE.html) and tell recipients how to obtain the source of the exact version, namely Debian bookworm's libreoffice source package (apt-get source libreoffice=<version> or the snapshot.debian.org archive). The running LibreOffice version is reported by GET /v1/status in the core field; the exact Debian package version is shown by dpkg-query -W libreoffice-core run inside the o3o-docbuilder container. Keeping license files and pointing to the source applies to every Debian package in the O3O images, the gate image included.
  • The DocBuilder image ships fonts so layouts match the originals: Carlito, Caladea, Liberation 2 and Noto (SIL Open Font License 1.1); Liberation 1.07 (GPL 2 with a font exception, so documents using the font are not bound by the GPL); DejaVu (Bitstream Vera license). These licenses allow redistributing the fonts with the image as long as the license files are kept; the OFL and the Bitstream Vera license forbid selling the fonts on their own, not bundling them with software.
  • The MPL grants no trademark rights: a released build must replace the upstream name and logo with the O3O brand, and must not use the upstream support-key mechanism.
Coming soon

A public repository with O3O's modifications to the MPL code, for recipients of the O3O image.

License text: mozilla.org/MPL/2.0.