Office 2021: what end of support actually means
The date is official: October 13, 2026 marks the end of extended support for Office 2021 Home and Business, confirmed by Microsoft and tracked at endoflife.date/office and heise.de. This is not the end of a minor release — it is the end of all security updates for a suite installed on millions of desktops.
The distinction from Microsoft 365 is fundamental. A Microsoft 365 subscription continues to receive patches. A perpetual Office 2021 licence — paid once — is now frozen at its release-day security level. Every critical vulnerability published after October 13, 2026 remains exploitable on those machines, indefinitely.
Concrete risks of running an unpatched office suite
- Unblocked malicious macros: security updates regularly fixed execution vectors via Word and Excel macros — those vectors remain open.
- Weaponised .docx and .xlsx files: Office formats are documented attack surfaces (OLE, DDE, merge fields); without patches, parsers remain vulnerable to published exploits.
- Compliance exposure: NIS2 and the Cyber Resilience Act (CRA) require software maintenance at a documented level. A vendor who no longer provides patches transfers liability to the deployer.
- Lateral movement vector: a document opened from a low-privilege account can, via an unpatched CVE, escalate privileges or pivot to other network resources.
- Cyber insurance exclusion: several policies explicitly exclude end-of-life software from coverage.
Collabora Online vs OnlyOffice: which one for your Nextcloud
Two open source projects allow you to integrate a native document editor into Nextcloud: Collabora Online (based on LibreOffice) and OnlyOffice Docs (Microsoft-compatible rendering engine). Both deploy as Docker sidecars and integrate via their dedicated Nextcloud application. The choice depends on your priority: Microsoft rendering fidelity or LibreOffice compatibility depth.
Collabora Online vs OnlyOffice Docs — technical comparison
Scroll the table
| Criterion | Collabora Online | OnlyOffice Docs |
|---|---|---|
| Rendering engine | LibreOffice (fork) | Proprietary Microsoft-compatible engine |
| Licence | MPL-2.0 / AGPL-3.0 | AGPL-3.0 (community edition) |
| RAM at rest (~300/400 MB per active process) | ~300 MB/active process | ~400 MB/active process |
| Native co-editing formats | .docx, .xlsx, .pptx, .odt, .ods, .odp | .docx, .xlsx, .pptx (Microsoft priority) |
| .docx rendering fidelity | Good, minor gaps on complex layouts | Excellent on elaborate layouts |
| Official Docker image | `collabora/code` | `onlyoffice/documentserver` |
| Nextcloud application | Nextcloud Office (formerly Richdocuments) | ONLYOFFICE integration app |
| Max connections (free edition) | No limit (self-hosted) (self-hosted) | 20 concurrent connections (community edition) |
| RTL language support (Arabic, Hebrew) | Yes (LibreOffice heritage) | Yes |
| Data routing | Stays on your VPS | Stays on your VPS |
VPS prerequisites before installation
Both sidecars are memory-intensive. Before starting:
Minimum recommended resources: 4 GB RAM for Nextcloud alone + Collabora Online. Plan for 6 GB if you choose OnlyOffice or expect more than five simultaneous users. NVMe SSD is preferred — format conversions are I/O intensive.
Docker and Docker Compose: both sidecars require Docker Engine 24+ and the Compose v2 plugin (docker compose, no hyphen). On Debian 12 or Ubuntu 22.04, installation from the official Docker repository is the recommended path.
Minimum Nextcloud version: Nextcloud 25 or higher. Nextcloud 28 and 29 images are tested with both sidecars. Versions earlier than 25 no longer support the Nextcloud Office application.
A domain with a valid TLS certificate: both editors refuse unencrypted connections. Your Nextcloud and the sidecar must both be reachable over HTTPS.
Installing Nextcloud + Collabora Online via Docker Compose
Create the file structure
On the VPS, create a dedicated directory and place the
docker-compose.ymlfile there:mkdir -p /opt/nextcloud && cd /opt/nextcloudWrite the docker-compose.yml for Nextcloud + Collabora
version: '3.8' services: db: image: mariadb:10.11 restart: always environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: ${DB_PASSWORD} volumes: - db_data:/var/lib/mysql nextcloud: image: nextcloud:29 restart: always ports: - "8080:80" environment: MYSQL_HOST: db MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: ${DB_PASSWORD} NEXTCLOUD_TRUSTED_DOMAINS: your-domain.com NEXTCLOUD_ADMIN_USER: admin NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} volumes: - nextcloud_data:/var/www/html depends_on: - db collabora: image: collabora/code:latest restart: always environment: aliasgroup1: https://your-domain.com:443 DONT_GEN_SSL_CERT: "YES" extra_params: --o:ssl.enable=false --o:ssl.termination=true ports: - "9980:9980" cap_add: - MKNOD volumes: db_data: nextcloud_data:Also create a
.envfile containingDB_ROOT_PASSWORD,DB_PASSWORDandNEXTCLOUD_ADMIN_PASSWORDwith long random values.Configure the nginx reverse proxy
Nextcloud and Collabora each expose on a separate port. Create two nginx server blocks — one for
your-domain.com(port 443, proxy to 8080) and one forcollabora.your-domain.com(port 443, proxy to 9980).For Collabora, add the directive
proxy_set_header X-Forwarded-Proto https;and WebSocket headers (Upgrade,Connection). The Collabora sidecar uses WebSocket for real-time co-editing.Obtain TLS certificates
certbot --nginx -d your-domain.com -d collabora.your-domain.comLet's Encrypt generates certificates for both domains in one pass. Automatic renewal is configured by certbot's systemd timer.
Start the stack and verify
cd /opt/nextcloud docker compose up -d docker compose logs -f nextcloudWait for Nextcloud to initialise (around 90 seconds on first start). Access
https://your-domain.comand log in with theadmincredentials.Enable Nextcloud Office and connect Collabora
In the Nextcloud admin panel: Apps → Office & text → Nextcloud Office → enable.
Then: Settings → Administration → Office → select 'Use your own server' → enter
https://collabora.your-domain.com→ click 'Save'.Open a
.docxfile from Nextcloud: the Collabora editor should appear inline. Invite a second user to the same file to validate simultaneous co-editing.Check memory consumption
docker stats --no-streamThe Collabora process consumes around 300 MB at rest and increases with the number of open documents. Watch the
MEM USAGEcolumn — if it exceeds 80% of available RAM, consider vertical scaling of the VPS.
Variant: Nextcloud + OnlyOffice Docs
Replace the collabora block with onlyoffice in the Compose file
In your
docker-compose.yml, substitute thecollaboraservice with:onlyoffice: image: onlyoffice/documentserver:latest restart: always ports: - "8088:80" environment: JWT_ENABLED: "true" JWT_SECRET: ${ONLYOFFICE_JWT_SECRET} volumes: - onlyoffice_data:/var/www/onlyoffice/Data - onlyoffice_logs:/var/log/onlyofficeAdd
ONLYOFFICE_JWT_SECRETto your.envfile. The JWT secret is mandatory since OnlyOffice 7.2 to prevent unauthorised access to the document server.Configure the reverse proxy for OnlyOffice
OnlyOffice listens on HTTP port 8088. Create an nginx vhost for
onlyoffice.your-domain.com→ proxy to127.0.0.1:8088. Add WebSocket directives and theX-Forwarded-Proto httpsheader.Enable the ONLYOFFICE integration in Nextcloud
In Nextcloud: Apps → Office & text → ONLYOFFICE → enable.
Then: Settings → Administration → ONLYOFFICE → enter the URL
https://onlyoffice.your-domain.comand the JWT key defined in.env→ save.Test with a
.xlsxfile: OnlyOffice should open it in-browser, with co-editing available as soon as a second user joins the document.Community edition limits
The free
onlyoffice/documentserverimage is limited to 20 concurrent connections. For an SMB fleet of fewer than 15 active users, the limit is rarely reached. Beyond that, the Enterprise edition removes this cap.
Advanced configuration: formats, languages and file size limits
Natively co-edited formats: both editors handle .docx, .xlsx and .pptx in simultaneous co-editing. ODF formats (.odt, .ods, .odp) are supported by Collabora (LibreOffice engine) and accessible in read-only mode from OnlyOffice without additional plugins.
Maximum file size: by default, Nextcloud limits uploads to 512 MB (upload_max_filesize in php.ini). For large presentations, increase this in the Nextcloud container's PHP configuration file:
docker exec -it nextcloud_nextcloud_1 bash -c \
'echo "upload_max_filesize = 2G" >> /usr/local/etc/php/conf.d/nextcloud.ini'Languages and RTL: Collabora supports RTL languages (Arabic, Hebrew) via its LibreOffice engine. OnlyOffice also supports Arabic. Both editors detect the document language and apply RTL layout automatically.
Collabora connection limits: the free collabora/code image is designed for self-hosted use without a documented connection cap, unlike OnlyOffice. On a 6 GB RAM VPS, plan for a maximum of 10 to 15 documents open simultaneously.
Hardening: strict HTTPS and network restriction
Collabora must never be exposed directly to the internet. Port 9980 (or 8088 for OnlyOffice) must only be accessible from localhost, via the nginx reverse proxy. Verify with ss -tlnp | grep -E '9980|8088' that these ports are not listening on 0.0.0.0.
Force HTTPS on the nginx side: both sidecars validate the request origin. An HTTP connection to the sidecar from Nextcloud will produce an SSL handshake or mixed content error.
Isolate containers on a dedicated Docker network: add a networks: block to your Compose file and remove publicly-exposed port mappings — only nginx accesses the internal services.
Update images regularly: docker compose pull && docker compose up -d. Collabora and OnlyOffice publish active security patches — that is precisely their advantage over a frozen Office 2021. The AGPL licence guarantees source code auditability.
Troubleshooting: connection refused, certificates and memory
Collabora refuses the connection from Nextcloud: verify that the Nextcloud domain exactly matches the aliasgroup1 variable of the Collabora container. A single difference (subdomain, port) blocks the connection. Check docker compose logs collabora for the rejection reason.
TLS certificate error: Nextcloud must be able to reach https://collabora.your-domain.com from within the container. If your VPS uses a Docker network with NAT, collabora.your-domain.com must resolve via public DNS, not a local hosts entry. Test from the container:
docker exec nextcloud_nextcloud_1 curl -I https://collabora.your-domain.comThe sidecar keeps restarting (OOM): Collabora and OnlyOffice allocate memory per open document. A 2 GB RAM VPS will saturate quickly. Check with docker stats and scale vertically if needed.
Nextcloud displays 'Unable to reach document server': after each sidecar restart, Nextcloud must re-validate the connection. Go to Settings → Administration → Office and click 'Save' again to force re-validation.
Further reading
This article covers deploying an open source document editor as a Nextcloud sidecar. If you are migrating from a Microsoft 365 SaaS or Google Workspace fleet, the articles Quitting Microsoft 365: migrating to Nextcloud on a VPS and Migrating from Google Workspace to Nextcloud on a VPS cover data migration and account transition.
For the initial Nextcloud deployment without a document editor, Hosting Nextcloud on your own VPS is the starting point. And if you are comparing Nextcloud to ownCloud, our comparison details governance and feature differences.
An agency that standardises its fleet on Nextcloud and an open source editor manages a single environment for all its clients — at a fixed cost, without dependency on a frozen perpetual licence.