O3O Office Online

Edit documents, spreadsheets and presentations in the browser, running on your own servers. Connect it to Nextcloud, embed the editor in your own software with a few lines of JavaScript, and use the DocBuilder API to convert, build and fill documents server-side.

API documentationPricing
Free Community edition with 50 concurrent connections · Enterprise priced per connection · Deployed with Docker
<!-- your page -->
<div id="editor" style="height:720px"></div>
<script src="https://your-server/o3o/api.js"></script>
<script>
new O3O.Editor("editor", {
  document: { url: "https://app.example/contract.docx",
              title: "Contract.docx",
              fileType: "docx", key: "ct-42-v7" },
  editor: { mode: "edit", lang: "en-US",
            user: { id: "u-1001", name: "Jane Doe" },
            callbackUrl: "https://app.example/o3o/callback" },
  events: { onSaved: e => console.log("saved", e.version) }
});
</script>
v1 status. O3O Office Online v1 is a Docker bundle for development teams to build, connect and test on their own machines. In DEV mode the editing server runs the upstream open-source image, pinned by digest, for internal testing only; that image shows the upstream name and logo. The DEV image has its own cap of 20 connections and 10 documents, so on a DEV machine editing sessions stop at about 20 even though /o3o/status reports the Community limit of 50; on this image the Community edition does not reach 50 connections. Using a plan's full connection count, including every Enterprise order, needs the O3O image built from source; orders above 50 connections also need that image built with a large enough cap. The O3O Office Online image built from source with O3O branding: coming soon. Performance figures: not yet measured.

Four ways to use it

One Docker bundle, one entry point. Pick what fits your system, or use all four.

Browser-based editing

Open and edit documents, spreadsheets and presentations (.docx, .xlsx, .pptx, .odt, .ods, .odp and other common formats) in the browser, with several people editing the same file. Files stay on your servers.

Nextcloud integration

The nextcloud profile in the compose file brings up Nextcloud 30, MariaDB and Redis for testing; scripts/setup-nextcloud.sh connects them automatically. With an existing Nextcloud: install the richdocuments app, run occ richdocuments:activate-config -w <editing server address> -c <Nextcloud address>, then click a file to edit it.

Embed in your software

Load /o3o/api.js and call new O3O.Editor(...). No Nextcloud needed: the gate fetches the file from the URL you pass, acts as an internal WOPI host and posts saved versions to your callbackUrl with an HMAC signature. 7 events, 5 methods, JWT HS256 signed configuration.

DocBuilder

A REST API under /v1/ with 11 endpoints: format conversion, building documents from o3oscript JSON scripts, filling {{field}} templates with repeating table rows, and extracting text, metadata and thumbnails. Synchronous or job-based.

Who it is for

A good fit for

  • Companies and public bodies using Nextcloud who want to edit files where they are stored, without documents leaving their servers.
  • Software vendors building document, records, contract, HR or ERP systems who want an embedded editor and saved versions via callbacks.
  • Systems that generate documents such as quotations, contracts, payslips and reports by calling DocBuilder from the server, with no user interface.
  • Technical teams that run things on-premises, keep control of their data and test with Docker on their own machines.

Not yet a fit if you need

  • A cloud service operated by o3o.vn: v1 is self-hosted only.
  • Your own branding in the editor today: white-labelling is coming soon.
  • Committed performance figures: not yet measured; we will publish them once measured.
  • Online license activation: v1 verifies tokens offline; online activation is coming soon.

Architecture

All requests go through the proxy on port 8080. Before an editing session opens, the proxy asks the gate: within the plan limit it is let in, otherwise a notice page is shown; open sessions are never cut and saving is never blocked.

User browseropens documents from Nextcloud or from a page embedding O3O.Editor
Your application servercreates embed sessions, receives callbacks, calls the DocBuilder API
HTTP and WebSocket through a single port
o3o-proxynginx · port 8080/browser /cool /hosting → o3o-online · /o3o/ → o3o-gate · /v1/ → o3o-docbuilder · opening an editing session asks the gate first
/browser /cool /hosting/o3o//v1/
o3o-onlineport 9980collaborative in-browser editing server
o3o-gateport 8070connection counting and plan limits, license token, O3O.Editor embed layer, internal WOPI host, callbacks
o3o-docbuilderport 8060REST API: convert, build from o3oscript, fill templates, extract; pool of headless workers
WOPI: CheckFileInfo, GetFile, PutFile (the editing server reads and saves files)
Optional "nextcloud" profileport 8081nextcloud:30-apache · mariadb:11 · redis:7-alpine · or your existing Nextcloud; for embedded sessions o3o-gate acts as the WOPI host

What v1 includes

in v1 Available in v1

  • Compose file for the proxy, editing server, gate and DocBuilder; optional nextcloud profile; secret generation and smoke-test scripts.
  • Editing-session counting and plan limits; Vietnamese limit page; open sessions are never cut and saving is never blocked; fail-open when counting fails.
  • Ed25519-signed license tokens verified offline; connection usage log every 5 minutes (CSV) for reconciliation.
  • O3O.Editor: 7 events, 5 methods, embed sessions, internal WOPI host, HMAC-signed callbacks, JWT HS256, SSRF protection; /o3o/demo test page in DEV mode.
  • DocBuilder: 11 endpoints, API keys and JWT, per-plan limits, o3oscript v1 for text, spreadsheets and presentations; template filling with repeating rows; text, metadata and thumbnail extraction.

coming soon Not yet available, planned

  • O3O Office Online image built from source, using a plan's full connection count; public repository of O3O's changes to the MPL code; white-labelling (logo, product name, colours) for Enterprise.
  • Online purchase, activation, heartbeat and revocation through office.o3o.vn.
  • Soft overage for Enterprise; 30-day P95 statistics; usage charts; Prometheus metrics.
  • Several editing servers behind one gate; oCIS connector.
  • Embed layer: dark theme, watermark, per-button visibility, save as another file, version history.
  • DocBuilder: batch template filling, document comparison, charts in o3oscript, npm, PyPI, NuGet and Go SDKs, durable queue, O3O 26.8 core.

Plans and pricing

One connection is one concurrent editing session, counted by whether the session has edit permission, not by whether anyone is typing. Sessions opened with read-only permission and DocBuilder jobs are not counted. Full pricing and calculator

Community

0 USD
  • 50 concurrent connections
  • The DEV test image stops at 20 connections
  • No license token required
  • Editor embedding, Nextcloud integration
  • Limited DocBuilder API
Try it

Enterprise, annual

3.5–5 USD

per connection per year, by volume

  • Minimum 50 connections per order
  • The full purchased connection count needs the O3O image built from source: coming soon
  • Full DocBuilder API, job callbacks
  • DocBuilder limits scale with connections
Calculate price

Enterprise, perpetual

8–10 USD

per connection, one-time, with 3 years of updates

  • Minimum 50 connections per order
  • The full purchased connection count needs the O3O image built from source: coming soon
  • Same Enterprise features
  • Use indefinitely, 3 years of updates
See pricing

Getting started

  1. Request the Docker bundle (the online/ folder) by e-mail at office@o3o.vn. Public code repository: coming soon.
  2. In the online/ folder, create .env for a test machine with bash scripts/gen-secrets.sh --dev (PowerShell: scripts\gen-secrets.ps1 -Dev). The script copies .env.example to .env and replaces every CHANGE_ME value with a random string (editing-server admin password, JWT secret, callback secret, DocBuilder API keys). Production machines run it without --dev.
  3. Build and run:
docker compose --env-file .env -f docker/compose.dev.yml up -d
# add Nextcloud to test the integration
docker compose --env-file .env -f docker/compose.dev.yml --profile nextcloud up -d
  1. Check http://localhost:8080/o3o/status (status, plan, connections), http://localhost:8080/v1/status (DocBuilder) and the embed test page http://localhost:8080/o3o/demo when O3O_DEV_MODE=1 (set by --dev).
  2. With an Enterprise license token: set O3O_LICENSE_TOKEN or the O3O_LICENSE_FILE file; the gate re-reads it every 60 seconds without a restart.

Full instructions, environment variables and troubleshooting are in online/README.md and in the API documentation.

Licensing and source code

The editing server is open source under the MPL 2.0. In v1, DEV mode uses the upstream image unmodified (pinned by digest, configured only through environment variables); O3O does not change the code in that image. When the O3O image built from source is released, O3O's changes to the MPL code will be published to recipients of that image as the license requires; the image and the source repository are coming soon. The gate and api.js are O3O code and talk to the editing server over HTTP and WebSocket.

O3O DocBuilder's own code is owned by O3O. DocBuilder does not modify LibreOffice code, but the DocBuilder image is distributed WITH LibreOffice installed unmodified from Debian packages (MPL 2.0, with parts under LGPL v3+ and other licenses). Distributing the DocBuilder image therefore means including the license notices of LibreOffice and the Debian packages and stating where the corresponding source can be obtained (Debian's source packages). This core is a different version from the O3O Office desktop suite; the running core version is reported by GET /v1/status. Moving DocBuilder to the O3O 26.8 core is coming soon.

Request source codeAPI documentation

Planning a deployment?

Try the Community edition, or contact us for an Enterprise quotation. Hotline 0888 787 980.

PricingContact us