Single-container Collabora Online server for document editing in Nextcloud. Exposes the WOPI service on port 9980 and runs behind nginx-proxy-manager.
cp .env.example .env
nano .env # set COLLABORA_DOMAIN, COLLABORA_SERVER_NAME, credentials
docker compose up -dCollabora listens at http://<host>:9980. Forward your public HTTPS host to this port via nginx-proxy-manager.
Copy .env.example to .env and update:
| Variable | Description |
|---|---|
COLLABORA_DOMAIN |
Your Nextcloud domain with dots escaped: cloud\\.yourdomain\\.com |
COLLABORA_SERVER_NAME |
Public Collabora hostname: office.yourdomain.com |
COLLABORA_USERNAME |
Admin console username |
COLLABORA_PASSWORD |
Admin console password |
COLLABORA_EXTRA_PARAMS |
Runtime flags (SSL termination handled by proxy — leave as-is) |
- Scheme:
http, Forward hostname: your host IP, Port:9980 - Enable Force SSL, WebSocket support
- HSTS is optional (Cloudflare handles it if you're using a tunnel)
In Nextcloud → Administration → Office:
- Select Use your own server
- Enter your Collabora URL:
https://office.yourdomain.com - Save and open any document to verify
If WOPI requests are blocked, add the required IP ranges to the WOPI allowlist. If your Collabora domain routes through Cloudflare, add Cloudflare's IPv4 ranges:
docker exec -u www-data nextcloud-app php occ config:app:set richdocuments wopi_allowlist \
--value="103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,104.16.0.0/13,104.24.0.0/14,\
108.162.192.0/18,131.0.72.0/22,141.101.64.0/18,162.158.0.0/15,172.64.0.0/13,\
173.245.48.0/20,188.114.96.0/20,190.93.240.0/20,197.234.240.0/22,198.41.128.0/17"# Update image and restart
docker compose pull && docker compose up -d
# Logs
docker compose logs -f collabora- Set strong admin credentials in
.env. - Keep port 9980 off the public internet — proxy only.
- TLS terminates at nginx-proxy-manager, not inside this container.