From f4ae743455ebd17f4e51e7d5d7e9773b4b6fe085 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Wed, 12 Feb 2025 11:22:49 +0000 Subject: [PATCH 01/12] Restrict the directories for log collection (#10) Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/Docker-DocumentServer/pulls/10 --- run-document-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index f751b3c..4a7b2fd 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -792,4 +792,4 @@ start_process documentserver-static-gzip.sh ${ONLYOFFICE_DATA_CONTAINER} echo "${JWT_MESSAGE}" -start_process tail -f /var/log/${COMPANY_NAME}/**/*.log +start_process find "$DS_LOG_DIR" "$DS_LOG_DIR-example" -type f -name "*.log" | xargs tail -f From ede8569ec26addb159cc30d4d27ef81a7c3d7f11 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Wed, 9 Apr 2025 18:35:56 +0300 Subject: [PATCH 02/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 298fe09..eef78e5 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ ## Overview -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. +ONLYOFFICE Document Server is an open-source office suite that comprises all the tools you need to work with documents, spreadsheets, presentations, PDFs, and PDF forms. The suite supports office files of all popular formats (DOCX, ODT, XLSX, ODS, CSV, PPTX, ODP, etc.) and enables 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. From 39b82a3c9a6e1ea6b487b8719101060454e124fd Mon Sep 17 00:00:00 2001 From: danilapog Date: Thu, 24 Apr 2025 14:17:08 +0300 Subject: [PATCH 03/12] build: add conditional tagging for latest in stable-build workflow - Introduced input in the GitHub Actions workflow with a default value of . - Passed the input as an environment variable () to the workflow. - Updated to conditionally add the Docker tag based on value. --- .github/workflows/stable-build.yml | 6 ++++++ docker-bake.hcl | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml index 01e80f7..b89b847 100644 --- a/.github/workflows/stable-build.yml +++ b/.github/workflows/stable-build.yml @@ -14,12 +14,18 @@ on: type: string required: true default: '1' + latest: + description: 'Push latest tag?' + type: boolean + required: true + default: true env: COMPANY_NAME: "onlyoffice" PRODUCT_NAME: "documentserver" VERSION: ${{ github.event.inputs.tag }} RELEASE_NUMBER: ${{ github.event.inputs.release_number }} + LATEST: ${{ github.event.inputs.latest }} jobs: build: diff --git a/docker-bake.hcl b/docker-bake.hcl index 7db339c..9eab0de 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -110,7 +110,7 @@ target "documentserver-stable" { tags = ["docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}", "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTER_TAG}", "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTEST_TAG}", - "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest", + equal("true",LATEST) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "", equal("-ee",PRODUCT_EDITION) ? "docker.io/${COMPANY_NAME}4enterprise/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}": "",] platforms = ["linux/amd64", "linux/arm64"] args = { From 019d1b881f9cd8cfea3ae7b786bc172fa58afdbe Mon Sep 17 00:00:00 2001 From: Vladimir Ischenko Date: Tue, 13 May 2025 16:23:12 +0300 Subject: [PATCH 04/12] Fix bug 73600 - Add DB name to MSSQL connection --- run-document-server.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run-document-server.sh b/run-document-server.sh index 4a7b2fd..4d053f0 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -510,7 +510,7 @@ upgrade_mysql_tbl() { } upgrade_mssql_tbl() { - CONN_PARAMS="-U $DB_USER -P "$DB_PWD" -C" + CONN_PARAMS="-d $DB_NAME -U $DB_USER -P "$DB_PWD" -C" MSSQL="/opt/mssql-tools18/bin/sqlcmd -S $DB_HOST,$DB_PORT $CONN_PARAMS" $MSSQL < "$APP_DIR/server/schema/mssql/removetbl.sql" >/dev/null 2>&1 @@ -547,7 +547,7 @@ create_mysql_tbl() { create_mssql_tbl() { create_mssql_db - CONN_PARAMS="-U $DB_USER -P "$DB_PWD" -C" + CONN_PARAMS="-d $DB_NAME -U $DB_USER -P "$DB_PWD" -C" MSSQL="/opt/mssql-tools18/bin/sqlcmd -S $DB_HOST,$DB_PORT $CONN_PARAMS" $MSSQL < "$APP_DIR/server/schema/mssql/createdb.sql" >/dev/null 2>&1 From 11f153dd60a27f6c8cf219101a18fb2d0faf33c3 Mon Sep 17 00:00:00 2001 From: Vladimir Ischenko Date: Thu, 15 May 2025 09:23:04 +0000 Subject: [PATCH 05/12] =?UTF-8?q?Fix=20bug=2073689=20=E2=80=93=20Replace?= =?UTF-8?q?=20hardcoded=20PDB=20and=20add=20libaio=20symlink=20(#23)=20Co-?= =?UTF-8?q?authored-by:=20Vladimir=20Ischenko=20=20Co-committed-by:=20Vladimir=20Ischenko=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 1 + run-document-server.sh | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 63f140c..cec0dd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -88,6 +88,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ unzip -d /usr/share basic.zip && \ unzip -d /usr/share sqlplus.zip && \ mv /usr/share/instantclient_${OC_VER_DIR} /usr/share/instantclient && \ + ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 && \ service postgresql stop && \ service redis-server stop && \ service rabbitmq-server stop && \ diff --git a/run-document-server.sh b/run-document-server.sh index 4d053f0..9d34c6c 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -274,8 +274,7 @@ waiting_for_connection(){ waiting_for_db_ready(){ case $DB_TYPE in "oracle") - PDB="XEPDB1" - ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/$PDB" + ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/${DB_NAME}" DB_TEST="echo \"SELECT version FROM V\$INSTANCE;\" | $ORACLE_SQL 2>/dev/null | grep \"Connected\" | wc -l" ;; *) @@ -518,8 +517,7 @@ upgrade_mssql_tbl() { } upgrade_oracle_tbl() { - PDB="XEPDB1" - ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/$PDB" + ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/${DB_NAME}" $ORACLE_SQL @$APP_DIR/server/schema/oracle/removetbl.sql >/dev/null 2>&1 $ORACLE_SQL @$APP_DIR/server/schema/oracle/createdb.sql >/dev/null 2>&1 @@ -554,8 +552,7 @@ create_mssql_tbl() { } create_oracle_tbl() { - PDB="XEPDB1" - ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/$PDB" + ORACLE_SQL="sqlplus $DB_USER/$DB_PWD@//$DB_HOST:$DB_PORT/${DB_NAME}" $ORACLE_SQL @$APP_DIR/server/schema/oracle/createdb.sql >/dev/null 2>&1 } From 1bdda91da345244423ef3428b65a1c83aa010a63 Mon Sep 17 00:00:00 2001 From: Vladimir Ischenko Date: Thu, 15 May 2025 18:37:07 +0300 Subject: [PATCH 06/12] Fix multi-arch libaio symlink --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cec0dd0..b093d16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -88,7 +88,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ unzip -d /usr/share basic.zip && \ unzip -d /usr/share sqlplus.zip && \ mv /usr/share/instantclient_${OC_VER_DIR} /usr/share/instantclient && \ - ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 && \ + find /usr/lib /lib -name "libaio.so.1$PACKAGE_SUFFIX" -exec bash -c 'ln -sf "$0" "$(dirname "$0")/libaio.so.1"' {} \; && \ service postgresql stop && \ service redis-server stop && \ service rabbitmq-server stop && \ From a085cb962b3f4f30a0f85ffe363958ee1bfb741a Mon Sep 17 00:00:00 2001 From: Vladimir Ischenko Date: Mon, 19 May 2025 09:39:58 +0300 Subject: [PATCH 07/12] Fix Oracle Instant Client installation --- Dockerfile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index b093d16..6e9a8d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,13 +9,13 @@ ARG BASE_VERSION ARG PG_VERSION=16 ARG PACKAGE_SUFFIX=t64 -ENV OC_RELEASE_NUM=21 -ENV OC_RU_VER=12 +ENV OC_RELEASE_NUM=23 +ENV OC_RU_VER=7 ENV OC_RU_REVISION_VER=0 -ENV OC_RESERVED_NUM=0 -ENV OC_RU_DATE=0 -ENV OC_PATH=${OC_RELEASE_NUM}${OC_RU_VER}000 -ENV OC_FILE_SUFFIX=${OC_RELEASE_NUM}.${OC_RU_VER}.${OC_RU_REVISION_VER}.${OC_RESERVED_NUM}.${OC_RU_DATE}${OC_FILE_SUFFIX}dbru +ENV OC_RESERVED_NUM=25 +ENV OC_RU_DATE=01 +ENV OC_PATH=${OC_RELEASE_NUM}${OC_RU_VER}0000 +ENV OC_FILE_SUFFIX=${OC_RELEASE_NUM}.${OC_RU_VER}.${OC_RU_REVISION_VER}.${OC_RESERVED_NUM}.${OC_RU_DATE} ENV OC_VER_DIR=${OC_RELEASE_NUM}_${OC_RU_VER} ENV OC_DOWNLOAD_URL=https://download.oracle.com/otn_software/linux/instantclient/${OC_PATH} @@ -83,10 +83,10 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ service postgresql restart && \ sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \ sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \ - wget -O basic.zip ${OC_DOWNLOAD_URL}/instantclient-basic-linux.x64-${OC_FILE_SUFFIX}.zip && \ - wget -O sqlplus.zip ${OC_DOWNLOAD_URL}/instantclient-sqlplus-linux.x64-${OC_FILE_SUFFIX}.zip && \ - unzip -d /usr/share basic.zip && \ - unzip -d /usr/share sqlplus.zip && \ + wget -O basic.zip ${OC_DOWNLOAD_URL}/instantclient-basic-linux.$(dpkg --print-architecture | sed 's/amd64/x64/')-${OC_FILE_SUFFIX}.zip && \ + wget -O sqlplus.zip ${OC_DOWNLOAD_URL}/instantclient-sqlplus-linux.$(dpkg --print-architecture | sed 's/amd64/x64/')-${OC_FILE_SUFFIX}.zip && \ + unzip -o basic.zip -d /usr/share && \ + unzip -o sqlplus.zip -d /usr/share && \ mv /usr/share/instantclient_${OC_VER_DIR} /usr/share/instantclient && \ find /usr/lib /lib -name "libaio.so.1$PACKAGE_SUFFIX" -exec bash -c 'ln -sf "$0" "$(dirname "$0")/libaio.so.1"' {} \; && \ service postgresql stop && \ From 68760883fe1e40b5c3f9aece4a2a5e7b61db4a2d Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Tue, 10 Jun 2025 14:48:14 +0000 Subject: [PATCH 08/12] Fix certificates retrieval in directory (#26) --- run-document-server.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/run-document-server.sh b/run-document-server.sh index 9d34c6c..e45de56 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -51,10 +51,10 @@ if [ "${RELEASE_DATE}" != "${PREV_RELEASE_DATE}" ]; then fi fi -SSL_CERTIFICATES_DIR="/usr/share/ca-certificates/ds" -mkdir -p ${SSL_CERTIFICATES_DIR} -if find "${DATA_DIR}/certs" -type f \( -name "*.crt" -o -name "*.pem" \) -print -quit >/dev/null 2>&1; then - cp -f ${DATA_DIR}/certs/* ${SSL_CERTIFICATES_DIR} +SSL_CERTIFICATES_DIR="/usr/share/ca-certificates/ds"; mkdir -p ${SSL_CERTIFICATES_DIR} +CERTIFICATE_FILES=( ${DATA_DIR}/certs/*.{crt,pem,key} ) +if [ ${#CERTIFICATE_FILES[@]} -gt 0 ]; then + cp -f "${CERTIFICATE_FILES[@]}" "${SSL_CERTIFICATES_DIR}/" chmod 644 ${SSL_CERTIFICATES_DIR}/*.{crt,pem} 2>/dev/null chmod 400 ${SSL_CERTIFICATES_DIR}/*.key 2>/dev/null fi From bd275e827634c1b3c4e112ced0197579ec3804b1 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Tue, 10 Jun 2025 14:48:57 +0000 Subject: [PATCH 09/12] Streamline docker-compose by pinning RabbitMQ & PostgreSQL and adding healthchecks (#28) --- docker-compose.yml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index af3c028..276f8cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ services: onlyoffice-documentserver: build: context: . + image: onlyoffice/documentserver #[-de,-ee] container_name: onlyoffice-documentserver depends_on: - onlyoffice-postgresql @@ -21,6 +22,12 @@ services: ports: - '80:80' - '443:443' + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/info/info.json"] + interval: 30s + retries: 5 + start_period: 60s + timeout: 10s stdin_open: true restart: always stop_grace_period: 60s @@ -33,14 +40,20 @@ services: onlyoffice-rabbitmq: container_name: onlyoffice-rabbitmq - image: rabbitmq + image: rabbitmq:3 restart: always expose: - '5672' + healthcheck: + test: ["CMD", "rabbitmq-diagnostics", "status"] + interval: 10s + retries: 3 + start_period: 10s + timeout: 10s onlyoffice-postgresql: container_name: onlyoffice-postgresql - image: postgres:12 + image: postgres:15 environment: - POSTGRES_DB=onlyoffice - POSTGRES_USER=onlyoffice @@ -50,6 +63,12 @@ services: - '5432' volumes: - postgresql_data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U onlyoffice"] + interval: 10s + retries: 3 + start_period: 10s + timeout: 10s volumes: postgresql_data: From 0fad4d043f48a3d7c899a0d74330d40782678d3f Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Tue, 10 Jun 2025 14:49:12 +0000 Subject: [PATCH 10/12] Set correct ownership for data directories (#29) --- run-document-server.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/run-document-server.sh b/run-document-server.sh index e45de56..bd90c3c 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -652,6 +652,7 @@ for i in ${DS_LIB_DIR}/App_Data/cache/files ${DS_LIB_DIR}/App_Data/docbuilder ${ done # change folder rights +chown ds:ds "${DATA_DIR}" for i in ${DS_LOG_DIR} ${DS_LOG_DIR}-example ${LIB_DIR}; do chown -R ds:ds "$i" chmod -R 755 "$i" From 1d7b5cc6a6ae335c8852f8027b084f8844182f2e Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Wed, 11 Jun 2025 16:42:17 +0300 Subject: [PATCH 11/12] Fix the issue with the certificate files --- run-document-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index bd90c3c..088e4c4 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -52,7 +52,7 @@ if [ "${RELEASE_DATE}" != "${PREV_RELEASE_DATE}" ]; then fi SSL_CERTIFICATES_DIR="/usr/share/ca-certificates/ds"; mkdir -p ${SSL_CERTIFICATES_DIR} -CERTIFICATE_FILES=( ${DATA_DIR}/certs/*.{crt,pem,key} ) +shopt -s nullglob extglob; CERTIFICATE_FILES=( ${DATA_DIR}/certs/*.{crt,pem} ); shopt -u nullglob extglob if [ ${#CERTIFICATE_FILES[@]} -gt 0 ]; then cp -f "${CERTIFICATE_FILES[@]}" "${SSL_CERTIFICATES_DIR}/" chmod 644 ${SSL_CERTIFICATES_DIR}/*.{crt,pem} 2>/dev/null From 2480f24dfde99902925ef8555c7371884dc6ef62 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Sun, 15 Jun 2025 16:22:35 +0300 Subject: [PATCH 12/12] Fix the issue with the certificate files --- run-document-server.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/run-document-server.sh b/run-document-server.sh index 088e4c4..d338512 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -52,11 +52,10 @@ if [ "${RELEASE_DATE}" != "${PREV_RELEASE_DATE}" ]; then fi SSL_CERTIFICATES_DIR="/usr/share/ca-certificates/ds"; mkdir -p ${SSL_CERTIFICATES_DIR} -shopt -s nullglob extglob; CERTIFICATE_FILES=( ${DATA_DIR}/certs/*.{crt,pem} ); shopt -u nullglob extglob -if [ ${#CERTIFICATE_FILES[@]} -gt 0 ]; then - cp -f "${CERTIFICATE_FILES[@]}" "${SSL_CERTIFICATES_DIR}/" - chmod 644 ${SSL_CERTIFICATES_DIR}/*.{crt,pem} 2>/dev/null - chmod 400 ${SSL_CERTIFICATES_DIR}/*.key 2>/dev/null +find "${DATA_DIR}/certs" -type f \( -iname '*.crt' -o -iname '*.pem' -o -iname '*.key' \) -exec cp -f {} "${SSL_CERTIFICATES_DIR}"/ \; +if find "${SSL_CERTIFICATES_DIR}" -maxdepth 1 -type f | read _; then + find "${SSL_CERTIFICATES_DIR}" -type f \( -iname '*.crt' -o -iname '*.pem' \) -exec chmod 644 {} \; + find "${SSL_CERTIFICATES_DIR}" -type f -iname '*.key' -exec chmod 400 {} \; fi if [[ -z $SSL_CERTIFICATE_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/${COMPANY_NAME}.crt ]]; then