• Stars
    star
    62
  • Rank 490,914 (Top 10 %)
  • Language
    Dockerfile
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Dockerized Collabora Office Online with customizable options

github.com/tiredofit/docker-collabora-online

GitHub release Docker Stars Docker Pulls Become a sponsor Paypal Donate Docker Stars Docker Pulls


About

This will build a Docker image for Collabora Online for editing documents in a browser from supported applications.

  • Configurable Concurrent User and Document Limit (set to generarous values by default)
  • Custom Font Support
  • Set features to support autogeneration of TLS certificates/activate reverse proxy support
  • Zabbix Monitoring of Active Documents, Users, Memory Consumed

Maintainer

Table of Contents

Prerequisites and Assumptions

  • Assumes you are using some sort of SSL terminating reverse proxy such as:

Installation

Build from Source

  • Clone this repository and build the image with docker build <arguments> (imagename) .

  • If you decide to compile this, it will take quite a few hours even on the fastest computer due to the amount of data required to download to compile. At some stages this image will grow to 30GB before shedding most of it for it's final size.

Prebuilt Images

Builds of the image are available on Docker Hub and is the recommended method of installation.

docker pull tiredofit/collabora-online:(imagetag)

The following image tags are available along with their tagged release based on what's written in the Changelog:

Collabora Office version Collabora Online version Tag
2023 23.05.x 23.05.xx
2023 23.05.x latest
2022 22.05.x 2.4.0
2021 21.11.0 2.3.0
6.4.x 6.4.x 2.1
6.4.x 6.4.x 2.0
6.0.x 4.0.x 1.6
5.3.x 3.4.x 1.1

Multi Architecture

Images are built primarily for amd64 architecture, and may also include builds for arm/v7, arm64 and others. These variants are all unsupported. Consider sponsoring my work so that I can work with various hardware. To see if this image supports multiple architecures, type docker manifest (image):(tag)

Configuration

Quick Start

  • The quickest way to get started is using docker-compose. See the examples folder for a working docker-compose.yml that can be modified for development or production use.
  • Set various environment variables to understand the capabilities of this image. A Sample docker-compose.yml is provided that will work right out of the box for most people without any fancy optimizations.
  • Map persistent storage for access to configuration and data files for backup.
  • Make sure you set your hostname e.g. online.example.com when starting your container to make sure the administration console urls are correct.

Persistent Storage

The following directories should be mapped for persistent storage in order to utilize the container effectively.

Folder Description
/logs/ Log files
/assets/custom If you want to update the theme of Collabora online, dropping files in here will overwrite /opt/cool/share on startup
/assets/custom-fonts (Optional) If you want to include custom truetype fonts, place them in this folder
/assets/custom-scripts (Optional) If you want to execute a bash script before the application starts, drop your files here
/etc/coolwsd/certs (Optional) If you would like to use your own certificates, map this volume and set appropriate variables

Environment Variables

Base Images used

This image relies on a Debian Linux base image that relies on an init system for added capabilities. Outgoing SMTP capabilities are handlded via msmtp. Individual container performance monitoring is performed by zabbix-agent. Additional tools include: bash,curl,less,logrotate,nano,vim.

Be sure to view the following repositories to understand all the customizable options:

Image Description
OS Base Customized Image based on Debian Linux

General Usage

Parameter Description Default
SETUP_TYPE Automatically generate configuration with defaults. Set to MANUAL and map the configuration file to use your own AUTO
ALLOWED_HOSTS Set which domains which can access service Seperate Multiple with , - Example: https://www.example\.org (no wildcards) ``
EXTRA_OPTIONS If you want to pass additional arguments upon startup, add it here ``
INTERFACE Web interface type classic or notebookbar notebookbar
GROUP_DOWNLOAD_AS Group Download as Icons into dropdown in notebookbar view TRUE
WATERMARK_OPACITY Watermark Opacity 0.2
WATERMARK_TEXT Text to display for watermark ``
ENABLE_MACROS Enable Macros FALSE
MACRO_SECURITY_LEVEL Macro Security Level 1 Medium 0 Low 1
ENABLE_METRICS_UNAUTHENTICATED Enable Unauthenticated Metrics FALSE
ENABLE_HOME_MODE Enable more features with home mode FALSE

Administration

Parameter Description Default _FILE
ENABLE_ADMIN_CONSOLE Enable Administration Console TRUE
ADMIN_USER User for accessing Administration Console admin x
ADMIN_PASS Password for accessing Administration Console collaboraonline x
ADMIN_JWT_EXPIRY Admin JWT Expiry in seconds 1800

Logging

Parameter Description Default
LOG_TYPE Write Logs to CONSOLE or to FILE CONSOLE
LOG_LEVEL Log Level - Available none, fatal, critical, error, warning, notice, information, debug, trace warning
LOG_PATH Log Path /var/log/cool
LOG_FILE Log File cool.log
ENABLE_DOCUMENT_STATISTICS Enable Collecting statistics about documents FALSE
ENABLE_USER_STATISTICS Enable collecting statistics about the user working on document FALSE
LOG_ANONYMIZE_SALT Salt for anonymizing log data 8 char random
LOG_ANONYMIZE Anonymize File+User information in Logs TRUE or FALSE FALSE
LOG_CLIENT_CONSOLE Log in users browser console false
LOG_COLOURIZE Colourize the log entries in console true
LOG_FILE_FLUSH Flush Entries on each line to log file false
LOG_LEVEL_CLIENT_LEAST_VERBOSE Least verbose log level to ever send to client FATAL
LOG_LEVEL_CLIENT_MOST_VERBOSE Most verbose log level to ever send to client NOTICE
LOG_LIBREOFFICE Log filter what Libreoffice entries -INFO-WARN
LOG_PROTOCOL Log Client Server Protocol false

Languages for writing aids (spell checker, grammar checker, thesaurus, hyphenation)

The image comes with English (US, GB variants) baked into the image, however upon container startup you can add more languages via environment variables. Add multiple languages by seperating with a space.

Parameter Value Description
LANGUAGE en_GB English (Great Britain)
en_US English (US)
fr_FR French (France)

The above table is just a sample of valid values.

Please note that allowing too many has negative effect on startup performance.

Default value: en_GB en_US

Spell Check

The image comes with English (US, GB, Canada variants) baked into the image, however upon container startup you can add more spell check variants via environment variables. Add multiple dictionaries by seperating with a comma.

Parameter Value Description
DICTIONARIES af Afrikaans
an Aragonese
ar Arabic
be Belarusian
bg Bulgarian
bn Bengali
br Breton
bs Bosnian
ca Catalan
cs Czech
da Danish
de German
el Greek
en-au English (Australia)
en-za English (South Africa)
es Spanish
fr French
gd Gaelic
he Hebrew
hi Hindi
hu Hungarian
id Indonesian
is Icelandic
it Italian
ko Korean
lo Laotian
lt Lithuanian
lv Latvian
ne Nepalese
nl Dutch
no Norwegian
pl Polish
pt-br Portugese (Brazil)
pt-pt Portugese
ro Romanian
ru Russian
sk Slovak
sr Serbian
sv Swedish
sw Kiswahili
th Thai
tr Turkish
uk Ukranian
vi Vietnamese

Don’t forget to add the according languages to the LANGUAGE environment variable.

TLS Settings

Parameter Description Default
ENABLE_TLS Enable TLS FALSE
ENABLE_TLS_CERT_GENERATE Enable Self Signed Certificate Generation TRUE
ENABLE_TLS_REVERSE_PROXY If using a Reverse SSL terminating proxy in front of this container TRUE
TLS_CA_FILENAME TLS CA Cert filename with extension ca-chain-cert.pem
TLS_CERT_FILENAME TLS Certificate filename with extension cert.pem
TLS_CERT_PATH TLS certificates path /etc/coolwsd/certs
TLS_KEY_FILENAME TLS Private Key filename with extension key.pem

Performance and Limits

Parameter Description Default
AUTO_SAVE The number of seconds after which document, if modified, should be saved 300
BATCH_PRIORITY A (lower) priority for use by batch convert to processes to avoid starving interactive ones 5
CONNECTION_TIMEOUT Connection, Send, Receeive timeout in seconds for connections initiated by coolwsd 30
ENABLE_TILES_CACHE Enable caching of tiles should document be opened up twice TRUE
FILE_SIZE_LIMIT The maximum file size allowed to each document process to write 0 (unlimited)
IDLE_SAVE The number of idle seconds after which document, if modified, should be saved 30
IDLE_UNLOAD_TIMEOUT The maximum number of seconds before unloading an idle documen 3600
MIN_TIME_BETWEEN_SAVES Minimum number of milliseconds between saving document on disk 500
MIN_TIME_BETWEEN_UPLOADS Minimum number of milliseconds between uploading document to storage 5000
MAX_CONVERT_LIMIT Maximum time in seconds to wait for a convert process to complete 30
MAX_FILE_LOAD_LIMIT Maximum number of seconds to wait for a document load to succeed 100
MAX_OPEN_FILES The maximum number of files allowed to each document process to open 0 (unlimited)
MAX_THREADS_DOCUMENT How many threads to use when opening a document 4
MEMORY_STACK_LIMIT The maximum stack size allowed to each document process 0 (unlimited)
MEMORY_USAGE_MAX Maximum percentage of system memory to be used 80.0
MEMORY_VIRT_LIMIT Maximum virtual memory allowed to each document process 0
PRESPAWN_CHILD_PROCESSES Amount of Child processes to start upon container init 1
USER_IDLE_TIMEOUT The maximum number of seconds before dimming and stopping updates when the user is no longer active (even if the browser is in focus) 900
USER_OUT_OF_FOCUS_TIMEOUT The maximum number of seconds before dimming and stopping updates when the browser tab is no longer in focus 60

Files Quarantine

Parameter Description Default
ENABLE_FILES_QUARANTINE Alllow file quaranting for review of crashed/bad files FALSE
FILES_QUARANTINE_DIRECTORY_SIZE_LIMIT Directory size limit in MB 250
FILES_QUARANTINE_MAX_VERSIONS Hold this many versions in quarantime 2
FILES_QUARANTINE_PATH Relative path for storing files quarantine
FILES_QUARANTINE_EXPIRY Files expiry in minutes 30

DeepL Translation

Parameter Description Default _FILE
ENABLE_DEEPL Enable DeepL Translation Support FALSE
DEEPL_API_URL DeepL API URL `` x
DEEPL_AUTH_KEY DeepL Auth Key `` x

Language Tool

Parameter Description Default _FILE
ENABLE_LANGUAGE_TOOL Enable Language Tool Grammar checking integration FALSE
LANGUAGE_TOOL_BASE_URL Base URL for Language Tool x
LANGUAGE_TOOL_USER_NAME Language Tool User Name x
LANGUAGE_TOOL_API_KEY Language Tool provided API Key x
LANGUAGE_TOOL_REST_PROTOCOL REST protocol. blank for Language Tool duden for Duden Korrekturserver
LANGUAGE_TOOL_SSL_VERIFY SSL Verify TRUE

Zotero

Parameter Description Default
ENABLE_ZOTERO Enable Zotero Citations TRUE

Cleanup

Parameter Description Default
ENABLE_CLEANUP Enable Cleanup of documents and processes false
CLEANUP_INTERVAL Interval between cleanup checks 10000
CLEANUP_BAD_BEHAVIOUR_TIME Minimum time period for a document to be in bad state before killing in seconds 60
CLEANUP_IDLE_TIME Minimum idle time for a document to be candidate for bad state in seconds 300
CLEANUP_LIMIT_DIRTY_MEMORY Minimum memory usage in MB for a document to be candidate for bad state 3072
CLEANUP_LIMIT_CPU_PER Minimum CPU usage in percent for a document to be candidate for bad state 85

Other Settings

Parameter Description Default
CHILD_ROOT_PATH Child root path child-roots
DOCUMENT_SIGNING_URL Endpoint URL of signing server ``
ENABLE_CAPABILITIES Enable Capabilities TRUE
ENABLE_CONFIG_RELOAD Enable Reload of coolwsd if config changed in container TRUE
ENABLE_EXPERIMENTAL_FEATURES Enable experimental features FALSE
ENABLE_MOUNT_JAIL Enable mounting jails true
ENABLE_SECCOMP Enable Seccomp TRUE
FILE_SERVER_ROOT_PATH Path to directory considered as root browser/../
FRAME_ANCESTORS Hosts where interface can be hosted in Iframe ``
HEXIFY_EMBEDDED_URLS Hexify Embedded URLS (useful for Azure deployments) FALSE
INDIRECTION_ENDPOINT URL endpoint to server which zervers routeToken in json format
PDF_RESOLUTION_DPI PDF Resolution DPI when rendering PDF documents as image 96
REDLINING_AS_COMMENTS Show red-lines as comments false
REMOTE_URL Remote server to send request to get remote config
SYS_TEMPLATE_PATH System Template Path systemplate
USE_INTEGRATOR_THEME Use the remote integrators theme TRUE
VERSION_SUFFIX Append this value onto version to break cache when developing. Generates random uuid when using value of random

Adding Custom Fonts

This image comes with some highly opninionated default fonts by the LibreOffice team, and also includes the Microsoft TTF fonts from the late 90s. To add custom fonts into this image, cxport a volume and place them in /assets/custom-fonts and they will be inserted upon next container restart.

You can also configure this inside the container with a compatible application.

Parameter Description Default
REMOTE_FONT_URL URL to json font lists to load
FONTS_MISSING_ACTION How to handle fonts missing in a document report log both ignore log

Networking

The following ports are exposed.

Port Description
9980 Collabora Web Services

Maintenance

Shell Access

For debugging and maintenance purposes you may want access the containers shell.

bash docker exec -it (whatever your container name is) bash

Support

These images were built to serve a specific need in a production environment and gradually have had more functionality added based on requests from the community.

Usage

  • The Discussions board is a great place for working with the community on tips and tricks of using this image.
  • Consider sponsoring me personalized support.

Bugfixes

  • Please, submit a Bug Report if something isn't working as expected. I'll do my best to issue a fix in short order.

Feature Requests

  • Feel free to submit a feature request, however there is no guarantee that it will be added, or at what timeline.
  • Consider sponsoring me regarding development of features.

Updates

  • Best effort to track upstream changes, More priority if I am actively using the image in a production environment.
  • Consider sponsoring me for up to date releases.

License

MIT. See LICENSE for more details.

References

More Repositories

1

docker-freepbx

Dockerized FreePBX 15 w/Asterisk 17, Seperate MySQL Database support, and Data Persistence and UCP
496
star
2

docker-db-backup

Backup multiple database types on a scheduled basis with many customizable options
Dockerfile
472
star
3

docker-traefik-cloudflare-companion

Automatically Create CNAME records for containers served by Traefik
Python
274
star
4

docker-freescout

Dockerized Freescout Helpdesk
Dockerfile
146
star
5

docker-self-service-password

Dockerized LDAP Tollbox Self Service Password Changer with many customizable options
Dockerfile
115
star
6

docker-nginx-php-fpm

Dockerized Nginx + PHP FPM images with many customizable options
Dockerfile
106
star
7

docker-openldap

Dockerized OpenLDAP server with many customizable options
99
star
8

docker-jitsi-meet

Docker Jitsi Meet WebRTC conferencing system w/Prosody XMPP and s6 overlay
Dockerfile
64
star
9

docker-osticket

Dockerized Help Desk Software
PHP
48
star
10

docker-tinc

Docker Tinc VPN Mesh server w/S6 Overlay Init, Zabbix Monitoring, and distributed configuration updating based on Alpine
Dockerfile
43
star
11

docker-postal

Dockerized Postal SMTP Server based on Alpine Linux and Ruby
Dockerfile
40
star
12

docker-fusiondirectory

Dockerized FusionDirectory LDAP Manager
Dockerfile
39
star
13

docker-lemonldap

Dockerized Authentication Server with Single Sign On SAML, OpenID Connect, CAS, and Header support
Dockerfile
39
star
14

docker-openldap-fusiondirectory

Dockerized OpenLDAP server with FusionDirectory Schema Support
34
star
15

docker-wordpress

Dockerized Wordpress Image with customizable options
Python
31
star
16

docker-alpine

Docker Alpine Linux Base Images
Dockerfile
30
star
17

docker-traefik

Dockerized Traefik Reverse Proxy with customizable options
Dockerfile
29
star
18

docker-mongodb-backup

Docker MongoDB Backup Container based on Alpine w/S6 init, Zabbix Monitoring
Dockerfile
28
star
19

docker-nginx-proxy-cloudflare-companion

Automatically update CNAME records when Docker container starts via Cloudflare
Python
27
star
20

docker-spamassassin

Docker Spamassassin Spam filtering based on Alpine Linux
Dockerfile
26
star
21

docker-clamav

Docker ClamAV Image with Zabbix Monitoring and Customizable Configuration
Dockerfile
23
star
22

docker-baserow

Dockerized Baserow No/Low code data management application based on Alpine
Dockerfile
22
star
23

docker-nginx

Dockerzed webserver with many customizable options
Dockerfile
22
star
24

docker-nextcloud

Dockerized Nextcloud Server with many customizable options
17
star
25

docker-gitlab-ee

Dockerized Gitlab Enterprise Edition
Dockerfile
17
star
26

docker-debian

Docker Debian Base Images
Dockerfile
15
star
27

docker-discourse

Dockerized Discourse Forum
Dockerfile
15
star
28

docker-backuppc

Docker BackupPC with Zabbix monitoring support
Perl
15
star
29

docker-gcds

Docker Google Cloud Directory Sync service (GADS) w/S6 Overlay, Zabbix Monitoring
Dockerfile
14
star
30

docker-mariadb-backup

Docker MariaDB Backup Container w/ S6 Overlay, Zabbix Monitoring based on Alpine
Dockerfile
13
star
31

docker-zabbix

Dockerized Zabbix Server, Proxy, and Frontend
Dockerfile
13
star
32

docker-insync

Docker Insync Headless Client
Dockerfile
12
star
33

docker-rspamd

Dockerized Anti Spam Filter
Python
12
star
34

docker-nginx-ldap

Docker Nginx Image w/LDAP Authentication, Zabbix agent monitoring, S6 init, logrotate based on Alpine
Dockerfile
11
star
35

docker-bookstack

Dockerized Information Manager
Dockerfile
11
star
36

docker-mariadb

Docker MariaDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
11
star
37

docker-gitlab

Dockerized Gitlab CE w/Alpine Linux, Zabbix Monitoring and S6 Overlay
Dockerfile
10
star
38

docker-staytus

Docker Staytus Image w/s6 overlay, zabbix monitoring based on Alpine
HTML
10
star
39

docker-leantime

Dockerized Project Managment tool with many configurable options
Dockerfile
10
star
40

docker-otrs

Dockerized OTRS ITSM Helpdesk/Ticketing System based on Alpine w/Nginx
Dockerfile
9
star
41

docker-unbound

Docker Unbound DNS Resolver based on Alpine
Dockerfile
9
star
42

docker-postgres

Dockerized Postgresql Server with multiple databases/users, replication, and monitoring support
Dockerfile
9
star
43

docker-postfix

Dockerized MTA with many customizable features, LDAP, SASL, Milter, Relay Support
Dockerfile
8
star
44

docker-matomo

Dockerized Matomo (Piwik) Analytics
Dockerfile
8
star
45

docker-yourls

Dockerized YOURLS link shortener based on Alpine
Dockerfile
8
star
46

docker-invoiceninja

Dockerized Invoicing web application
Dockerfile
7
star
47

docker-nodejs

Docker NodeJS Base Images
7
star
48

docker-postfix-relay

Dockerized Postfix Relay for easy SMTP capabilities
Shell
7
star
49

docker-openvpn

Dockerized OpenVPN server w/Alpine+Debian Variants w/s6 overlay, and LDAP Authentication support
7
star
50

docker-rocketchat

Docker Rocketchat Server with S6 Initsystem and Zabbix Monitoring based on Alpine
6
star
51

docker-kopano

Dockerized Kopano Groupware server
Dockerfile
6
star
52

docker-n8n

Dockerized n8n workflow automation tool
Dockerfile
6
star
53

docker-listmonk

Dockerized Listmonk Mailing List server built iwth Alpine w/Zabbix Monitoring
Dockerfile
6
star
54

docker-cpuminer

Cryptocurrency Miner based on Alpine
6
star
55

docker-kopano-core

Dockerized Kopano Groupware Server
6
star
56

docker-grafana

Dockerfile
5
star
57

docker-moodle

Dockerized Moodle Learning Management System
Dockerfile
5
star
58

docker-loki

Dockerized Loki Log Analyzer
Dockerfile
5
star
59

docker-teampass

Dockerized Password Vault for Teams based on Alpine w/nginx,php-fpm
Dockerfile
5
star
60

docker-orbeon

Docker Orbeon Forms CE w/S6 Init, Tomcat, based on Alpine
Dockerfile
5
star
61

docker-redis

Docker Redis Server with S6 Initsystem and Zabbix Monitoring based on Alpine
5
star
62

docker-elasticsearch

Dockerized Elasticsearch based on Alpine linux
4
star
63

fusiondirectory-plugin-kopano

Plugin to manage users/groups for Kopano (fork of Zarafa) within Fusion Directory LDAP Manager
PHP
4
star
64

docker-novnc

Run GUI applications within a browser - Base image
Dockerfile
4
star
65

docker-flarum

Dockerized Flarum Web Forum Software based on Alpine
Shell
4
star
66

docker-registry

Dockerized Docker Registry
Dockerfile
4
star
67

docker-rabbitmq

Dockerized RabbitMQ server
Python
4
star
68

docker-gitlab-runner

Docker Gitlab runner w/ Zabbix monitoring support based on Alpine
4
star
69

docker-openeats

Dockerized Openeats Recipe manager based on Alpine Linux w/Zabbix Monitoring
Dockerfile
3
star
70

docker-restic

Dockerized Backup application
Dockerfile
3
star
71

docker-dovecot

Docker Dovecot IMAP server based on Alpine w/LDAP Support
TSQL
3
star
72

docker-uptimekuma

Dockerized Service availability monitoring system
Dockerfile
3
star
73

docker-draw-io

Docker Draw.IO image based on Alpine and Nginx
3
star
74

docker-logrotate

Docker Logrotate to keep logfiles compressed and rotated based on Alpine
Shell
3
star
75

docker-mailhog

Dockerized SMTP Test server
Dockerfile
3
star
76

docker-cachet

Dockerized Cachet Status monitoring application based on Alpine Linux
Dockerfile
3
star
77

docker-sentry

Dockerized Sentry.IO Exception tracking system based on Debian w/LDAP and SAML
Python
3
star
78

docker-airsonic-advanced

Dockerized Airsonic Advanced Server based on Alpine
Dockerfile
3
star
79

docker-limesurvey

Dockerized Limesurvey application based on Alpine
Dockerfile
3
star
80

docker-mongo

Docker MongoDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
3
star
81

docker-haraka

Docker Haraka MTA based on Alpine
JavaScript
3
star
82

docker-ruby

Docker Ruby base images w/ S6 Overlay and Zabbix monitoring support
3
star
83

docker-ubuntu

Dockerized Ubuntu Base Images
Dockerfile
2
star
84

docker-memcached

Docker Memcached Server w/ S6 Initsystem and Zabbix Monitoring based on Alpine
Dockerfile
2
star
85

home

Home-Manager configuration ala Nix flakes
Nix
2
star
86

docker-kopano-meet

Dockerfile
2
star
87

docker-soulseek

Dockerized Soulseek Client
Dockerfile
2
star
88

docker-kopano-kapi

Dockerfile
2
star
89

docker-kopano-konnect

Dockerfile
2
star
90

docker-olefy

Dockerized Olefy TCP listener for OLE Tools
Dockerfile
2
star
91

docker-logchimp

Dockerized Logchimp Application
Dockerfile
2
star
92

docker-transmission

Dockerized Transmission client
Dockerfile
2
star
93

docker-dind

Docker in Docker Image with Zabbix monitoring Support and --squash --compress options by default based on Alpine
Dockerfile
2
star
94

docker-matrix-bridges

Dockerized Matrix Bridges to interconnect services
Dockerfile
2
star
95

docker-monica

Dockerized Monica PRM
Dockerfile
2
star
96

tiredofit

2
star
97

docker-minio

Dockerized Minio Server based on Alpine
Dockerfile
2
star
98

docker-tomcat

Docker Apache Tomcat based on Alpine
2
star
99

docker-mongo-builder

Docker Image to build MongoDB and associated tools for Alpine Edge from aports/non-free
Dockerfile
2
star
100

nixos-config

NixOS configurations
Nix
1
star