## Overview
ONLYOFFICE Docs is an online office suite comprising viewers and editors for texts, spreadsheets and presentations and enabling collaborative editing in real time. The suite provides maximum compatibility with Office Open XML formats: .docx, .xlsx, .pptx.
This set of images contain the same functionality as Document Server but internal services are decoupled into multiple containers.
This repository is intended for images used in the Document Server Helm package for Kubernetes, which allows deploying it into a cluster.
Functionality
- ONLYOFFICE Document Editor
- ONLYOFFICE Spreadsheet Editor
- ONLYOFFICE Presentation Editor
- Collaborative editing
- Hieroglyph support
- Support for all the popular formats: DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX, HTML
By default, ONLYOFFICE Docs includes only editors without any document management system. ONLYOFFICE Docs can be used as a part of ONLYOFFICE Workspace or with third-party sync&share solutions (e.g. Nextcloud, ownCloud, Seafile) to enable collaborative editing within their interface.
ONLYOFFICE Docs has three editions - Community, Enterprise, and Developer. Clustering is available only for commercial builds (Enterprise and Developer Edition).
Recommended system requirements
- RAM: 4 GB or more
- CPU: dual-core 2 GHz or higher
- Swap: at least 2 GB
- HDD: at least 2 GB of free space
- Distribution: 64-bit Red Hat, CentOS or other compatible distributive with kernel version 3.8 or later, 64-bit Debian, Ubuntu or other compatible distributive with kernel version 3.8 or later
- Docker: version 1.9.0 or later
- Docker-compose: version 1.28.0 or later
Building ONLYOFFICE Docs
Cloning this repository
To clone this repository, run the following command:
git clone https://github.com/ONLYOFFICE/Docker-Docs.git
Go to the Docker-Docs directory.
Adding custom Fonts (optional)
To add your custom fonts to the images, add your custom fonts to the fonts
directory.
Adding Plugins (optional)
To add plugins to the images, add the folder with the plugin code to the plugins
directory.
Building images
To build images, please follow these steps
1. Change the variables
Change the value of the ACCOUNT_NAME
variable in the .env
file. It must contain the account name in Docker Hub. If necessary, change the values of the variables PREFIX_NAME
and DOCKER_TAG
in the .env
file.
Also, depending on the solution type, specify the required value for the PRODUCT_EDITION
variable in the .env
file.
Possible values:
- Nothing is specified. For the open-source community version. Default,
-de
. For commercial Developer Edition,
-ee
. For commercial Enterprise Edition.
If you want to use a ONLYOFFICE Docs version other than the latest one, specify the version you need in the RELEASE_VERSION
variable. If no value is defined, the latest up-to-date version will be used.
If you are not using the script build.sh
to build images, then change the value in the DS_VERSION_HASH
variable at each build. This variable defines the hash that will be appended to the ONLYOFFICE Docs version in the request URLs.
If you want to build images with no plugins at all, then change the value of the DOCKERFILE
variable to Dockerfile.noplugins
in the .env
file.
2. Run the build
To start the build, run the following command:
./build.sh
3. Publish the images to the image repository
Log in to the local host:
docker login
To publish the images, run the following command:
docker-compose push
Running ONLYOFFICE Docs
Execute the following command:
docker-compose up -d
To stop ONLYOFFICE Docs, type:
docker-compose down
Services scaling
Converter and docservice can be scaled by changing the replicas parameter in the compose file.
You can also set the number of replicas manualy when you deploy services with compose, for example:
docker compose up -d --scale docservice=3
NOTE: If you wanna scale your container on runtime it is necessary to deploy services through docker swarm. After that you can scale in runtime, for example:
docker service scale <deploy_name>_docservice=2
Available сonfiguration parameters
ONLYOFFICE Docs consists of set of images:
- onlyoffice/docs-proxy
- onlyoffice/docs-docservice
- onlyoffice/docs-converter
- onlyoffice/docs-example
Each of them can be configured by environment variables. Please refer to your docker orchestrating system for details.
Below is the complete list of parameters for onlyoffice/docs-proxy
.
- DOCSERVICE_HOST_PORT: Defaults to
localhost:8000
.
- EXAMPLE_HOST_PORT: Defaults to
localhost:3000
.
- NGINX_ACCESS_LOG: Defines the nginx config access_log directive. Defaults to
off
.
- NGINX_GZIP_PROXIED: Defines the nginx config gzip_proxied directive. Defaults to
off
.
- NGINX_CLIENT_MAX_BODY_SIZE: Defines the nginx config client_max_body_size directive. Defaults to
100m
.
- NGINX_WORKER_CONNECTIONS: Defines the nginx config worker_connections directive. Defaults to
4096
.
- NGINX_WORKER_PROCESSES: Defines the nginx config worker_processes directive.
- SECURE_LINK_SECRET: Defines secret for the nginx config directive secure_link_md5. Defaults to
verysecretstring
.
- INFO_ALLOWED_IP: Defines ip addresses for accessing the info page. You can specify multiple values separated by a space.
- INFO_ALLOWED_USER: Defines user name for accessing the info page. If not set to, Nginx Basic Authentication will not be applied to access the info page.
- INFO_ALLOWED_PASSWORD: Defines user password for accessing the info page. Used if
INFO_ALLOWED_USER
is set.
Below is the complete list of parameters for onlyoffice/docs-docservice
, onlyoffice/docs-converter
.
- DB_TYPE: The database type. Supported values are
postgres
, mariadb
or mysql
. Defaults to postgres
.
- DB_HOST: The IP address or the name of the host where the PostgreSQL server is running.
- DB_PORT: The PostgreSQL server port number. Default to
5432
.
- DB_NAME: The name of a PostgreSQL database to be created on the image startup.
- DB_USER: The new user name with superuser permissions for the PostgreSQL account.
- DB_PWD: The password set for the PostgreSQL account.
- AMQP_TYPE: Defines the message broker type. Defaults to
rabbitmq
. Possible values are rabbitmq
or activemq
.
- AMQP_PROTO: The protocol for the connection to AMQP server. Default to
amqp
. Possible values are amqp
, amqps
.
- AMQP_USER: The username for the AMQP server account.
- AMQP_PWD: The password set for the AMQP server account.
- AMQP_HOST: The IP address or the name of the host where the AMQP server is running.
- AMQP_PORT: The port for the connection to AMQP server. Default to
5672
.
- AMQP_VHOST: The virtual host for the connection to AMQP server. Default to
/
.
- REDIS_CONNECTOR_NAME: Defines which connector to use to connect to Redis. Default to
redis
. If you need to connect to Redis Sentinel, set the value ioredis
.
- REDIS_SERVER_HOST: The IP address or the name of the host where the Redis server is running.
- REDIS_SERVER_PORT: The Redis server port number. Default to
6379
.
- REDIS_SERVER_USER: The Redis user name.
- REDIS_SERVER_PWD: The password set for the Redis account.
- REDIS_SERVER_DB_NUM: Number of the redis logical database to be selected. Default to
0
.
- REDIS_SENTINEL_GROUP_NAME: Name of a group of Redis instances composed of a master and one or more slaves. Default to
mymaster
.
- REDIS_SENTINEL_PWD: The password set for the Redis Sentinel nodes. Default to empty.
- REDIS_CLUSTER_NODES: List of nodes in the Redis cluster. There is no need to specify every node in the cluster, 3 should be enough. You can specify multiple values separated by a space. It must be specified in the
host:port
format.
- JWT_ENABLED: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Docs. Common for inbox and outbox requests. Defaults to
true
.
- JWT_ENABLED_INBOX: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Docs only for inbox requests. Default, the value of the variable
JWT_ENABLED
is used.
- JWT_ENABLED_OUTBOX: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Docs only for outbox requests. Default, the value of the variable
JWT_ENABLED
is used.
- JWT_SECRET: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Docs. Common for inbox and outbox requests. Defaults to
secret
.
- JWT_SECRET_INBOX: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Docs only for inbox requests. Default, the value of the variable
JWT_SECRET
is used.
- JWT_SECRET_OUTBOX: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Docs only for outbox requests. Default, the value of the variable
JWT_SECRET
is used.
- JWT_HEADER: Defines the http header that will be used to send the JSON Web Token. Common for inbox and outbox requests. Defaults to
Authorization
.
- JWT_HEADER_INBOX: Defines the http header that will be used to send the JSON Web Token only for inbox requests. Default, the value of the variable
JWT_HEADER
is used.
- JWT_HEADER_OUTBOX: Defines the http header that will be used to send the JSON Web Token only for outbox requests. Default, the value of the variable
JWT_HEADER
is used.
- JWT_IN_BODY: Specifies the enabling the token validation in the request body to the ONLYOFFICE Docs. Defaults to
false
.
- LOG_LEVEL: Defines the type and severity of a logged event. Default to
WARN
. Possible values are ALL
, TRACE
, DEBUG
, INFO
, WARN
, ERROR
, FATAL
, MARK
, OFF
.
- LOG_TYPE: Defines the format of a logged event. Default to
pattern
. Possible values are pattern
, json
, basic
, coloured
, messagePassThrough
, dummy
.
- LOG_PATTERN: Defines the log pattern if
LOG_TYPE=pattern
. Default to [%d] [%p] [%X{DOCID}] [%X{USERID}] %c - %.10000m
.
- METRICS_ENABLED: Specifies the enabling StatsD for ONLYOFFICE Docs. Defaults to
false
.
- METRICS_HOST: Defines StatsD listening host. Defaults to
localhost
.
- METRICS_PORT: Defines StatsD listening port. Defaults to
8125
.
- METRICS_PREFIX: Defines StatsD metrics prefix for backend services. Defaults to
ds.
.
- ALLOW_PRIVATE_IP_ADDRESS: Defines if it is allowed to connect private IP address or not. Defaults to
false
.
- ALLOW_META_IP_ADDRESS: Defines if it is allowed to connect meta address or not. Defaults to
false
.
- ALLOW_IP_ADDRESS_LIST: Defines the list of IP addresses allowed to connect. This values are preferred than denyAddressList. Defaults to
[]
.
- DENY_IP_ADDRESS_LIST: Defines the list of IP addresses deny to connect. Defaults to
[]
.
Below is the complete list of parameters for onlyoffice/docs-example
.
- DS_URL: Specifies ONLYOFFICE Docs server address. Defaults to
/
. You have specyfing this field to correct work ONLYOFFICE Docs Example. Example http://onlyoffice-docs-address/
.
- JWT_ENABLED: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Docs. Defaults to
false
.
- JWT_SECRET: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Docs. Defaults to
secret
.
- JWT_HEADER: Defines the http header that will be used to send the JSON Web Token. Defaults to
Authorization
.
- WOPI_ENABLED: Specifies the enabling the wopi handlers. Defaults to
false
.
Project Information
Official website: https://www.onlyoffice.com/
Code repository: https://github.com/ONLYOFFICE/DocumentServer
License: GNU AGPL v3.0
ONLYOFFICE Docs on official website: http://www.onlyoffice.com/office-suite.aspx
List of available integrations: http://www.onlyoffice.com/all-connectors.aspx
ONLYOFFICE Workspace
ONLYOFFICE Docs packaged as Document Server is a part of ONLYOFFICE Workspace that also includes ONLYOFFICE Groups (packaged as Community Server), Mail Server, Control Panel and Talk (instant messaging app).
User feedback and support
If you have any problems with or questions about this image, please visit our official forum to find answers to your questions: forum.onlyoffice.com or you can ask and answer ONLYOFFICE development questions on Stack Overflow.