mirror of
https://github.com/ONLYOFFICE/Docker-DocumentServer.git
synced 2026-04-07 14:01:38 +08:00
Compare commits
40 Commits
v9.1.0.154
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 92988383f0 | |||
| 913a27878c | |||
| da786307b0 | |||
| 1229d0ff3f | |||
| 58051c573f | |||
| c4bc28ee5d | |||
| 475a957b34 | |||
| c344bc46c8 | |||
| b531e96c10 | |||
| f63607aecc | |||
| 0bf51cae5e | |||
| 425241b1a5 | |||
| 5580c8cb26 | |||
| fbc253d293 | |||
| 578deab49a | |||
| 849cb4ee70 | |||
| 058d512af2 | |||
| 9ee11e40c0 | |||
| 0362706b26 | |||
| 3056ddb7b6 | |||
| d17d150827 | |||
| 7bb59095a5 | |||
| ce58202562 | |||
| d3d6bcf8b4 | |||
| c1c4f9793a | |||
| ec12b6a021 | |||
| feadbdf42b | |||
| b13570f221 | |||
| 32b11818cc | |||
| d20143734d | |||
| 0da835b7ae | |||
| 818573b9ba | |||
| 92936a7971 | |||
| ba4961c28f | |||
| 5279cd3ea4 | |||
| a26d08992a | |||
| 5da9390fe6 | |||
| fc99345e11 | |||
| f6cf4c37c1 | |||
| 00aee48855 |
13
.github/ISSUE_TEMPLATE.md
vendored
13
.github/ISSUE_TEMPLATE.md
vendored
@ -1,13 +0,0 @@
|
||||
**Do you want to request a *feature* or report a *bug*?**
|
||||
|
||||
**What is the current behavior?**
|
||||
|
||||
**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem.**
|
||||
|
||||
**What is the expected behavior?**
|
||||
|
||||
**Did this work in previous versions of DocumentServer?**
|
||||
|
||||
**DocumentServer Docker tag:**
|
||||
|
||||
**Host Operating System:**
|
||||
83
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
83
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
name: "Bug report"
|
||||
description: "Use this template if you're running into issues with DocumentServer Docker container."
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: unique
|
||||
attributes:
|
||||
label: "This issue is unique."
|
||||
options:
|
||||
- label: "I have used the [search tool](https://github.com/ONLYOFFICE/Docker-DocumentServer/issues?q=) and did not find an issue describing my bug."
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: "Select the operating system where Docker is running."
|
||||
multiple: true
|
||||
options:
|
||||
- Windows
|
||||
- macOS
|
||||
- Linux
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: architecture
|
||||
attributes:
|
||||
label: Architecture
|
||||
description: "Select the architecture of the system."
|
||||
options:
|
||||
- x86_64
|
||||
- arm64
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: docker-version
|
||||
attributes:
|
||||
label: "Docker version"
|
||||
description: "Provide your Docker version (run `docker --version`)."
|
||||
placeholder: "Example: Docker version 24.0.5"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: docs-version
|
||||
attributes:
|
||||
label: "ONLYOFFICE-Docs version"
|
||||
description: "Please provide the exact version or Docker tag you are using."
|
||||
placeholder: "Example: 8.0.1 or latest"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro-steps
|
||||
attributes:
|
||||
label: "Reproduction Steps"
|
||||
description: "Provide information on how to reproduce this bug. Make sure your instructions are clear."
|
||||
placeholder: |
|
||||
Example:
|
||||
1. Pull the latest DocumentServer image
|
||||
2. Start container with docker-compose
|
||||
3. Access http://localhost
|
||||
4. Observe the issue
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: "Expected Behavior"
|
||||
description: "What did you expect to happen?"
|
||||
placeholder: "Example: The container should start successfully and be accessible on port 80."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: "Actual Behavior"
|
||||
description: "What did actually happen?"
|
||||
placeholder: "Example: The container starts but DocumentServer returns 502 Bad Gateway error."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: "Additional information"
|
||||
description: "If you have any screenshots, error messages, logs, or other information that you feel is necessary to explain the issue, feel free to attach them here."
|
||||
placeholder: "Example: Container logs, error messages, configuration details, etc."
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: DocumentServer Docker Documentation
|
||||
url: https://helpcenter.onlyoffice.com/docs/installation/developer/docker
|
||||
about: Check the Docker documentation for configuration and deployment guides.
|
||||
- name: Community Forum
|
||||
url: https://community.onlyoffice.com/
|
||||
about: Ask questions and get help from the ONLYOFFICE community.
|
||||
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
name: "Feature request"
|
||||
description: "Use this form to suggest a feature."
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: "This issue is unique."
|
||||
options:
|
||||
- label: "I have used the [search tool](https://github.com/ONLYOFFICE/Docker-DocumentServer/issues?q=) and did not find an issue describing my idea."
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Your idea.
|
||||
validations:
|
||||
required: true
|
||||
165
.github/workflows/4testing-build.yml
vendored
165
.github/workflows/4testing-build.yml
vendored
@ -77,41 +77,61 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
echo "editions=$(jq -n -c --arg s "${EDITIONS[*]}" '($s|split(" "))')" >> $GITHUB_OUTPUT
|
||||
echo "platforms=$(jq -c -n '$ARGS.positional' --args "${PLATFORMS[@]}")" >> $GITHUB_OUTPUT
|
||||
outputs:
|
||||
editions: ${{ steps.matrix.outputs.editions }}
|
||||
platforms: ${{ steps.matrix.outputs.platforms }}
|
||||
|
||||
build:
|
||||
name: "Build ${{ matrix.image }}-${{ matrix.edition }}"
|
||||
runs-on: ubuntu-latest
|
||||
name: "Build ${{ matrix.image }}-${{ matrix.edition }}:${{ matrix.platform }}"
|
||||
runs-on: ${{ matrix.runner }}
|
||||
needs: prepare
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
image: ["documentserver"]
|
||||
edition: ${{ fromJSON(needs.prepare.outputs.editions) }}
|
||||
platform: ${{ fromJSON(needs.prepare.outputs.platforms) }}
|
||||
include:
|
||||
- platform: amd64
|
||||
runner: ubuntu-latest
|
||||
- platform: arm64
|
||||
runner: ubuntu-24.04-arm
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
|
||||
- name: Prepare fonts cache
|
||||
id: fonts
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: fonts
|
||||
key: fonts-${{ runner.os }}-v1
|
||||
|
||||
- name: Install fonts if not cached
|
||||
if: steps.fonts.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | sudo debconf-set-selections
|
||||
sudo apt-get install -y ttf-mscorefonts-installer
|
||||
mkdir -p fonts/msttcorefonts
|
||||
cp -a /usr/share/fonts/truetype/msttcorefonts/* fonts/msttcorefonts/
|
||||
|
||||
- name: Build 4testing
|
||||
id: build-ds
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.ref_name }}
|
||||
AMD64: ${{ github.event.inputs.amd64 }}
|
||||
ARM64: ${{ github.event.inputs.arm64 }}
|
||||
PLATFORM: linux/${{ matrix.platform }}
|
||||
BUILD_NUMBER: ${{ github.event.inputs.build }}
|
||||
EDITION: ${{ matrix.edition }}
|
||||
IMAGE: ${{ matrix.image }}
|
||||
@ -133,10 +153,6 @@ jobs:
|
||||
;;
|
||||
esac
|
||||
|
||||
[ "${AMD64}" = true ] && PLATFORMS+=("amd64")
|
||||
[ "${ARM64}" = true ] && PLATFORMS+=("arm64")
|
||||
PLATFORM=$(echo ${PLATFORMS[*]/#/linux/} | tr ' ' ',')
|
||||
|
||||
if [ "$BRANCH_NAME" = develop ]; then
|
||||
BUILD_CHANNEL=nightly
|
||||
PRODUCT_VERSION=99.99.99
|
||||
@ -148,10 +164,9 @@ jobs:
|
||||
export PRODUCT_EDITION
|
||||
export PACKAGE_VERSION=${PRODUCT_VERSION}-${BUILD_NUMBER}
|
||||
export BUILD_CHANNEL
|
||||
export PLATFORM
|
||||
export DOCKERFILE=Dockerfile
|
||||
export PREFIX_NAME=4testing-
|
||||
export TAG=${PRODUCT_VERSION}.${BUILD_NUMBER}
|
||||
export TAG=${PRODUCT_VERSION}.${BUILD_NUMBER}-${{ matrix.platform }}
|
||||
|
||||
### ==>> Build and push images at this step ###
|
||||
|
||||
@ -170,6 +185,7 @@ jobs:
|
||||
- name: Trigger zap manualy
|
||||
if: >-
|
||||
matrix.edition == 'community' &&
|
||||
matrix.platform == 'amd64' &&
|
||||
(startsWith(steps.build-ds.outputs.branch, 'release/') ||
|
||||
startsWith(steps.build-ds.outputs.branch, 'hotfix/'))
|
||||
env:
|
||||
@ -184,3 +200,120 @@ jobs:
|
||||
-f version="${VERSION}"
|
||||
shell: bash
|
||||
|
||||
- name: Save build result to file
|
||||
if: always()
|
||||
run: |
|
||||
mkdir -p build-result
|
||||
|
||||
cat > build-result/info.json <<EOF
|
||||
{
|
||||
"status": "${{ job.status }}"
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Upload build result artifact
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build-result-${{ matrix.edition }}-${{ matrix.platform }}
|
||||
path: build-result
|
||||
|
||||
make-images:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [prepare,build]
|
||||
if: always()
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
image: ["documentserver"]
|
||||
edition: ${{ fromJSON(needs.prepare.outputs.editions) }}
|
||||
steps:
|
||||
- name: Download all build results
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: build-results
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
|
||||
- name: "Make images documentserver"
|
||||
env:
|
||||
EDITION: ${{ matrix.edition }}
|
||||
BUILD_NUMBER: ${{ github.event.inputs.build }}
|
||||
BRANCH_NAME: ${{ github.ref_name }}
|
||||
run: |
|
||||
case "${EDITION}" in
|
||||
community)
|
||||
PRODUCT_EDITION=""
|
||||
;;
|
||||
enterprise)
|
||||
PRODUCT_EDITION="-ee"
|
||||
;;
|
||||
developer)
|
||||
PRODUCT_EDITION="-de"
|
||||
;;
|
||||
esac
|
||||
|
||||
AMD64_STATUS=$(cat ./build-results/build-result-${{ matrix.edition }}-amd64/info.json | jq -r .status)
|
||||
ARM64_STATUS=$(cat ./build-results/build-result-${{ matrix.edition }}-arm64/info.json | jq -r .status)
|
||||
|
||||
echo "ARM64 status: ${ARM64_STATUS}"
|
||||
echo "AMD64 status: ${AMD64_STATUS}"
|
||||
|
||||
if [ "$BRANCH_NAME" = develop ]; then
|
||||
BUILD_CHANNEL=nightly
|
||||
PRODUCT_VERSION=99.99.99
|
||||
elif [[ "$BRANCH_NAME" =~ hotfix || "$BRANCH_NAME" =~ release ]]; then
|
||||
BUILD_CHANNEL=test
|
||||
PRODUCT_VERSION=${BRANCH_NAME#*/v}
|
||||
fi
|
||||
|
||||
export TAG=${PRODUCT_VERSION}.${BUILD_NUMBER}
|
||||
|
||||
FROM_TAGS=()
|
||||
PUSH_TAGS=()
|
||||
|
||||
check_image() {
|
||||
local img="$1"
|
||||
local timeout=120
|
||||
local interval=20
|
||||
local elapsed=0
|
||||
|
||||
echo "Checking for image: $img"
|
||||
|
||||
while (( elapsed < timeout )); do
|
||||
if docker manifest inspect "$img" > /dev/null 2>&1; then
|
||||
echo "Found image: $img"
|
||||
FROM_TAGS+=( "$img" )
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Image not found yet, retrying in ${interval}s..."
|
||||
sleep $interval
|
||||
elapsed=$(( elapsed + interval ))
|
||||
done
|
||||
|
||||
echo "ERROR: Image not found after ${timeout}s: $img"
|
||||
return 1
|
||||
}
|
||||
|
||||
if [[ "${AMD64_STATUS}" == "success" ]]; then
|
||||
check_image "${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}-amd64"
|
||||
fi
|
||||
|
||||
if [[ "${ARM64_STATUS}" == "success" ]]; then
|
||||
check_image "${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}-arm64"
|
||||
fi
|
||||
|
||||
PUSH_TAGS=(
|
||||
-t "${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}"
|
||||
)
|
||||
|
||||
if [[ "${BUILD_CHANNEL}" == "nightly" ]]; then
|
||||
PUSH_TAGS+=( -t "${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION}:latest" )
|
||||
fi
|
||||
|
||||
docker buildx imagetools create "${PUSH_TAGS[@]}" "${FROM_TAGS[@]}"
|
||||
|
||||
67
.github/workflows/stable-build.yml
vendored
67
.github/workflows/stable-build.yml
vendored
@ -38,16 +38,16 @@ jobs:
|
||||
edition: ["", "-ee", "-de"]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
@ -69,12 +69,42 @@ jobs:
|
||||
exit 0
|
||||
shell: bash
|
||||
|
||||
- name: Update Docker Hub README
|
||||
uses: peter-evans/dockerhub-description@v4
|
||||
# Disable for now
|
||||
# Related with issue:
|
||||
# https://github.com/peter-evans/dockerhub-description/issues/294
|
||||
#
|
||||
#- name: Update Docker Hub README
|
||||
# uses: peter-evans/dockerhub-description@v4
|
||||
# with:
|
||||
# username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
# password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
# repository: ${{ env.COMPANY_NAME }}/${{ env.PRODUCT_NAME }}${{ matrix.edition }}
|
||||
|
||||
release_4enterprise:
|
||||
name: "Release image: onlyoffice4enterprise"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
repository: ${{ env.COMPANY_NAME }}/${{ env.PRODUCT_NAME }}${{ matrix.edition }}
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME_ENTERPRISE }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN_ENTERPRISE }}
|
||||
|
||||
- name: release 4enterpise
|
||||
shell: bash
|
||||
run: |
|
||||
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
|
||||
docker buildx imagetools create --tag onlyoffice4enterprise/documentserver-ee:${TAG} \
|
||||
onlyoffice/4testing-documentserver-ee:${VERSION}
|
||||
|
||||
build-nonexample:
|
||||
name: "Release image: DocumentServer${{ matrix.edition }}-nonExample"
|
||||
@ -88,16 +118,16 @@ jobs:
|
||||
edition: ["", "-ee", "-de"]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
@ -120,18 +150,16 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
edition: ["", "-ee"]
|
||||
platform: ["amd64"]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
@ -140,6 +168,7 @@ jobs:
|
||||
env:
|
||||
PACKAGE_BASEURL: ${{ secrets.REPO_BASEURL }}
|
||||
PRODUCT_EDITION: ${{ matrix.edition }}
|
||||
PLATFORM: linux/${{ matrix.platform }}
|
||||
run: |
|
||||
set -eux
|
||||
export DOCKERFILE=Dockerfile
|
||||
|
||||
2
.github/workflows/zap-ds.yaml
vendored
2
.github/workflows/zap-ds.yaml
vendored
@ -67,4 +67,4 @@ jobs:
|
||||
docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
|
||||
target: 'https://${{ steps.run-ds.outputs.local-ip }}/'
|
||||
allow_issue_writing: false
|
||||
cmd_options: '-j'
|
||||
#cmd_options: '-j'
|
||||
|
||||
@ -3,7 +3,7 @@ ARG BASE_VERSION=24.04
|
||||
ARG BASE_IMAGE=ubuntu:$BASE_VERSION
|
||||
|
||||
FROM ${BASE_IMAGE} AS documentserver
|
||||
LABEL maintainer Ascensio System SIA <support@onlyoffice.com>
|
||||
LABEL maintainer="Ascensio System SIA <support@onlyoffice.com>"
|
||||
|
||||
ARG BASE_VERSION
|
||||
ARG PG_VERSION=16
|
||||
@ -22,6 +22,7 @@ ENV OC_DOWNLOAD_URL=https://download.oracle.com/otn_software/linux/instantclient
|
||||
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=${PG_VERSION} BASE_VERSION=${BASE_VERSION}
|
||||
|
||||
ARG ONLYOFFICE_VALUE=onlyoffice
|
||||
COPY fonts/ /usr/share/fonts/truetype/
|
||||
|
||||
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
|
||||
apt-get -y update && \
|
||||
@ -74,7 +75,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
|
||||
xxd \
|
||||
zlib1g || dpkg --configure -a && \
|
||||
# Added dpkg --configure -a to handle installation issues with rabbitmq-server on arm64 architecture
|
||||
if [ $(ls -l /usr/share/fonts/truetype/msttcorefonts | wc -l) -ne 61 ]; \
|
||||
if [ $(find /usr/share/fonts/truetype/msttcorefonts -maxdepth 1 -type f -iname '*.ttf' | wc -l) -lt 30 ]; \
|
||||
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 && \
|
||||
@ -121,6 +122,9 @@ RUN PACKAGE_FILE="${COMPANY_NAME}-${PRODUCT_NAME}${PRODUCT_EDITION}${PACKAGE_VER
|
||||
apt-get -y update && \
|
||||
service postgresql start && \
|
||||
apt-get -yq install /tmp/$PACKAGE_FILE && \
|
||||
if [ "${PRODUCT_EDITION}" != "-ee" ] && [ "${PRODUCT_EDITION}" != "-de" ]; then rm -f /etc/supervisor/conf.d/ds-adminpanel.conf && sed -i 's/,adminpanel//' /etc/supervisor/conf.d/ds.conf; fi && \
|
||||
PGPASSWORD=$ONLYOFFICE_VALUE dropdb -h localhost -p 5432 -U $ONLYOFFICE_VALUE $ONLYOFFICE_VALUE && \
|
||||
sudo -u postgres psql -c "DROP ROLE onlyoffice;" && \
|
||||
service postgresql stop && \
|
||||
chmod 755 /etc/init.d/supervisor && \
|
||||
sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i /etc/supervisor/conf.d/*.conf && \
|
||||
|
||||
36
README.md
36
README.md
@ -6,11 +6,13 @@
|
||||
- [Storing Data](#storing-data)
|
||||
- [Running ONLYOFFICE Document Server on Different Port](#running-onlyoffice-document-server-on-different-port)
|
||||
- [Running ONLYOFFICE Document Server using HTTPS](#running-onlyoffice-document-server-using-https)
|
||||
+ [Using the automatically generated Let's Encrypt SSL Certificates](#using-the-automatically-generated-lets-encrypt-ssl-certificates)
|
||||
+ [Generation of Self Signed Certificates](#generation-of-self-signed-certificates)
|
||||
+ [Strengthening the Server Security](#strengthening-the-server-security)
|
||||
+ [Installation of the SSL Certificates](#installation-of-the-ssl-certificates)
|
||||
+ [Available Configuration Parameters](#available-configuration-parameters)
|
||||
* [Installing ONLYOFFICE Document Server integrated with Community and Mail Servers](#installing-onlyoffice-document-server-integrated-with-community-and-mail-servers)
|
||||
* [Installing ONLYOFFICE Document Server using Docker Compose](#installing-onlyoffice-document-server-using-docker-compose)
|
||||
* [Installing ONLYOFFICE Document Server as a part of ONLYOFFICE Workspace](#installing-onlyoffice-document-server-as-a-part-of-onlyoffice-workspace)
|
||||
* [ONLYOFFICE Document Server ipv6 setup](#onlyoffice-document-server-ipv6-setup)
|
||||
* [Issues](#issues)
|
||||
- [Docker Issues](#docker-issues)
|
||||
@ -26,7 +28,7 @@ Starting from version 6.0, Document Server is distributed as ONLYOFFICE Docs. It
|
||||
|
||||
ONLYOFFICE Docs can be used as a part of [ONLYOFFICE DocSpace](https://www.onlyoffice.com/docspace.aspx) and ONLYOFFICE Workspace, or with [third-party sync&share solutions](https://www.onlyoffice.com/all-connectors.aspx) (e.g. Odoo, Moodle, Nextcloud, ownCloud, Seafile, etc.) to enable collaborative editing within their interface.
|
||||
|
||||
***Important*** Please update `docker-engine` to latest version (`20.10.21` as of writing this doc) before using it. We use `ubuntu:22.04` as base image and it older versions of docker have compatibility problems with it
|
||||
***Important*** Please update `docker-engine` to latest version (`20.10.21` as of writing this doc) before using it. We use `ubuntu:24.04` as base image and older versions of docker have compatibility problems with it
|
||||
|
||||
## Functionality ##
|
||||
|
||||
@ -55,7 +57,7 @@ ONLYOFFICE Docs offer support for plugins allowing you to add specific features
|
||||
* **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
|
||||
* **Distribution**: 64-bit Red Hat, CentOS or other compatible distribution with kernel version 3.8 or later, 64-bit Debian, Ubuntu or other compatible distribution with kernel version 3.8 or later
|
||||
* **Docker**: version 1.9.0 or later
|
||||
|
||||
## Running Docker Image
|
||||
@ -100,7 +102,7 @@ To change the port, use the -p command. E.g.: to make your portal accessible via
|
||||
sudo docker run -i -t -d -p 443:443 \
|
||||
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
|
||||
|
||||
Access to the onlyoffice application can be secured using SSL so as to prevent unauthorized access. While a CA certified SSL certificate allows for verification of trust via the CA, a self signed certificates can also provide an equal level of trust verification as long as each client takes some additional steps to verify the identity of your website. Below the instructions on achieving this are provided.
|
||||
Access to the ONLYOFFICE application can be secured using SSL so as to prevent unauthorized access. While a CA certified SSL certificate allows for verification of trust via the CA, a self-signed certificate can also provide an equal level of trust verification as long as each client takes some additional steps to verify the identity of your website. Below the instructions on achieving this are provided.
|
||||
|
||||
To secure the application via SSL basically two things are needed:
|
||||
|
||||
@ -112,7 +114,7 @@ So you need to create and install the following files:
|
||||
/app/onlyoffice/DocumentServer/data/certs/tls.key
|
||||
/app/onlyoffice/DocumentServer/data/certs/tls.crt
|
||||
|
||||
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).
|
||||
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
|
||||
|
||||
@ -156,9 +158,9 @@ openssl dhparam -out dhparam.pem 2048
|
||||
|
||||
#### Installation of the SSL Certificates
|
||||
|
||||
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).
|
||||
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 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 `tls.key` file to only be readable by the owner.
|
||||
|
||||
@ -179,7 +181,7 @@ You are now just one step away from having our application secured.
|
||||
Below is the complete list of parameters that can be set using environment variables.
|
||||
|
||||
- **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`.
|
||||
- **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/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`.
|
||||
@ -196,13 +198,15 @@ Below is the complete list of parameters that can be set using environment varia
|
||||
- **MSSQL** — schema to set as [DEFAULT_SCHEMA](https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-ver17#default_schema---schema_name--null-), default `dbo`.
|
||||
- **AMQP_URI**: The [AMQP URI](https://www.rabbitmq.com/uri-spec.html "RabbitMQ URI Specification") to connect to message broker server.
|
||||
- **AMQP_TYPE**: The message broker type. Supported values are `rabbitmq` or `activemq`. Defaults to `rabbitmq`.
|
||||
- **RABBIT_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened to the RabbitMQ message broker. Defaults to the soft limit from `ulimit -n`.
|
||||
- **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.
|
||||
- **REDIS_SERVER_USER**: The Redis server username. The username is not set by default.
|
||||
- **REDIS_SERVER_PASS**: The Redis server password. The password is not set by default.
|
||||
- **REDIS_SERVER_DB**: The Redis database index number to select. Defaults to `0`.
|
||||
- **NGINX_WORKER_PROCESSES**: Defines the number of nginx worker processes.
|
||||
- **NGINX_WORKER_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened by a nginx worker process.
|
||||
- **NGINX_WORKER_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened by a nginx worker process. Defaults to the soft limit from `ulimit -n`.
|
||||
- **NGINX_ACCESS_LOG**: Defines whether access logging is enabled. Defaults to `false`.
|
||||
- **SECURE_LINK_SECRET**: Defines secret for the nginx config directive [secure_link_md5](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_md5). Defaults to `random string`.
|
||||
- **JWT_ENABLED**: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Document Server. Defaults to `true`.
|
||||
- **JWT_SECRET**: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Document Server. Defaults to random value.
|
||||
@ -211,14 +215,16 @@ Below is the complete list of parameters that can be set using environment varia
|
||||
- **WOPI_ENABLED**: Specifies the enabling the wopi handlers. Defaults to `false`.
|
||||
- **ALLOW_META_IP_ADDRESS**: Defines if it is allowed to connect meta IP address or not. Defaults to `false`.
|
||||
- **ALLOW_PRIVATE_IP_ADDRESS**: Defines if it is allowed to connect private IP address or not. Defaults to `false`.
|
||||
- **USE_UNAUTHORIZED_STORAGE**: Set to `true`if using selfsigned certificates for your storage server e.g. Nextcloud. Defaults to `false`
|
||||
- **USE_UNAUTHORIZED_STORAGE**: Set to `true` if using self-signed 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`
|
||||
- **ADMINPANEL_ENABLED**: Enables admin panel service autostart. Defaults to `false`.
|
||||
- **EXAMPLE_ENABLED**: Enables example service autostart. Defaults to `false`.
|
||||
- **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.
|
||||
- **LETS_ENCRYPT_MAIL**: Defines the domain administrator mail address for Let's Encrypt certificate.
|
||||
- **PLUGINS_ENABLED**: Defines whether to enable default plugins. Defaults to `true`.
|
||||
|
||||
## Installing ONLYOFFICE Document Server using Docker Compose
|
||||
@ -256,7 +262,7 @@ Then launch containers on it using the 'docker run --net onlyoffice' option:
|
||||
|
||||
**STEP 2**: Install MySQL.
|
||||
|
||||
Follow [these steps](#installing-mysql) to install MySQL server.
|
||||
Install MySQL server. You can find MySQL installation instructions in the [official MySQL documentation](https://dev.mysql.com/doc/).
|
||||
|
||||
**STEP 3**: Generate JWT Secret
|
||||
|
||||
@ -347,14 +353,14 @@ wget https://download.onlyoffice.com/install/workspace-install.sh
|
||||
**STEP 2**: Install ONLYOFFICE Workspace executing the following command:
|
||||
|
||||
```bash
|
||||
workspace-install.sh -md yourdomain.com
|
||||
bash workspace-install.sh -md yourdomain.com
|
||||
```
|
||||
|
||||
Or, use [docker-compose](https://docs.docker.com/compose/install "docker-compose"). First you need to clone this [GitHub repository](https://github.com/ONLYOFFICE/Docker-CommunityServer/):
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/ONLYOFFICE/Docker-CommunityServer/master/docker-compose.groups.yml
|
||||
docker-compose up -d
|
||||
docker-compose -f docker-compose.groups.yml up -d
|
||||
```
|
||||
|
||||
## ONLYOFFICE Document Server ipv6 setup
|
||||
@ -387,7 +393,7 @@ For more information, visit the official [Docker manual site](https://docs.docke
|
||||
|
||||
As a relatively new project Docker is being worked on and actively developed by its community. So it's recommended to use the latest version of Docker, because the issues that you encounter might have already been fixed with a newer Docker release.
|
||||
|
||||
The known Docker issue with ONLYOFFICE Document Server with rpm-based distributives is that sometimes the processes fail to start inside Docker container. Fedora and RHEL/CentOS users should try disabling selinux with setenforce 0. If it fixes the issue then you can either stick with SELinux disabled which is not recommended by RedHat, or switch to using Ubuntu.
|
||||
The known Docker issue with ONLYOFFICE Document Server with rpm-based distributives is that sometimes the processes fail to start inside Docker container. Fedora and RHEL/CentOS users should try disabling SELinux with setenforce 0. If it fixes the issue then you can either stick with SELinux disabled which is not recommended by Red Hat, or switch to using Ubuntu.
|
||||
|
||||
### Document Server usage issues
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
command=/var/www/COMPANY_NAME/documentserver/server/DocService/docservice
|
||||
directory=/var/www/COMPANY_NAME/documentserver/server/DocService
|
||||
user=ds
|
||||
environment=NODE_ENV=production-linux,NODE_CONFIG_DIR=/etc/COMPANY_NAME/documentserver,NODE_DISABLE_COLORS=1,APPLICATION_NAME=COMPANY_NAME
|
||||
environment=NODE_ENV=production-linux,NODE_CONFIG_DIR=/etc/COMPANY_NAME/documentserver,NODE_DISABLE_COLORS=1,PKG_NATIVE_CACHE_PATH=/tmp/.cache,APPLICATION_NAME=COMPANY_NAME
|
||||
stdout_logfile=/var/log/COMPANY_NAME/documentserver/docservice/out.log
|
||||
stdout_logfile_backups=0
|
||||
stdout_logfile_maxbytes=0
|
||||
|
||||
@ -90,8 +90,7 @@ target "documentserver" {
|
||||
target = "documentserver"
|
||||
dockerfile = "${DOCKERFILE}"
|
||||
tags = [
|
||||
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}",
|
||||
equal("nightly",BUILD_CHANNEL) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "",
|
||||
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}"
|
||||
]
|
||||
platforms = ["${PLATFORM}"]
|
||||
args = {
|
||||
@ -110,8 +109,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}",
|
||||
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}": "",]
|
||||
equal("true",LATEST) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "",]
|
||||
platforms = ["linux/amd64", "linux/arm64"]
|
||||
args = {
|
||||
"PULL_TAG": "${PULL_TAG}"
|
||||
@ -127,7 +125,7 @@ target "documentserver-ucs" {
|
||||
tags = [
|
||||
"docker.io/${COMPANY_NAME}/${PRODUCT_NAME}${PRODUCT_EDITION}-ucs:${TAG}"
|
||||
]
|
||||
platforms = ["linux/amd64", "linux/arm64"]
|
||||
platforms = ["${PLATFORM}"]
|
||||
args = {
|
||||
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
|
||||
"PRODUCT_NAME": "${PRODUCT_NAME}"
|
||||
|
||||
0
fonts/.placeholder
Normal file
0
fonts/.placeholder
Normal file
@ -84,7 +84,7 @@ elif [[ -f ${SSL_CERTIFICATE_PATH} ]]; then
|
||||
fi
|
||||
|
||||
if [[ -n $NODE_EXTRA_ENVIRONMENT ]]; then
|
||||
sed -i "s|^environment=.*$|&,NODE_EXTRA_CA_CERTS=${NODE_EXTRA_ENVIRONMENT}|" /etc/supervisor/conf.d/*.conf
|
||||
sed -i "s|^environment=.*$|&,NODE_EXTRA_CA_CERTS=${NODE_EXTRA_ENVIRONMENT}|" ${SUPERVISOR_CONF_DIR}/*.conf
|
||||
fi
|
||||
|
||||
CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-${SSL_CERTIFICATES_DIR}/ca-certificates.pem}
|
||||
@ -103,14 +103,15 @@ NGINX_ONLYOFFICE_EXAMPLE_CONF="${NGINX_ONLYOFFICE_EXAMPLE_PATH}/includes/ds-exam
|
||||
|
||||
NGINX_CONFIG_PATH="/etc/nginx/nginx.conf"
|
||||
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-1}
|
||||
NGINX_ACCESS_LOG=${NGINX_ACCESS_LOG:-false}
|
||||
# Limiting the maximum number of simultaneous connections due to possible memory shortage
|
||||
LIMIT=$(ulimit -n); [ $LIMIT -gt 1048576 ] && LIMIT=1048576
|
||||
LIMIT=$(ulimit -n); [ "$LIMIT" = "unlimited" ] || [ "$LIMIT" -gt 1048576 ] && LIMIT=1048576
|
||||
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$LIMIT}
|
||||
RABBIT_CONNECTIONS=${RABBIT_CONNECTIONS:-$LIMIT}
|
||||
|
||||
JWT_ENABLED=${JWT_ENABLED:-true}
|
||||
|
||||
# validate user's vars before usinig in json
|
||||
# validate user's vars before using in json
|
||||
if [ "${JWT_ENABLED}" == "true" ]; then
|
||||
JWT_ENABLED="true"
|
||||
else
|
||||
@ -135,6 +136,8 @@ else
|
||||
REDIS_ENABLED=true
|
||||
fi
|
||||
|
||||
[[ "${PRODUCT_EDITION}" =~ ^-(ee|de)$ ]] && ADMINPANEL_AVAILABLE=true || ADMINPANEL_AVAILABLE=false
|
||||
|
||||
ONLYOFFICE_DEFAULT_CONFIG=${CONF_DIR}/local.json
|
||||
ONLYOFFICE_LOG4JS_CONFIG=${CONF_DIR}/log4js/production.json
|
||||
ONLYOFFICE_EXAMPLE_CONFIG=${CONF_DIR}-example/local.json
|
||||
@ -584,16 +587,25 @@ create_oracle_tbl() {
|
||||
|
||||
update_welcome_page() {
|
||||
WELCOME_PAGE="${APP_DIR}-example/welcome/docker.html"
|
||||
EXAMPLE_DISABLED_PAGE="${APP_DIR}-example/welcome/example-disabled.html"
|
||||
if ${ADMINPANEL_AVAILABLE}; then
|
||||
ADMIN_DISABLED_PAGE="${APP_DIR}-example/welcome/admin-disabled.html"
|
||||
sed -Ei 's#sudo systemctl start ds-(adminpanel|example)#sudo docker exec $(sudo docker ps -q) supervisorctl start ds:\1#g' "$ADMIN_DISABLED_PAGE" "$EXAMPLE_DISABLED_PAGE"
|
||||
else
|
||||
sed -Ei 's#sudo systemctl start ds-example#sudo docker exec $(sudo docker ps -q) supervisorctl start ds:example#g' "$EXAMPLE_DISABLED_PAGE"
|
||||
fi
|
||||
|
||||
TARGET_PAGES="$WELCOME_PAGE $EXAMPLE_DISABLED_PAGE${ADMIN_DISABLED_PAGE:+ $ADMIN_DISABLED_PAGE}"
|
||||
if [[ -e $WELCOME_PAGE ]]; then
|
||||
DOCKER_CONTAINER_ID=$(basename $(cat /proc/1/cpuset))
|
||||
(( ${#DOCKER_CONTAINER_ID} < 12 )) && DOCKER_CONTAINER_ID=$(hostname)
|
||||
if (( ${#DOCKER_CONTAINER_ID} >= 12 )); then
|
||||
if [[ -x $(command -v docker) ]]; then
|
||||
DOCKER_CONTAINER_NAME=$(docker inspect --format="{{.Name}}" $DOCKER_CONTAINER_ID)
|
||||
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/' -i $WELCOME_PAGE
|
||||
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/' -i ${TARGET_PAGES}
|
||||
JWT_MESSAGE=$(echo $JWT_MESSAGE | sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/')
|
||||
else
|
||||
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/' -i $WELCOME_PAGE
|
||||
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/' -i ${TARGET_PAGES}
|
||||
JWT_MESSAGE=$(echo $JWT_MESSAGE | sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/')
|
||||
fi
|
||||
fi
|
||||
@ -604,7 +616,13 @@ update_nginx_settings(){
|
||||
# Set up nginx
|
||||
sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_CONFIG_PATH}
|
||||
sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_CONFIG_PATH}
|
||||
sed 's/access_log.*/'"access_log off;"'/' -i ${NGINX_CONFIG_PATH}
|
||||
|
||||
if [ "${NGINX_ACCESS_LOG}" = "true" ]; then
|
||||
touch "${DS_LOG_DIR}/nginx.access.log"
|
||||
sed -ri 's|^\s*access_log\b.*;|access_log '"${DS_LOG_DIR}"'/nginx.access.log;|' "${NGINX_CONFIG_PATH}" "${NGINX_ONLYOFFICE_PATH}/includes/ds-common.conf" 2>/dev/null
|
||||
else
|
||||
sed -ri 's|^\s*access_log\b.*;|access_log off;|' "${NGINX_CONFIG_PATH}"
|
||||
fi
|
||||
|
||||
# setup HTTPS
|
||||
if [ -f "${SSL_CERTIFICATE_PATH}" -a -f "${SSL_KEY_PATH}" ]; then
|
||||
@ -665,11 +683,11 @@ update_release_date(){
|
||||
}
|
||||
|
||||
# create base folders
|
||||
for i in converter docservice metrics adminpanel; do
|
||||
mkdir -p "${DS_LOG_DIR}/$i"
|
||||
for SUPERVISOR_CONF in "${SUPERVISOR_CONF_DIR}"/ds-*.conf; do
|
||||
SERVICE_NAME=$(sed "s|^${SUPERVISOR_CONF_DIR}/ds-||; s|\.conf$||" <<<"$SUPERVISOR_CONF")
|
||||
mkdir -p "$DS_LOG_DIR/$SERVICE_NAME" && touch "$DS_LOG_DIR/$SERVICE_NAME"/{out,err}.log
|
||||
done
|
||||
|
||||
mkdir -p ${DS_LOG_DIR}-example
|
||||
mkdir -p "${DS_LOG_DIR}-example" && touch "${DS_LOG_DIR}-example"/{out,err}.log
|
||||
|
||||
# create app folders
|
||||
for i in ${DS_LIB_DIR}/App_Data/cache/files ${DS_LIB_DIR}/App_Data/docbuilder ${DS_LIB_DIR}-example/files; do
|
||||
@ -729,7 +747,8 @@ if [ ${ONLYOFFICE_DATA_CONTAINER_HOST} = "localhost" ]; then
|
||||
chmod 400 ${RABBITMQ_DATA}/.erlang.cookie
|
||||
fi
|
||||
|
||||
echo "ulimit -n $RABBIT_CONNECTIONS" >> /etc/default/rabbitmq-server
|
||||
sed -i '/^[[:space:]]*ulimit[[:space:]]\+-n[[:space:]]\+/d' /etc/default/rabbitmq-server
|
||||
printf 'ulimit -n %s\n' "${RABBIT_CONNECTIONS}" >> /etc/default/rabbitmq-server
|
||||
|
||||
LOCAL_SERVICES+=("rabbitmq-server")
|
||||
# allow Rabbitmq startup after container kill
|
||||
@ -752,7 +771,7 @@ else
|
||||
waiting_for_datacontainer
|
||||
|
||||
# read settings after the data container in ready state
|
||||
# to prevent get unconfigureted data
|
||||
# to prevent get unconfigured data
|
||||
read_setting
|
||||
|
||||
update_welcome_page
|
||||
@ -765,7 +784,8 @@ for i in ${LOCAL_SERVICES[@]}; do
|
||||
service $i start
|
||||
done
|
||||
|
||||
if [ ${PG_NEW_CLUSTER} = "true" ]; then
|
||||
PG_DB_EXISTS=$(PGPASSWORD="$DB_PWD" psql -h ${DB_HOST} -p${DB_PORT} -U "${DB_USER}" -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}';" 2>/dev/null)
|
||||
if [ ${PG_NEW_CLUSTER} = "true" ] || [ "${PG_DB_EXISTS}" != "1" ]; then
|
||||
create_postgresql_db
|
||||
create_postgresql_tbl
|
||||
fi
|
||||
@ -784,6 +804,12 @@ if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
|
||||
|
||||
update_nginx_settings
|
||||
|
||||
if [ "${PLUGINS_ENABLED}" = "true" ]; then
|
||||
( documentserver-pluginsmanager.sh -r false --update="${APP_DIR}/sdkjs-plugins/plugin-list-default.json" >/dev/null; echo "[pluginsmanager] Plugins initialization finished" >/proc/1/fd/1 ) &
|
||||
fi
|
||||
|
||||
${ADMINPANEL_AVAILABLE} && [ "${ADMINPANEL_ENABLED:-false}" = "true" ] && sed -i 's,autostart=false,autostart=true,' ${SUPERVISOR_CONF_DIR}/ds-adminpanel.conf
|
||||
[ "${EXAMPLE_ENABLED:-false}" = "true" ] && sed -i 's,autostart=false,autostart=true,' ${SUPERVISOR_CONF_DIR}/ds-example.conf
|
||||
service supervisor start
|
||||
|
||||
# start cron to enable log rotating
|
||||
@ -809,14 +835,8 @@ if [ "${GENERATE_FONTS}" == "true" ]; then
|
||||
start_process documentserver-generate-allfonts.sh ${ONLYOFFICE_DATA_CONTAINER}
|
||||
fi
|
||||
|
||||
if [ "${PLUGINS_ENABLED}" = "true" ]; then
|
||||
echo -n Installing plugins, please wait...
|
||||
start_process documentserver-pluginsmanager.sh -r false --update=\"${APP_DIR}/sdkjs-plugins/plugin-list-default.json\" >/dev/null
|
||||
echo Done
|
||||
fi
|
||||
|
||||
start_process documentserver-static-gzip.sh ${ONLYOFFICE_DATA_CONTAINER}
|
||||
|
||||
echo "${JWT_MESSAGE}"
|
||||
|
||||
start_process find "$DS_LOG_DIR" "$DS_LOG_DIR-example" -type f -name "*.log" | xargs tail -f
|
||||
start_process bash -c "find '$DS_LOG_DIR' '$DS_LOG_DIR-example' -type f -name '*.log' | xargs tail -F"
|
||||
|
||||
Reference in New Issue
Block a user