Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions dev.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ auto-checkout +=
collective.behavior.talcondition
collective.classification.folder
collective.classification.tree
collective.collabora
collective.compoundcriterion
collective.contact.core
collective.contact.contactlist
Expand Down Expand Up @@ -95,12 +96,14 @@ eggs +=
Products.Clouseau
# Products.PDBDebugMode
Products.PrintingMailHost
collective.collabora
collective.wfautodoc
# imio.restapi
plone.app.workflowmanager
wildcard.fixpersistentutilities

zcml +=
collective.collabora
${debug:zcml}

zope-conf-additional +=
Expand Down
364 changes: 364 additions & 0 deletions docker/coolwsd.xml

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# quaive.app.libreoffice docker-compose file
# ==========================================

# Have Docker installed:
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
#
# https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue
# $ sudo groupadd docker
# $ sudo usermod -aG docker $USER

# Run:
# docker compose up
# or:
# docker compose start

# Using a .env file
# -----------------
#
# NOTE: Never check a `.env` file in into a repository!
#
# Use a .env file to set some parameters for production use.
# The available environment variables are:
# SERVER_PORT: The port you want to expose the LibreOffice / Collabora
# server to the Docker host.
# Default: `9980`.
# ADMIN_USER: The username for the LibreOffice / Collabora admin interface.
# Default: `admin`
# ADMIN_PASS: The password for the LibreOffice / Collabora admin interface.
# Default: `admin`
# SSL_TERMINATION: Enable SSL termination by the LibreOffice / Collabora server
# when proxied by another SSL proxy, like nginx. Should be set
# to `true` in production environments.
# Default: `false`.
#
# This is an example `.env` file:
# ```
# ADMIN_USER=admin
# ADMIN_PASS=supersecret
# SSL_TERMINATION=true
# SERVER_PORT=9980
# ```

# Service URLs
# ------------
#
# https://host.docker.internal:9980/hosting/discovery
# https://host.docker.internal:9980/hosting/capabilities
# https://host.docker.internal:9980/browser/dist/admin/admin.html

# References
# ----------
#
# - https://hub.docker.com/r/collabora/code/tags
# - https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html
# - https://sdk.collaboraonline.com/docs/installation/Configuration.html

services:

collabora:
image: collabora/code:latest
restart: no
container_name: collabora-server
volumes:
- ./coolwsd.xml/:/etc/coolwsd/coolwsd.xml:ro
expose:
- 9980
ports:
- "${SERVER_PORT:-9980}:9980"
extra_hosts:
# For DEVELOPMENT
# host.docker.internal points to the IP of the host and can be used by
# other docker containers, to reach collabora via the host. This is
# necessary for Collabora to be able to make calls to Plone.
- "host.docker.internal:host-gateway"
environment:
- username=${ADMIN_USER:-admin}
- password=${ADMIN_PASS:-admin}
- extra_params=--o:ssl.enable=false --o:ssl.termination=${SSL_TERMINATION:-false}

# This demo nginx is configured to listen on host.docker.internal:80
# and to proxy /collabora/* to the collabora server.
# This enables accessing collabora on the same hostname and port as Plone,
# which means the browser will not activate CORS protections.
nginx:
image: nginx:1.21
restart: no
container_name: collabora-nginx
volumes:
- ./nginx/:/etc/nginx/:ro
ports:
- 80:80
26 changes: 26 additions & 0 deletions docker/nginx/fastcgi.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Loading
Loading