Compare commits

...

79 Commits

Author SHA1 Message Date
f663fbd43b Update build 2022-01-06 12:18:40 +03:00
e3f8ab9a1d Update build 2022-01-06 12:13:22 +03:00
2fbbccccec add hooks 2022-01-06 11:46:31 +03:00
9c1975df7b Update Dockerfile.cl 2021-12-20 11:01:52 +03:00
f9499ba9ff Create Dockerfile.cl 2021-12-17 17:04:20 +03:00
ca39675055 Merge branch hotfix/v6.4.1 into master 2021-09-28 08:08:26 +00:00
a31a579d24 Add WOPI_ENABLED variable (#379)
* Add WOPI_ENABLED variable

* Add var description
2021-09-14 17:53:37 +03:00
32a8a24a0f Update README.md (#377) 2021-09-14 17:42:55 +03:00
a23477301e Merge branch release/v6.4.0 into master 2021-08-26 11:40:24 +00:00
d654094671 Merge branch hotfix/v6.3.1 into release/v6.4.0 2021-07-15 13:14:47 +00:00
5bf1ff715f Remove server version of spell checker (#365) 2021-06-22 09:59:50 +03:00
13a01e7c56 Merge branch release/v6.3.0 into develop 2021-05-20 12:08:20 +00:00
3b830417a2 Merge branch release/v6.3.0 into master 2021-05-20 12:08:15 +00:00
245659807a Merge branch hotfix/v6.2.2 into release/v6.3.0 2021-05-07 13:27:20 +00:00
2f26419ac7 Merge branch hotfix/v6.2.2 into develop 2021-05-07 13:25:56 +00:00
67df644858 Precise info about table existance (#355) 2021-04-29 12:14:31 +03:00
ca6b3a67a3 Merge branch hotfix/v6.2.2 into master 2021-04-19 12:18:58 +00:00
f2c708cff2 Reset database tables on update (#351)
* Reset database tables on update

* Add changes

* Add changes

* Add changes

* Add changes

* Add changes

* Add changes
2021-04-14 17:10:38 +03:00
2f26cea790 Fix #347 (#349) 2021-04-01 10:07:07 +03:00
30c5612cfb Merge branch hotfix/v6.2.1 into release/v6.3.0 2021-03-31 11:27:32 +00:00
cbb749d77c Merge branch hotfix/v6.2.1 into develop 2021-03-31 11:27:26 +00:00
1cfe84b8b8 Fix automatic port detection for database (#341) 2021-03-19 16:20:52 +03:00
30ca844513 Merge branch release/v6.2.0 into release/v6.3.0 2021-03-19 07:54:45 +00:00
c611b2b080 Merge branch release/v6.2.0 into develop 2021-03-18 15:22:47 +00:00
9dc5f5d993 Merge branch release/v6.2.0 into master 2021-03-01 08:47:27 +00:00
393006d306 Add pull ubuntu image (#334) 2021-02-24 18:34:03 +03:00
ea0fcf3951 Merge branch hotfix/v6.1.1 into develop 2021-01-28 08:28:05 +00:00
cbff89bdea Merge pull request #323 from ONLYOFFICE/hotfix/v6.1.1
Merge hotfix/v6.1.1 into release/v6.2.0
2020-12-25 11:31:19 +03:00
9676e7aac1 Merge branch release/v6.1.0 into develop 2020-12-24 07:52:11 +00:00
e7d2cc2cd5 Edit s3 paths (#319)
* Edit s3 paths

* DocumentServer installed by url

* Fix install recommends
2020-12-16 11:39:05 +03:00
93740b7c37 Merge branch release/v6.1.0 into master 2020-12-08 07:07:57 +00:00
d26fd0d234 Merge branch hotfix/v6.0.2 into release/v6.1.0 2020-12-07 14:38:53 +00:00
fd7e1a926a Merge branch hotfix/v6.0.2 into develop 2020-12-07 14:38:43 +00:00
4cc63380f2 Merge branch release/v6.1.0 into master 2020-12-01 07:51:32 +00:00
eddbbbf3eb Fix unsupported rabbitmq ver. Use 20.04 as base. (#307)
* Fix unsupported rabbitmq ver. Use 20.04 as base.

* Extend timeout for test (#311)

* test01

* Timeout

* Small changes

* Change timeout to 90

Co-authored-by: Roman Demidov <roman.demidov@onlyoffice.com>
2020-11-20 10:53:36 +03:00
326a005ac7 Fix empty lets encrypt params error (#310) 2020-11-18 10:46:19 +03:00
cd02cd6deb Merge pull request #309 from zhaofengli/netcat-ipv6
Use netcat-openbsd for IPv6 support
2020-11-09 14:05:04 +03:00
94c64d3f6d Use netcat-openbsd for IPv6 support 2020-11-08 23:38:31 -08:00
f85ac8c510 Merge branch hotfix/v6.0.1 into release/v6.1.0 2020-10-28 14:31:41 +00:00
0ed3f8fbbf Merge branch hotfix/v6.0.1 into develop 2020-10-28 14:31:31 +00:00
9e63609c14 Fix custom db name bug (#304)
Co-authored-by: papacarlo <builder@onlyoffice.com>
2020-10-27 13:50:48 +03:00
bdef500858 Allow let's encrypte sertificates (#300)
* Allow let's encrypte sertificates

Co-authored-by: papacarlo <builder@onlyoffice.com>
Co-authored-by: Roman <demidov.roman@onlyoffice.com>
2020-10-22 13:47:51 +03:00
211ae50980 Fix #281: Add option to disable CPU-heavy tasks on startup (#293)
* Fix #281: Add option to disable CPU-heavy tasks on startup

* Update README.md

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>

* Update README.md

Co-authored-by: Roman <demidov.roman@onlyoffice.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2020-10-20 16:14:55 +03:00
a231d7992a Update README.md (#301)
- add info on OO Docs & OO Workspace
2020-10-16 16:48:43 +03:00
26854106a3 Add consent to the fonts license (#297)
* Add concent to the fonts license

* Small changes

* Small changes

Co-authored-by: papacarlo <builder@onlyoffice.com>
Co-authored-by: Roman <demidov.roman@onlyoffice.com>
2020-10-08 15:58:07 +03:00
85158c3624 Merge branch release/v6.0.0 into develop 2020-09-30 15:15:35 +00:00
f24908eb7a Merge branch release/v6.0.0 into master 2020-09-30 15:15:26 +00:00
1956f98c1d Fixes exit procedure. (#286) 2020-09-10 17:02:20 +03:00
ecb77ddb56 Add more travis tests (#289)
* Add version variable for travis tests

* Fix typo

* Fix activemq variable

* Add travis tests

* Remove mysql latest

* Fixes & refactoring

* Add more travis tests

* Remove mysql 8 test

* Remove mysql 8 test [2]

* Add mysql 8 comment

* Fix mysql 8 auth plugin

Co-authored-by: Alexey Golubev <alexey.golubev@onlyoffice.com>
2020-09-10 16:57:21 +03:00
d3e5246e9a Merge branch hotfix/v5.6.4 into release/v6.0.0 2020-09-08 08:31:06 +00:00
380ac3e227 Merge branch hotfix/v5.6.4 into develop 2020-09-08 08:30:56 +00:00
16107fd3ba Update README.md (#283) 2020-08-17 16:08:52 +03:00
ee126870b2 Merge branch hotfix/v5.6.2 into release/v6.0.0 2020-08-07 08:17:06 +00:00
abe349dad9 Merge branch hotfix/v5.6.2 into develop 2020-08-07 08:16:55 +00:00
ac0c135ded Merge branch hotfix/v5.6.1 into release/v6.0.0 2020-08-05 09:39:37 +00:00
c5d15c3be7 Merge branch hotfix/v5.6.1 into develop 2020-08-05 09:39:26 +00:00
79e627e080 Merge branch hotfix/v5.6.1 into master 2020-08-05 09:39:15 +00:00
dd5cde1919 Fix unary operator expected (Bug 45985) 2020-07-31 18:09:51 +03:00
c47a310683 Fix unary operator expected (Bug 45985) (#270) 2020-07-30 11:54:46 +03:00
0d974b9f2a Merge branch hotfix/v5.6.0 into release/v6.0.0 2020-07-28 13:48:40 +00:00
be27b2b4d6 Merge branch hotfix/v5.6.0 into develop 2020-07-28 13:48:30 +00:00
98f96d1795 Merge branch hotfix/v5.6.0 into master 2020-07-28 13:48:20 +00:00
7bfe250035 Add Graphite (#265) 2020-07-23 15:42:17 +03:00
e47d6d8c1a Add several attempts for docker push (#258)
* Add several attempts for docker push

* Fix retries, add delay
2020-06-17 11:24:52 +03:00
7193b651ec Add test for Integration Edition (#256)
* Add test for Integration Edition

* Add test for Community Edition

* Fix tests for redis

* Fix edition test

* Rename test
2020-06-04 17:24:07 +03:00
62424ea120 Disable redis server for Community Edition (#255)
* Disable redis server

* Add REDIS_ENABLED variable

* Fix Dockerfile

* Fix REDIS_ENABLED condition
2020-06-04 15:15:34 +03:00
c2bcd00322 v5.5.3 2020-05-22 11:25:18 +03:00
91815ac24a v5.5.3 2020-05-22 11:21:42 +03:00
f6b5017b4a Rename cert & key files (#245)
* New cert files default names

* Add certs travis test

* Add certificate generation

* Fix certs test

* Fix cert gen

* Fix directory mapping

* Fix https healthcheck

* Add test for old cert path

* Fix script & test

* Fix port number

* Code refactoring

* Fix old cert test

* Code refactoring

* Fix certs test names

* Remove unnecessary test
2020-04-29 19:48:33 +03:00
ab5637a11f Update travis tests (#243)
* Remove docker .env file

* Add enviroment variables defaults

* Update docker-compose version

* Update travis tests variables

* Build document server image

* Fix mariadb

* Fix variable names

* Revert container name

(cherry picked from commit e721ca102d)
2020-04-28 15:23:27 +03:00
e721ca102d Update travis tests (#243)
* Remove docker .env file

* Add enviroment variables defaults

* Update docker-compose version

* Update travis tests variables

* Build document server image

* Fix mariadb

* Fix variable names

* Revert container name
2020-04-28 15:05:35 +03:00
4a38d6faeb v5.5.2 2020-04-27 17:01:52 +03:00
96c0bc432d v5.5.1r2 2020-04-15 14:18:32 +03:00
9d82bb8d1f v5.5.1 2020-04-09 12:40:20 +03:00
048a888836 Add docker-compose cluster example 2020-04-01 18:54:11 +03:00
a51dc61276 Fix db folder mapping for custom build 2020-04-01 12:11:57 +03:00
82c24e6b4c v5.5.0 2020-03-04 18:33:54 +03:00
be9f986578 Add redis test (#206) 2019-12-23 15:59:14 +03:00
d59136d477 Rename AMQP variables (#205) 2019-12-23 12:27:47 +03:00
26 changed files with 622 additions and 214 deletions

View File

@ -3,10 +3,55 @@ language: generic
dist: trusty
env:
# postgresql
# community edition
- config: standalone.yml
# integration edition
- config: standalone.yml
PRODUCT_NAME: documentserver-ie
# certificates (default tls if onlyoffice not exists)
- config: certs.yml
ssl: true
# certificates (default onlyoffice if exists)
- config: certs.yml
ssl: true
private_key: onlyoffice.key
certificate_request: onlyoffice.csr
certificate: onlyoffice.crt
# custom certificates
- config: certs-customized.yml
ssl: true
private_key: mycert.key
certificate_request: mycert.csr
certificate: mycert.crt
SSL_CERTIFICATE_PATH: /var/www/onlyoffice/Data/certs/mycert.crt
SSL_KEY_PATH: /var/www/onlyoffice/Data/certs/mycert.key
# postgresql 12
- config: postgres.yml
POSTGRES_VERSION: 12
# postgresql 11
- config: postgres.yml
POSTGRES_VERSION: 11
# postgresql 10
- config: postgres.yml
POSTGRES_VERSION: 10
# postgresql 9
- config: postgres.yml
POSTGRES_VERSION: 9
# postgresql 9.5
- config: postgres.yml
# custom values
# postgresql custom values
- config: postgres.yml
DB_NAME: mydb
DB_USER: myuser
@ -14,45 +59,66 @@ env:
POSTGRES_DB: mydb
POSTGRES_USER: myuser
# deprecated variables
# postgresql deprecated variables
- config: postgres-old.yml
POSTGRESQL_SERVER_HOST: onlyoffice-postgresql
POSTGRESQL_SERVER_PORT: 5432
POSTGRESQL_SERVER_DB_NAME: onlyoffice
POSTGRESQL_SERVER_USER: onlyoffice
POSTGRESQL_SERVER_PASS: onlyoffice
# mysql
# mysql 8
- config: mysql.yml
DB_TYPE: mysql
DB_HOST: onlyoffice-mysql
DB_PORT: 3306
MYSQL_VERSION: 8
# mariadb
# mysql 5
- config: mysql.yml
MYSQL_VERSION: 5
# mysql 5.7
- config: mysql.yml
# mariadb 10
- config: mariadb.yml
DB_TYPE: mysql
DB_HOST: db
DB_PORT: 3306
MARIADB_VERSION: 10
# mariadb 10.5
- config: mariadb.yml
# activemq
- config: activemq.yml
AMQP_TYPE: activemq
AMQP_URI: amqp://guest:guest@onlyoffice-activemq
ACTIVEMQ_VERSION: latest
# rabbitmq
# activemq 5.14.3
- config: activemq.yml
# rabbitmq latest
- config: rabbitmq.yml
AMQP_TYPE: rabbitmq
AMQP_URI: amqp://guest:guest@onlyoffice-rabbitmq
# rabbitmq 3
- config: rabbitmq.yml
RABBITMQ_VERSION: 3
# rabbitmq old variables
- config: rabbitmq-old.yml
AMQP_SERVER_TYPE: rabbitmq
AMQP_SERVER_URL: amqp://guest:guest@onlyoffice-rabbitmq
# redis
# redis latest with community edition
- config: redis.yml
REDIS_SERVER_HOST: onlyoffice-redis
REDIS_SERVER_PORT: 6379
# redis latest with integraion edition
- config: redis.yml
PRODUCT_NAME: documentserver-ie
# redis 6
- config: redis.yml
REDIS_VERSION: 6
# redis 5
- config: redis.yml
REDIS_VERSION: 5
# graphite
- config: graphite.yml
services:
- docker

View File

@ -1,7 +1,7 @@
FROM ubuntu:18.04
FROM ubuntu:20.04
LABEL maintainer Ascensio System SIA <support@onlyoffice.com>
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=12
ARG ONLYOFFICE_VALUE=onlyoffice
@ -10,17 +10,20 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
apt-get -yq install wget apt-transport-https gnupg locales && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x8320ca65cb2de8e5 && \
locale-gen en_US.UTF-8 && \
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \
apt-get -yq install \
adduser \
apt-utils \
bomstrip \
certbot \
curl \
gconf-service \
htop \
libasound2 \
libboost-regex-dev \
libcairo2 \
libcurl3 \
libcurl3-gnutls \
libgconf2-4 \
libcurl4 \
libgtk-3-0 \
libnspr4 \
libnss3 \
@ -31,7 +34,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
mysql-client \
nano \
net-tools \
netcat \
netcat-openbsd \
nginx-extras \
postgresql \
postgresql-client \
@ -41,12 +44,15 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
software-properties-common \
sudo \
supervisor \
ttf-mscorefonts-installer \
xvfb \
zlib1g && \
if [ $(ls -l /usr/share/fonts/truetype/msttcorefonts | wc -l) -ne 61 ]; \
then echo 'msttcorefonts failed to download'; exit 1; fi && \
echo "SERVER_ADDITIONAL_ERL_ARGS=\"+S 1:1\"" | tee -a /etc/rabbitmq/rabbitmq-env.conf && \
sed -i "s/bind .*/bind 127.0.0.1/g" /etc/redis/redis.conf && \
sed 's|\(application\/zip.*\)|\1\n application\/wasm wasm;|' -i /etc/nginx/mime.types && \
pg_conftool 10 main set listen_addresses 'localhost' && \
pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \
service postgresql restart && \
sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE;" && \
sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \
@ -63,22 +69,24 @@ COPY run-document-server.sh /app/ds/run-document-server.sh
EXPOSE 80 443
ARG REPO_URL="deb http://download.onlyoffice.com/repo/debian squeeze main"
ARG COMPANY_NAME=onlyoffice
ARG PRODUCT_NAME=documentserver
ARG PACKAGE_URL="http://download.onlyoffice.com/install/documentserver/linux/${COMPANY_NAME}-${PRODUCT_NAME}_amd64.deb"
ENV COMPANY_NAME=$COMPANY_NAME
ENV COMPANY_NAME=$COMPANY_NAME \
PRODUCT_NAME=$PRODUCT_NAME
RUN echo "$REPO_URL" | tee /etc/apt/sources.list.d/ds.list && \
RUN wget -q -P /tmp "$PACKAGE_URL" && \
apt-get -y update && \
service postgresql start && \
apt-get -yq install $COMPANY_NAME-$PRODUCT_NAME && \
apt-get -yq install /tmp/$(basename "$PACKAGE_URL") && \
service postgresql stop && \
service supervisor stop && \
chmod 755 /app/ds/*.sh && \
rm -f /tmp/$(basename "$PACKAGE_URL") && \
rm -rf /var/log/$COMPANY_NAME && \
rm -rf /var/lib/apt/lists/*
VOLUME /var/log/$COMPANY_NAME /var/lib/$COMPANY_NAME /var/www/$COMPANY_NAME/Data /var/lib/postgresql /var/lib/rabbitmq /var/lib/redis /usr/share/fonts/truetype/custom
ENTRYPOINT /app/ds/run-document-server.sh
ENTRYPOINT ["/app/ds/run-document-server.sh"]

4
Dockerfile.cl Normal file
View File

@ -0,0 +1,4 @@
FROM onlyoffice/documentserver-ee:latest
RUN sed -i '/trap clean_exit SIGTERM/s/^/#/' /app/ds/run-document-server.sh

View File

@ -4,14 +4,16 @@ PRODUCT_NAME ?= DocumentServer
PRODUCT_VERSION ?= 0.0.0
BUILD_NUMBER ?= 0
ONLYOFFICE_VALUE ?= onlyoffice
S3_BUCKET ?= repo-doc-onlyoffice-com
RELEASE_BRANCH ?= unstable
COMPANY_NAME_LOW = $(shell echo $(COMPANY_NAME) | tr A-Z a-z)
PRODUCT_NAME_LOW = $(shell echo $(PRODUCT_NAME) | tr A-Z a-z)
COMPANY_NAME_LOW_ESCAPED = $(subst -,,$(COMPANY_NAME_LOW))
PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME_LOW)
PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
REPO_URL := "deb [trusted=yes] http://repo-doc-onlyoffice-com.s3.amazonaws.com/ubuntu/trusty/$(COMPANY_NAME_LOW)-$(PRODUCT_NAME_LOW)/$(GIT_BRANCH)/$(PACKAGE_VERSION)/ repo/"
PACKAGE_URL := http://$(S3_BUCKET).s3.amazonaws.com/$(COMPANY_NAME_LOW)/$(RELEASE_BRANCH)/ubuntu/$(PACKAGE_NAME)_$(PACKAGE_VERSION)_amd64.deb
UPDATE_LATEST := false
@ -35,12 +37,14 @@ DOCKER_TARGETS := $(foreach TAG,$(DOCKER_TAGS),$(DOCKER_REPO)$(COLON)$(TAG))
DOCKER_ARCH := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME_LOW)_$(PACKAGE_VERSION).tar.gz
DOCKER_ARCH_URI := $(COMPANY_NAME_LOW)/$(RELEASE_BRANCH)/docker/$(notdir $(DOCKER_ARCH))
.PHONY: all clean clean-docker deploy docker publish
$(DOCKER_TARGETS): $(DEB_REPO_DATA)
docker pull ubuntu:20.04
docker build \
--build-arg REPO_URL=$(REPO_URL) \
--build-arg PACKAGE_URL=$(PACKAGE_URL) \
--build-arg COMPANY_NAME=$(COMPANY_NAME_LOW) \
--build-arg PRODUCT_NAME=$(PRODUCT_NAME_LOW) \
--build-arg ONLYOFFICE_VALUE=$(ONLYOFFICE_VALUE) \
@ -61,10 +65,11 @@ clean-docker:
docker rmi -f $$(docker images -q $(COMPANY_NAME_LOW)/*) || exit 0
deploy: $(DOCKER_TARGETS)
$(foreach TARGET,$(DOCKER_TARGETS),docker push $(subst $(COLON),:,$(TARGET));)
$(foreach TARGET,$(DOCKER_TARGETS), \
for i in {1..3}; do \
docker push $(subst $(COLON),:,$(TARGET)) && break || sleep 1m; \
done;)
publish: $(DOCKER_ARCH)
aws s3 cp \
$(DOCKER_ARCH) \
s3://repo-doc-onlyoffice-com.s3.amazonaws.com/docker/amd64/ \
--acl public-read
aws s3 cp --no-progress --acl public-read \
$(DOCKER_ARCH) s3://$(S3_BUCKET)/$(DOCKER_ARCH_URI)

View File

@ -21,6 +21,10 @@
ONLYOFFICE Document Server is an online office suite comprising viewers and editors for texts, spreadsheets and presentations, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time.
Starting from version 6.0, Document Server is distributed as ONLYOFFICE Docs. It has [three editions](https://github.com/ONLYOFFICE/DocumentServer#onlyoffice-document-server-editions). With this image, you will install the free Community version.
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.
## Functionality ##
* ONLYOFFICE Document Editor
* ONLYOFFICE Spreadsheet Editor
@ -96,10 +100,17 @@ To secure the application via SSL basically two things are needed:
So you need to create and install the following files:
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
/app/onlyoffice/DocumentServer/data/certs/tls.key
/app/onlyoffice/DocumentServer/data/certs/tls.crt
When using CA certified certificates, these files are provided to you by the CA. When using self-signed certificates you need to generate these files yourself. Skip the following section if you are have CA certified SSL certificates.
When using CA certified certificates (e.g [Let's encrypt](https://letsencrypt.org)), these files are provided to you by the CA. If you are using self-signed certificates you need to generate these files [yourself](#generation-of-self-signed-certificates).
#### Using the automatically generated Let's Encrypt SSL Certificates
sudo docker run -i -t -d -p 80:80 -p 443:443 \
-e LETS_ENCRYPT_DOMAIN=your_domain -e LETS_ENCRYPT_MAIL=your_mail onlyoffice/documentserver
If you want to get and extend Let's Encrypt SSL Certificates automatically just set LETS_ENCRYPT_DOMAIN and LETS_ENCRYPT_MAIL variables.
#### Generation of Self Signed Certificates
@ -108,19 +119,19 @@ Generation of self-signed SSL certificates involves a simple 3 step procedure.
**STEP 1**: Create the server private key
```bash
openssl genrsa -out onlyoffice.key 2048
openssl genrsa -out tls.key 2048
```
**STEP 2**: Create the certificate signing request (CSR)
```bash
openssl req -new -key onlyoffice.key -out onlyoffice.csr
openssl req -new -key tls.key -out tls.csr
```
**STEP 3**: Sign the certificate using the private key and CSR
```bash
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt
```
You have now generated an SSL certificate that's valid for 365 days.
@ -136,18 +147,18 @@ openssl dhparam -out dhparam.pem 2048
#### Installation of the SSL Certificates
Out of the four files generated above, you need to install the `onlyoffice.key`, `onlyoffice.crt` and `dhparam.pem` files at the onlyoffice server. The CSR file is not needed, but do make sure you safely backup the file (in case you ever need it again).
Out of the four files generated above, you need to install the `tls.key`, `tls.crt` and `dhparam.pem` files at the onlyoffice server. The CSR file is not needed, but do make sure you safely backup the file (in case you ever need it again).
The default path that the onlyoffice application is configured to look for the SSL certificates is at `/var/www/onlyoffice/Data/certs`, this can however be changed using the `SSL_KEY_PATH`, `SSL_CERTIFICATE_PATH` and `SSL_DHPARAM_PATH` configuration options.
The `/var/www/onlyoffice/Data/` path is the path of the data store, which means that you have to create a folder named certs inside `/app/onlyoffice/DocumentServer/data/` and copy the files into it and as a measure of security you will update the permission on the `onlyoffice.key` file to only be readable by the owner.
The `/var/www/onlyoffice/Data/` path is the path of the data store, which means that you have to create a folder named certs inside `/app/onlyoffice/DocumentServer/data/` and copy the files into it and as a measure of security you will update the permission on the `tls.key` file to only be readable by the owner.
```bash
mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp tls.key /app/onlyoffice/DocumentServer/data/certs/
cp tls.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
chmod 400 /app/onlyoffice/DocumentServer/data/certs/tls.key
```
You are now just one step away from having our application secured.
@ -160,14 +171,14 @@ Below is the complete list of parameters that can be set using environment varia
- **ONLYOFFICE_HTTPS_HSTS_ENABLED**: Advanced configuration option for turning off the HSTS configuration. Applicable only when SSL is in use. Defaults to `true`.
- **ONLYOFFICE_HTTPS_HSTS_MAXAGE**: Advanced configuration option for setting the HSTS max-age in the onlyoffice nginx vHost configuration. Applicable only when SSL is in use. Defaults to `31536000`.
- **SSL_CERTIFICATE_PATH**: The path to the SSL certificate to use. Defaults to `/var/www/onlyoffice/Data/certs/onlyoffice.crt`.
- **SSL_KEY_PATH**: The path to the SSL certificate's private key. Defaults to `/var/www/onlyoffice/Data/certs/onlyoffice.key`.
- **SSL_CERTIFICATE_PATH**: The path to the SSL certificate to use. Defaults to `/var/www/onlyoffice/Data/certs/tls.crt`.
- **SSL_KEY_PATH**: The path to the SSL certificate's private key. Defaults to `/var/www/onlyoffice/Data/certs/tls.key`.
- **SSL_DHPARAM_PATH**: The path to the Diffie-Hellman parameter. Defaults to `/var/www/onlyoffice/Data/certs/dhparam.pem`.
- **SSL_VERIFY_CLIENT**: Enable verification of client certificates using the `CA_CERTIFICATES_PATH` file. Defaults to `false`
- **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 database server is running.
- **DB_PORT**: The database server port number.
- **DB_NAME**: The name of a database to be created on the image startup.
- **DB_NAME**: The name of a database to use. Should be existing on container startup.
- **DB_USER**: The new user name with superuser permissions for the database account.
- **DB_PWD**: The password set for the database account.
- **AMQP_URI**: The [AMQP URI](https://www.rabbitmq.com/uri-spec.html "RabbitMQ URI Specification") to connect to message broker server.
@ -180,7 +191,15 @@ Below is the complete list of parameters that can be set using environment varia
- **JWT_SECRET**: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Document Server. Defaults to `secret`.
- **JWT_HEADER**: Defines the http header that will be used to send the JSON Web Token. Defaults to `Authorization`.
- **JWT_IN_BODY**: Specifies the enabling the token validation in the request body to the ONLYOFFICE Document Server. Defaults to `false`.
- **WOPI_ENABLED**: Specifies the enabling the wopi handlers. Defaults to `false`.
- **USE_UNAUTHORIZED_STORAGE**: Set to `true`if using selfsigned certificates for your storage server e.g. Nextcloud. Defaults to `false`
- **GENERATE_FONTS**: When 'true' regenerates fonts list and the fonts thumbnails etc. at each start. Defaults to `true`
- **METRICS_ENABLED**: Specifies the enabling StatsD for ONLYOFFICE Document Server. 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.`.
- **LETS_ENCRYPT_DOMAIN**: Defines the domain for Let's Encrypt certificate.
- **LETS_ENCRYPT_MAIL**: Defines the domain administator mail address for Let's Encrypt certificate.
## Installing ONLYOFFICE Document Server integrated with Community and Mail Servers
@ -314,7 +333,7 @@ SaaS version: [https://www.onlyoffice.com/cloud-office.aspx](https://www.onlyoff
## 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: [dev.onlyoffice.org][1] or you can ask and answer ONLYOFFICE development questions on [Stack Overflow][2].
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][1] or you can ask and answer ONLYOFFICE development questions on [Stack Overflow][2].
[1]: https://dev.onlyoffice.org
[1]: https://forum.onlyoffice.com
[2]: https://stackoverflow.com/questions/tagged/onlyoffice

108
cluster.yml Normal file
View File

@ -0,0 +1,108 @@
version: '2.1'
x-ds-image:
&ds-image
${COMPANY_NAME:-onlyoffice}/${PRODUCT_NAME:-documentserver-de}:${PRODUCT_VERSION:-latest}
services:
onlyoffice-documentserver-data:
container_name: onlyoffice-documentserver-data
image: *ds-image
environment:
- ONLYOFFICE_DATA_CONTAINER=true
- DB_HOST=onlyoffice-postgresql
- DB_PORT=5432
- DB_NAME=onlyoffice
- DB_USER=onlyoffice
- AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
- REDIS_SERVER_HOST=onlyoffice-redis
- REDIS_SERVER_PORT=6379
# Uncomment strings below to enable the JSON Web Token validation.
#- JWT_ENABLED=true
#- JWT_SECRET=secret
#- JWT_HEADER=Authorization
#- JWT_IN_BODY=true
stdin_open: true
restart: always
volumes:
- /etc/onlyoffice
- /var/www/onlyoffice/Data
- /var/log/onlyoffice
- /var/lib/onlyoffice/documentserver/App_Data/cache/files
- /var/www/onlyoffice/documentserver-example/public/files
- /usr/share/fonts
onlyoffice-documentserver:
image: *ds-image
depends_on:
- onlyoffice-documentserver-data
- onlyoffice-postgresql
- onlyoffice-redis
- onlyoffice-rabbitmq
environment:
- ONLYOFFICE_DATA_CONTAINER_HOST=onlyoffice-documentserver-data
- BALANCE=uri depth 3
- EXCLUDE_PORTS=443
- HTTP_CHECK=GET /healthcheck
- EXTRA_SETTINGS=http-check expect string true
# Uncomment the string below to redirect HTTP request to HTTPS request.
#- FORCE_SSL=true
stdin_open: true
restart: always
expose:
- '80'
volumes_from:
- onlyoffice-documentserver-data
onlyoffice-haproxy:
container_name: onlyoffice-haproxy
image: dockercloud/haproxy:1.5.1
depends_on:
- onlyoffice-documentserver
environment:
- MODE=http
# Uncomment the string below to specify the path of ssl certificates
#- CERT_FOLDER=/certs/
stdin_open: true
links:
- onlyoffice-documentserver
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# Uncomment the string below to map a ssl certificate from host
# to the proxy container
#- /app/onlyoffice/DocumentServer/data/certs/onlyoffice.pem:/certs/cert1.pem
restart: always
ports:
- '80:80'
- '443:443'
- '1936:1936'
onlyoffice-redis:
container_name: onlyoffice-redis
image: redis
restart: always
expose:
- '6379'
onlyoffice-rabbitmq:
container_name: onlyoffice-rabbitmq
image: rabbitmq
restart: always
expose:
- '5672'
onlyoffice-postgresql:
container_name: onlyoffice-postgresql
image: postgres:9.5
environment:
- POSTGRES_DB=onlyoffice
- POSTGRES_USER=onlyoffice
- POSTGRES_HOST_AUTH_METHOD=trust
restart: always
expose:
- '5432'
volumes:
- postgresql_data:/var/lib/postgresql
volumes:
postgresql_data:

View File

@ -24,6 +24,7 @@ services:
- '443:443'
stdin_open: true
restart: always
stop_grace_period: 60s
volumes:
- /var/www/onlyoffice/Data
- /var/log/onlyoffice

5
hooks/build Normal file
View File

@ -0,0 +1,5 @@
#!/bin/bash
sed -i '/trap clean_exit SIGTERM/s/^/#/' run-document-server.sh
docker build -t $IMAGE_NAME .

7
hooks/post_push Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
NEW_TAG=6.4.2
NEW_IMAGE_NAME=$DOCKER_REPO:$NEW_TAG
docker tag $IMAGE_NAME $NEW_IMAGE_NAME
docker push $NEW_IMAGE_NAME

3
hooks/push Normal file
View File

@ -0,0 +1,3 @@
#!/bin/bash
docker push $IMAGE_NAME

View File

@ -1,23 +1,53 @@
#!/bin/bash
function clean_exit {
/usr/bin/documentserver-prepare4shutdown.sh
}
trap clean_exit SIGTERM
# Define '**' behavior explicitly
shopt -s globstar
APP_DIR="/var/www/${COMPANY_NAME}/documentserver"
DATA_DIR="/var/www/${COMPANY_NAME}/Data"
PRIVATE_DATA_DIR="${DATA_DIR}/.private"
DS_RELEASE_DATE="${PRIVATE_DATA_DIR}/ds_release_date"
LOG_DIR="/var/log/${COMPANY_NAME}"
DS_LOG_DIR="${LOG_DIR}/documentserver"
LIB_DIR="/var/lib/${COMPANY_NAME}"
DS_LIB_DIR="${LIB_DIR}/documentserver"
CONF_DIR="/etc/${COMPANY_NAME}/documentserver"
IS_UPGRADE="false"
ONLYOFFICE_DATA_CONTAINER=${ONLYOFFICE_DATA_CONTAINER:-false}
ONLYOFFICE_DATA_CONTAINER_HOST=${ONLYOFFICE_DATA_CONTAINER_HOST:-localhost}
ONLYOFFICE_DATA_CONTAINER_PORT=80
RELEASE_DATE="$(stat -c="%y" ${APP_DIR}/server/DocService/docservice | sed -r 's/=([0-9]+)-([0-9]+)-([0-9]+) ([0-9:.+ ]+)/\1-\2-\3/')";
if [ -f ${DS_RELEASE_DATE} ]; then
PREV_RELEASE_DATE=$(head -n 1 ${DS_RELEASE_DATE})
else
PREV_RELEASE_DATE="0"
fi
if [ "${RELEASE_DATE}" != "${PREV_RELEASE_DATE}" ]; then
if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
IS_UPGRADE="true";
fi
fi
SSL_CERTIFICATES_DIR="${DATA_DIR}/certs"
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/onlyoffice.crt}
SSL_KEY_PATH=${SSL_KEY_PATH:-${SSL_CERTIFICATES_DIR}/onlyoffice.key}
if [[ -z $SSL_CERTIFICATE_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/onlyoffice.crt ]]; then
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATES_DIR}/onlyoffice.crt
else
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/tls.crt}
fi
if [[ -z $SSL_KEY_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/onlyoffice.key ]]; then
SSL_KEY_PATH=${SSL_CERTIFICATES_DIR}/onlyoffice.key
else
SSL_KEY_PATH=${SSL_KEY_PATH:-${SSL_CERTIFICATES_DIR}/tls.key}
fi
CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-${SSL_CERTIFICATES_DIR}/ca-certificates.pem}
SSL_DHPARAM_PATH=${SSL_DHPARAM_PATH:-${SSL_CERTIFICATES_DIR}/dhparam.pem}
SSL_VERIFY_CLIENT=${SSL_VERIFY_CLIENT:-off}
@ -41,6 +71,16 @@ JWT_SECRET=${JWT_SECRET:-secret}
JWT_HEADER=${JWT_HEADER:-Authorization}
JWT_IN_BODY=${JWT_IN_BODY:-false}
WOPI_ENABLED=${WOPI_ENABLED:-false}
GENERATE_FONTS=${GENERATE_FONTS:-true}
if [[ ${PRODUCT_NAME} == "documentserver" ]]; then
REDIS_ENABLED=false
else
REDIS_ENABLED=true
fi
ONLYOFFICE_DEFAULT_CONFIG=${CONF_DIR}/local.json
ONLYOFFICE_LOG4JS_CONFIG=${CONF_DIR}/log4js/production.json
ONLYOFFICE_EXAMPLE_CONFIG=${CONF_DIR}-example/local.json
@ -53,13 +93,18 @@ JSON_EXAMPLE="${JSON_BIN} -q -f ${ONLYOFFICE_EXAMPLE_CONFIG}"
LOCAL_SERVICES=()
PG_ROOT=/var/lib/postgresql
PG_VERSION=10
PG_NAME=main
PGDATA=${PG_ROOT}/${PG_VERSION}/${PG_NAME}
PG_NEW_CLUSTER=false
RABBITMQ_DATA=/var/lib/rabbitmq
REDIS_DATA=/var/lib/redis
if [ "${LETS_ENCRYPT_DOMAIN}" != "" -a "${LETS_ENCRYPT_MAIL}" != "" ]; then
LETSENCRYPT_ROOT_DIR="/etc/letsencrypt/live"
SSL_CERTIFICATE_PATH=${LETSENCRYPT_ROOT_DIR}/${LETS_ENCRYPT_DOMAIN}/fullchain.pem
SSL_KEY_PATH=${LETSENCRYPT_ROOT_DIR}/${LETS_ENCRYPT_DOMAIN}/privkey.pem
fi
read_setting(){
deprecated_var POSTGRESQL_SERVER_HOST DB_HOST
deprecated_var POSTGRESQL_SERVER_PORT DB_PORT
@ -70,7 +115,13 @@ read_setting(){
deprecated_var AMQP_SERVER_URL AMQP_URI
deprecated_var AMQP_SERVER_TYPE AMQP_TYPE
METRICS_ENABLED="${METRICS_ENABLED:-false}"
METRICS_HOST="${METRICS_HOST:-localhost}"
METRICS_PORT="${METRICS_PORT:-8125}"
METRICS_PREFIX="${METRICS_PREFIX:-.ds}"
DB_HOST=${DB_HOST:-${POSTGRESQL_SERVER_HOST:-$(${JSON} services.CoAuthoring.sql.dbHost)}}
DB_TYPE=${DB_TYPE:-$(${JSON} services.CoAuthoring.sql.type)}
case $DB_TYPE in
"postgres")
DB_PORT=${DB_PORT:-"5432"}
@ -89,7 +140,6 @@ read_setting(){
DB_NAME=${DB_NAME:-${POSTGRESQL_SERVER_DB_NAME:-$(${JSON} services.CoAuthoring.sql.dbName)}}
DB_USER=${DB_USER:-${POSTGRESQL_SERVER_USER:-$(${JSON} services.CoAuthoring.sql.dbUser)}}
DB_PWD=${DB_PWD:-${POSTGRESQL_SERVER_PASS:-$(${JSON} services.CoAuthoring.sql.dbPass)}}
DB_TYPE=${DB_TYPE:-$(${JSON} services.CoAuthoring.sql.type)}
RABBITMQ_SERVER_URL=${RABBITMQ_SERVER_URL:-$(${JSON} rabbitmq.url)}
AMQP_URI=${AMQP_URI:-${AMQP_SERVER_URL:-${RABBITMQ_SERVER_URL}}}
@ -171,6 +221,15 @@ waiting_for_redis(){
waiting_for_datacontainer(){
waiting_for_connection ${ONLYOFFICE_DATA_CONTAINER_HOST} ${ONLYOFFICE_DATA_CONTAINER_PORT}
}
update_statsd_settings(){
${JSON} -I -e "if(this.statsd===undefined)this.statsd={};"
${JSON} -I -e "this.statsd.useMetrics = '${METRICS_ENABLED}'"
${JSON} -I -e "this.statsd.host = '${METRICS_HOST}'"
${JSON} -I -e "this.statsd.port = '${METRICS_PORT}'"
${JSON} -I -e "this.statsd.prefix = '${METRICS_PREFIX}'"
}
update_db_settings(){
${JSON} -I -e "this.services.CoAuthoring.sql.type = '${DB_TYPE}'"
${JSON} -I -e "this.services.CoAuthoring.sql.dbHost = '${DB_HOST}'"
@ -256,6 +315,11 @@ update_ds_settings(){
${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults===undefined)this.services.CoAuthoring.requestDefaults={}"
${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults.rejectUnauthorized===undefined)this.services.CoAuthoring.requestDefaults.rejectUnauthorized=false"
fi
if [ "${WOPI_ENABLED}" == "true" ]; then
${JSON} -I -e "if(this.wopi===undefined)this.wopi={}"
${JSON} -I -e "this.wopi.enable = true"
fi
}
create_postgresql_cluster(){
@ -270,9 +334,9 @@ create_postgresql_cluster(){
}
create_postgresql_db(){
sudo -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;"
sudo -u postgres psql -c "CREATE USER $DB_USER WITH password '"$DB_PWD"';"
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $DB_NAME TO $DB_USER;"
}
create_db_tbl() {
@ -286,21 +350,43 @@ create_db_tbl() {
esac
}
create_postgresql_tbl() {
CONNECTION_PARAMS="-h$DB_HOST -p$DB_PORT -U$DB_USER -w"
upgrade_db_tbl() {
case $DB_TYPE in
"postgres")
upgrade_postgresql_tbl
;;
"mariadb"|"mysql")
upgrade_mysql_tbl
;;
esac
}
upgrade_postgresql_tbl() {
if [ -n "$DB_PWD" ]; then
export PGPASSWORD=$DB_PWD
fi
PSQL="psql -q $CONNECTION_PARAMS"
CREATEDB="createdb $CONNECTION_PARAMS"
PSQL="psql -q -h$DB_HOST -p$DB_PORT -d$DB_NAME -U$DB_USER -w"
# Create db on remote server
if $PSQL -lt | cut -d\| -f 1 | grep -qw $DB_NAME | grep 0; then
$CREATEDB $DB_NAME
$PSQL -f "$APP_DIR/server/schema/postgresql/removetbl.sql"
$PSQL -f "$APP_DIR/server/schema/postgresql/createdb.sql"
}
upgrade_mysql_tbl() {
CONNECTION_PARAMS="-h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PWD -w"
MYSQL="mysql -q $CONNECTION_PARAMS"
$MYSQL $DB_NAME < "$APP_DIR/server/schema/mysql/removetbl.sql" >/dev/null 2>&1
$MYSQL $DB_NAME < "$APP_DIR/server/schema/mysql/createdb.sql" >/dev/null 2>&1
}
create_postgresql_tbl() {
if [ -n "$DB_PWD" ]; then
export PGPASSWORD=$DB_PWD
fi
$PSQL -d "$DB_NAME" -f "$APP_DIR/server/schema/postgresql/createdb.sql"
PSQL="psql -q -h$DB_HOST -p$DB_PORT -d$DB_NAME -U$DB_USER -w"
$PSQL -f "$APP_DIR/server/schema/postgresql/createdb.sql"
}
create_mysql_tbl() {
@ -390,8 +476,13 @@ update_logrotate_settings(){
sed 's|\(^su\b\).*|\1 root root|' -i /etc/logrotate.conf
}
update_release_date(){
mkdir -p ${PRIVATE_DATA_DIR}
echo ${RELEASE_DATE} > ${DS_RELEASE_DATE}
}
# create base folders
for i in converter docservice spellchecker metrics; do
for i in converter docservice metrics; do
mkdir -p "${DS_LOG_DIR}/$i"
done
@ -412,6 +503,10 @@ if [ ${ONLYOFFICE_DATA_CONTAINER_HOST} = "localhost" ]; then
read_setting
if [ $METRICS_ENABLED = "true" ]; then
update_statsd_settings
fi
update_welcome_page
update_log_settings
@ -451,14 +546,16 @@ if [ ${ONLYOFFICE_DATA_CONTAINER_HOST} = "localhost" ]; then
rm -rf /var/run/rabbitmq
fi
if [ ${REDIS_SERVER_HOST} != "localhost" ]; then
update_redis_settings
else
# change rights for redis directory
chown -R redis:redis ${REDIS_DATA}
chmod -R 750 ${REDIS_DATA}
if [ ${REDIS_ENABLED} = "true" ]; then
if [ ${REDIS_SERVER_HOST} != "localhost" ]; then
update_redis_settings
else
# change rights for redis directory
chown -R redis:redis ${REDIS_DATA}
chmod -R 750 ${REDIS_DATA}
LOCAL_SERVICES+=("redis-server")
LOCAL_SERVICES+=("redis-server")
fi
fi
else
# no need to update settings just wait for remote data
@ -484,7 +581,14 @@ fi
if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
waiting_for_db
waiting_for_amqp
waiting_for_redis
if [ ${REDIS_ENABLED} = "true" ]; then
waiting_for_redis
fi
if [ "${IS_UPGRADE}" = "true" ]; then
upgrade_db_tbl
update_release_date
fi
update_nginx_settings
@ -500,8 +604,17 @@ fi
# it run in all cases.
service nginx start
if [ "${LETS_ENCRYPT_DOMAIN}" != "" -a "${LETS_ENCRYPT_MAIL}" != "" ]; then
if [ ! -f "${SSL_CERTIFICATE_PATH}" -a ! -f "${SSL_KEY_PATH}" ]; then
documentserver-letsencrypt.sh ${LETS_ENCRYPT_MAIL} ${LETS_ENCRYPT_DOMAIN}
fi
fi
# Regenerate the fonts list and the fonts thumbnails
documentserver-generate-allfonts.sh ${ONLYOFFICE_DATA_CONTAINER}
if [ "${GENERATE_FONTS}" == "true" ]; then
documentserver-generate-allfonts.sh ${ONLYOFFICE_DATA_CONTAINER}
fi
documentserver-static-gzip.sh ${ONLYOFFICE_DATA_CONTAINER}
tail -f /var/log/${COMPANY_NAME}/**/*.log
tail -f /var/log/${COMPANY_NAME}/**/*.log &
wait $!

View File

@ -1,11 +1,12 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
environment:
- AMQP_TYPE
- AMQP_URI
- AMQP_TYPE=${AMQP_TYPE:-activemq}
- AMQP_URI=${AMQP_URI:-amqp://guest:guest@onlyoffice-activemq}
stdin_open: true
restart: always
ports:
@ -16,10 +17,10 @@ services:
onlyoffice-activemq:
container_name: onlyoffice-activemq
image: webcenter/activemq:5.14.3
image: webcenter/activemq:${ACTIVEMQ_VERSION:-5.14.3}
environment:
- ACTIVEMQ_USERS_guest
- ACTIVEMQ_GROUPS_owners
- ACTIVEMQ_USERS_guest=${ACTIVEMQ_USERS_guest:-guest}
- ACTIVEMQ_GROUPS_owners=${ACTIVEMQ_GROUPS_owners:-guest}
restart: always
networks:
- onlyoffice

View File

@ -0,0 +1,18 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
environment:
- SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-/var/www/onlyoffice/Data/certs/tls.crt}
- SSL_KEY_PATH=${SSL_KEY_PATH:-/var/www/onlyoffice/Data/certs/tls.key}
- CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-/var/www/onlyoffice/Data/certs/ca-certificates.pem}
- SSL_DHPARAM_PATH=${SSL_DHPARAM_PATH:-/var/www/onlyoffice/Data/certs/dhparam.pem}
stdin_open: true
restart: always
ports:
- '80:80'
- '443:443'
volumes:
- ./data:/var/www/onlyoffice/Data

13
tests/certs.yml Normal file
View File

@ -0,0 +1,13 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
stdin_open: true
restart: always
ports:
- '80:80'
- '443:443'
volumes:
- ./data:/var/www/onlyoffice/Data

View File

@ -1,41 +0,0 @@
# DocumentServer Container
ONLYOFFICE_DATA_CONTAINER=true
DB_TYPE=postgres
DB_HOST=onlyoffice-postgresql
DB_PORT=5432
DB_NAME=onlyoffice
DB_USER=onlyoffice
DB_PWD=onlyoffice
AMQP_TYPE=rabbitmq
AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
REDIS_SERVER_HOST=onlyoffice-redis
REDIS_SERVER_PORT=6379
JWT_ENABLED=true
JWT_SECRET=secret
JWT_HEADER=Authorization
ONLYOFFICE_DATA_CONTAINER_HOST=onlyoffice-documentserver-data
BALANCE=uri depth 3
EXCLUDE_PORTS=443
HTTP_CHECK=GET /healthcheck
EXTRA_SETTINGS=http-check expect string true
FORCE_SSL=true
# HAProxy Container
MODE=http
CERT_FOLDER=/certs/
# ActiveMQ Container
ACTIVEMQ_USERS_guest=guest
ACTIVEMQ_GROUPS_owners=guest
# Postgres Container
POSTGRES_DB=onlyoffice
POSTGRES_USER=onlyoffice
POSTGRES_HOST_AUTH_METHOD=trust
# MySQL Container
MYSQL_DATABASE=onlyoffice
MYSQL_USER=onlyoffice
MYSQL_PASSWORD=onlyoffice
MYSQL_ALLOW_EMPTY_PASSWORD=yes

32
tests/graphite.yml Normal file
View File

@ -0,0 +1,32 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
depends_on:
- onlyoffice-graphite
environment:
- METRICS_ENABLED=${METRICS_ENABLED:-true}
- METRICS_HOST=${METRICS_HOST:-localhost}
- METRICS_PORT=${METRICS_PORT:-8125}
- METRICS_PREFIX=${METRICS_PREFIX:-ds.}
stdin_open: true
restart: always
expose:
- '2003'
ports:
- '80:80'
volumes:
- ./graphite/statsd:/var/www/onlyoffice/documentserver/server/Metrics/config
onlyoffice-graphite:
container_name: onlyoffice-graphite
image: graphiteapp/graphite-statsd
environment:
- GRAPHITE_STATSD_HOST=${GRAPHITE_STATSD_HOST:-onlyoffice-documentserver}
- GRAPHITE_TIME_ZONE=${GRAPHITE_TIME_ZONE:-Etc/UTC}
ports:
- '8888:80'
stdin_open: true
restart: always

View File

@ -0,0 +1,7 @@
{
"graphiteHost": "onlyoffice-graphite",
"graphitePort": 2003,
"port": 8125,
"flushInterval": 60000,
"backends": [ "./backends/graphite.js" ]
}

View File

@ -1,30 +1,31 @@
version: '2'
version: '2.1'
services:
ds:
container_name: ds
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
depends_on:
- db
- onlyoffice-mariadb
environment:
- DB_TYPE
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USER
- DB_PWD
- DB_TYPE=${DB_TYPE:-mysql}
- DB_HOST=${DB_HOST:-onlyoffice-mariadb}
- DB_PORT=${DB_PORT:-3306}
- DB_NAME=${DB_NAME:-onlyoffice}
- DB_USER=${DB_USER:-onlyoffice}
- DB_PWD=${DB_PWD:-onlyoffice}
stdin_open: true
restart: always
ports:
- '80:80'
db:
container_name: db
image: mariadb:10.5
onlyoffice-mariadb:
container_name: onlyoffice-mariadb
image: mariadb:${MARIADB_VERSION:-10.5}
environment:
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_DATABASE=${MYSQL_DATABASE:-onlyoffice}
- MYSQL_USER=${MYSQL_USER:-onlyoffice}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-onlyoffice}
- MYSQL_ALLOW_EMPTY_PASSWORD=${MYSQL_ALLOW_EMPTY_PASSWORD:-yes}
restart: always
volumes:
- mysql_data:/var/lib/mysql

View File

@ -1,17 +1,18 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
depends_on:
- onlyoffice-mysql
environment:
- DB_TYPE
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USER
- DB_PWD
- DB_TYPE=${DB_TYPE:-mysql}
- DB_HOST=${DB_HOST:-onlyoffice-mysql}
- DB_PORT=${DB_PORT:-3306}
- DB_NAME=${DB_NAME:-onlyoffice}
- DB_USER=${DB_USER:-onlyoffice}
- DB_PWD=${DB_PWD:-onlyoffice}
stdin_open: true
restart: always
ports:
@ -19,12 +20,13 @@ services:
onlyoffice-mysql:
container_name: onlyoffice-mysql
image: mysql:5.7
image: mysql:${MYSQL_VERSION:-5.7}
command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_DATABASE=${MYSQL_DATABASE:-onlyoffice}
- MYSQL_USER=${MYSQL_USER:-onlyoffice}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-onlyoffice}
- MYSQL_ALLOW_EMPTY_PASSWORD=${MYSQL_ALLOW_EMPTY_PASSWORD:-yes}
restart: always
volumes:
- mysql_data:/var/lib/mysql

View File

@ -1,16 +1,17 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
depends_on:
- onlyoffice-postgresql
environment:
- POSTGRESQL_SERVER_HOST
- POSTGRESQL_SERVER_PORT
- POSTGRESQL_SERVER_DB_NAME
- POSTGRESQL_SERVER_USER
- POSTGRESQL_SERVER_PASS
- POSTGRESQL_SERVER_HOST=${DB_HOST:-onlyoffice-postgresql}
- POSTGRESQL_SERVER_PORT=${DB_PORT:-5432}
- POSTGRESQL_SERVER_DB_NAME=${DB_NAME:-onlyoffice}
- POSTGRESQL_SERVER_USER=${DB_USER:-onlyoffice}
- POSTGRESQL_SERVER_PASS=${DB_PWD:-onlyoffice}
stdin_open: true
restart: always
ports:
@ -20,9 +21,9 @@ services:
container_name: onlyoffice-postgresql
image: postgres:9.5
environment:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_HOST_AUTH_METHOD
- POSTGRES_DB=${POSTGRES_DB:-onlyoffice}
- POSTGRES_USER=${POSTGRES_USER:-onlyoffice}
- POSTGRES_HOST_AUTH_METHOD=${POSTGRES_HOST_AUTH_METHOD:-trust}
restart: always
expose:
- '5432'

View File

@ -1,17 +1,18 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
depends_on:
- onlyoffice-postgresql
environment:
- DB_TYPE
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USER
- DB_PWD
- DB_TYPE=${DB_TYPE:-postgres}
- DB_HOST=${DB_HOST:-onlyoffice-postgresql}
- DB_PORT=${DB_PORT:-5432}
- DB_NAME=${DB_NAME:-onlyoffice}
- DB_USER=${DB_USER:-onlyoffice}
- DB_PWD=${DB_PWD:-onlyoffice}
stdin_open: true
restart: always
ports:
@ -19,11 +20,11 @@ services:
onlyoffice-postgresql:
container_name: onlyoffice-postgresql
image: postgres:9.5
image: postgres:${POSTGRES_VERSION:-9.5}
environment:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_HOST_AUTH_METHOD
- POSTGRES_DB=${POSTGRES_DB:-onlyoffice}
- POSTGRES_USER=${POSTGRES_USER:-onlyoffice}
- POSTGRES_HOST_AUTH_METHOD=${POSTGRES_HOST_AUTH_METHOD:-trust}
restart: always
expose:
- '5432'

View File

@ -1,11 +1,12 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
environment:
- AMQP_SERVER_TYPE
- AMQP_SERVER_URL
- AMQP_SERVER_TYPE=${AMQP_SERVER_TYPE:-rabbitmq}
- AMQP_SERVER_URL=${AMQP_SERVER_URL:-amqp://guest:guest@onlyoffice-rabbitmq}
stdin_open: true
restart: always
ports:

View File

@ -1,11 +1,12 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
environment:
- AMQP_TYPE
- AMQP_URI
- AMQP_TYPE=${AMQP_TYPE:-rabbitmq}
- AMQP_URI=${AMQP_URI:-amqp://guest:guest@onlyoffice-rabbitmq}
stdin_open: true
restart: always
ports:
@ -16,7 +17,7 @@ services:
onlyoffice-rabbitmq:
container_name: onlyoffice-rabbitmq
image: rabbitmq
image: rabbitmq:${RABBITMQ_VERSION:-latest}
restart: always
networks:
- onlyoffice

View File

@ -1,11 +1,14 @@
version: '2'
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/4testing-documentserver-ie:latest
build:
context: ../.
args:
- PRODUCT_NAME=${PRODUCT_NAME:-documentserver}
environment:
- REDIS_SERVER_HOST
- REDIS_SERVER_PORT
- REDIS_SERVER_HOST=${REDIS_SERVER_HOST:-onlyoffice-redis}
- REDIS_SERVER_PORT=${REDIS_SERVER_PORT:-6379}
stdin_open: true
restart: always
ports:
@ -16,7 +19,7 @@ services:
onlyoffice-redis:
container_name: onlyoffice-redis
image: redis
image: redis:${REDIS_VERSION:-latest}
restart: always
networks:
- onlyoffice

12
tests/standalone.yml Normal file
View File

@ -0,0 +1,12 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
args:
- PRODUCT_NAME=${PRODUCT_NAME:-documentserver}
stdin_open: true
restart: always
ports:
- '80:80'

View File

@ -1,30 +1,47 @@
#!/bin/bash
ssl=${ssl:-false}
private_key=${private_key:-tls.key}
certificate_request=${certificate_request:-tls.csr}
certificate=${certificate:-tls.crt}
# Generate certificate
if [[ $ssl == "true" ]]; then
url=${url:-"https://localhost"}
mkdir -p data/certs
pushd data/certs
openssl genrsa -out ${private_key} 2048
openssl req \
-new \
-subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
-key ${private_key} \
-out ${certificate_request}
openssl x509 -req -days 365 -in ${certificate_request} -signkey ${private_key} -out ${certificate}
openssl dhparam -out dhparam.pem 2048
chmod 400 ${private_key}
popd
else
url=${url:-"http://localhost"}
fi
# Check if the yml exists
if [[ ! -f $config ]]; then
echo "File $config doesn't exist!"
exit 1
fi
env_file=defaults.env
# Copy .env
if [[ -f $env_file ]]; then
cp $env_file .env
else
echo "File $env_file doesn't exist!"
exit 1
fi
# Run test environment
docker-compose -p ds -f $config up -d
wakeup_timeout=30
wakeup_timeout=90
# Get documentserver healthcheck status
echo "Wait for service wake up"
sleep $wakeup_timeout
healthcheck_res=$(wget --no-check-certificate -qO - localhost/healthcheck)
healthcheck_res=$(wget --no-check-certificate -qO - ${url}/healthcheck)
# Fail if it isn't true
if [[ $healthcheck_res == "true" ]]; then