#!/bin/bash set -x SERVER_HOST=${SERVER_HOST:-""}; ONLYOFFICE_DIR="/var/www/onlyoffice" ONLYOFFICE_DATA_DIR="${ONLYOFFICE_DIR}/Data" ONLYOFFICE_SERVICES_DIR="${ONLYOFFICE_DIR}/Services" ONLYOFFICE_SQL_DIR="${ONLYOFFICE_DIR}/Sql" ONLYOFFICE_ROOT_DIR="${ONLYOFFICE_DIR}/WebStudio" ONLYOFFICE_APISYSTEM_DIR="/var/www/onlyoffice/ApiSystem" ONLYOFFICE_MONOSERVER_PATH="/etc/init.d/monoserve"; ONLYOFFICE_HYPERFASTCGI_PATH="/etc/hyperfastcgi/onlyoffice"; ONLYOFFICE_MONOSERVE_COUNT=1; ONLYOFFICE_MODE=${ONLYOFFICE_MODE:-"SERVER"}; ONLYOFFICE_GOD_DIR="/etc/god/conf.d" ONLYOFFICE_CRON_DIR="/etc/cron.d" ONLYOFFICE_CRON_PATH="/etc/cron.d/onlyoffice" DOCKER_ONLYOFFICE_SUBNET=$(ip -o -f inet addr show | awk '/scope global/ {print $4}' | head -1); DOCKER_CONTAINER_IP=$(ip addr show eth0 | awk '/inet / {gsub(/\/.*/,"",$2); print $2}' | head -1); DOCKER_CONTAINER_NAME="onlyoffice-community-server"; DOCKER_ENABLED=${DOCKER_ENABLED:-true}; DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" NGINX_CONF_DIR="/etc/nginx/sites-enabled" NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)}; NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)}; SERVICE_SSO_AUTH_HOST_ADDR=${SERVICE_SSO_AUTH_HOST_ADDR:-${CONTROL_PANEL_PORT_80_TCP_ADDR}}; DEFAULT_ONLYOFFICE_CORE_MACHINEKEY="$(sudo sed -n '/"core.machinekey"/s!.*value\s*=\s*"\([^"]*\)".*!\1!p' ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config)"; ONLYOFFICE_CORE_MACHINEKEY=${ONLYOFFICE_CORE_MACHINEKEY:-${DEFAULT_ONLYOFFICE_CORE_MACHINEKEY}}; if [ ! -d "$NGINX_CONF_DIR" ]; then mkdir -p $NGINX_CONF_DIR; fi if [ ! -d "${ONLYOFFICE_DIR}/DocumentServerData" ]; then mkdir -p ${ONLYOFFICE_DIR}/DocumentServerData; fi NGINX_ROOT_DIR="/etc/nginx" VALID_IP_ADDRESS_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"; LOG_DEBUG="DEBUG"; LOG_DIR="/var/log/onlyoffice/" ONLYOFFICE_HTTPS=${ONLYOFFICE_HTTPS:-false} SSL_CERTIFICATES_DIR="${ONLYOFFICE_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} SSL_DHPARAM_PATH=${SSL_DHPARAM_PATH:-${SSL_CERTIFICATES_DIR}/dhparam.pem} SSL_VERIFY_CLIENT=${SSL_VERIFY_CLIENT:-off} SSL_OCSP_CERTIFICATE_PATH=${SSL_OCSP_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/stapling.trusted.crt} CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-${SSL_CERTIFICATES_DIR}/ca.crt} ONLYOFFICE_HTTPS_HSTS_ENABLED=${ONLYOFFICE_HTTPS_HSTS_ENABLED:-true} ONLYOFFICE_HTTPS_HSTS_MAXAGE=${ONLYOFFICE_HTTPS_HSTS_MAXAG:-63072000} SYSCONF_TEMPLATES_DIR="${DIR}/config" mkdir -p ${SYSCONF_TEMPLATES_DIR}/nginx; SYSCONF_TOOLS_DIR="${DIR}/assets/tools" ONLYOFFICE_SERVICES_INTERNAL_HOST=${ONLYOFFICE_SERVICES_PORT_9865_TCP_ADDR:-${ONLYOFFICE_SERVICES_INTERNAL_HOST}} ONLYOFFICE_SERVICES_EXTERNAL=false DOCUMENT_SERVER_ENABLED=false DOCUMENT_SERVER_JWT_ENABLED=${DOCUMENT_SERVER_JWT_ENABLED:-false}; DOCUMENT_SERVER_JWT_SECRET=${DOCUMENT_SERVER_JWT_SECRET:-""}; DOCUMENT_SERVER_JWT_HEADER=${DOCUMENT_SERVER_JWT_HEADER:-""}; DOCUMENT_SERVER_HOST=${DOCUMENT_SERVER_HOST:-""}; DOCUMENT_SERVER_PROTOCOL=${DOCUMENT_SERVER_PROTOCOL:-"http"}; DOCUMENT_SERVER_API_URL="\/web-apps\/apps\/api\/documents\/api\.js"; DOCUMENT_SERVER_HOST_IP=""; CONTROL_PANEL_ENABLED=false MAIL_SERVER_ENABLED=false EXTERNAL_IP=${EXTERNAL_IP:-$(dig +short myip.opendns.com @resolver1.opendns.com)}; MYSQL_SERVER_ROOT_PASSWORD=${MYSQL_SERVER_ROOT_PASSWORD:-""} MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"} MYSQL_SERVER_PORT=${MYSQL_SERVER_PORT:-"3306"} MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-"onlyoffice"} MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"} MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-${MYSQL_SERVER_ROOT_PASSWORD}} MYSQL_SERVER_EXTERNAL=${MYSQL_SERVER_EXTERNAL:-false}; mkdir -p "${SSL_CERTIFICATES_DIR}/.well-known/acme-challenge" check_ip_is_internal(){ local IPRE='\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)'; local IP=($(echo "$1" | sed -ne 's:^'"$IPRE"'/.*$:\1 \2 \3 \4:p')); local MASK=($(echo "$1" | sed -ne 's:^[^/]*/'"$IPRE"'$:\1 \2 \3 \4:p')) if [ ${#MASK[@]} -ne 4 ]; then local BITCNT=($(echo "$1" | sed -ne 's:^[^/]*/\([0-9]\+\)$:\1:p')) BITCNT=$(( ((2**${BITCNT})-1) << (32-${BITCNT}) )) for (( I=0; I<4; I++ )); do MASK[$I]=$(( ($BITCNT >> (8 * (3 - $I))) & 255 )) done fi local NETWORK=() for (( I=0; I<4; I++ )); do NETWORK[$I]=$(( ${IP[$I]} & ${MASK[$I]} )) done local INIP=($(echo "$2" | sed -ne 's:^'"$IPRE"'$:\1 \2 \3 \4:p')) for (( I=0; I<4; I++ )); do [[ $(( ${INIP[$I]} & ${MASK[$I]} )) -ne ${NETWORK[$I]} ]] && exit 0; done echo "true" } check_partnerdata(){ PARTNER_DATA_FILE="${ONLYOFFICE_DATA_DIR}/json-data.txt"; if [ -f ${PARTNER_DATA_FILE} ]; then for serverID in $(seq 1 ${ONLYOFFICE_MONOSERVE_COUNT}); do index=$serverID; if [ $index == 1 ]; then index=""; fi cp ${PARTNER_DATA_FILE} ${ONLYOFFICE_ROOT_DIR}${index}/App_Data/static/partnerdata/ done fi } log_debug () { echo "onlyoffice: [Debug] $1" } check_partnerdata re='^[0-9]+$' if ! [[ ${ONLYOFFICE_MONOSERVE_COUNT} =~ $re ]] ; then echo "error: ONLYOFFICE_MONOSERVE_COUNT not a number"; ONLYOFFICE_MONOSERVE_COUNT=2; fi # if [ "${ONLYOFFICE_MONOSERVE_COUNT}" -eq "2" ] ; then # KERNER_CPU=$(nproc); # if [ "${KERNER_CPU}" -gt "${ONLYOFFICE_MONOSERVE_COUNT}" ]; then # ONLYOFFICE_MONOSERVE_COUNT=${KERNER_CPU}; # fi # fi cp ${NGINX_ROOT_DIR}/includes/onlyoffice-communityserver-nginx.conf.template ${NGINX_ROOT_DIR}/nginx.conf sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf cp ${NGINX_ROOT_DIR}/includes/onlyoffice-communityserver-common-init.conf.template ${NGINX_CONF_DIR}/onlyoffice rm -f ${NGINX_ROOT_DIR}/conf.d/*.conf rsyslogd service nginx restart if [ ${ONLYOFFICE_SERVICES_INTERNAL_HOST} ]; then ONLYOFFICE_SERVICES_EXTERNAL=true; sed '/endpoint/s/http:\/\/localhost:9865\/teamlabJabber/http:\/\/'${ONLYOFFICE_SERVICES_INTERNAL_HOST}':9865\/teamlabJabber/' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed '/endpoint/s/http:\/\/localhost:9866\/teamlabSearcher/http:\/\/'${ONLYOFFICE_SERVICES_INTERNAL_HOST}':9866\/teamlabSearcher/' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed '/endpoint/s/http:\/\/localhost:9871\/teamlabNotify/http:\/\/'${ONLYOFFICE_SERVICES_INTERNAL_HOST}':9871\/teamlabNotify/' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed '/endpoint/s/http:\/\/localhost:9882\/teamlabBackup/http:\/\/'${ONLYOFFICE_SERVICES_INTERNAL_HOST}':9882\/teamlabBackup/' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed '/BoshPath/s!\(value\s*=\s*\"\)[^\"]*\"!\1http:\/\/'${ONLYOFFICE_SERVICES_INTERNAL_HOST}':5280\/http-poll\/\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config sed '///' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed 's///' -i ${ONLYOFFICE_ROOT_DIR}/Web.config sed 's///' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/TeamLabSvc.exe.Config; sed 's///' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/TeamLabSvc.exe.Config; REDIS_SERVER_EXTERNAL=true; fi mysql_scalar_exec(){ local queryResult=""; if [ "$2" == "opt_ignore_db_name" ]; then queryResult=$(mysql --silent --skip-column-names -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} -e "$1"); else queryResult=$(mysql --silent --skip-column-names -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} -D ${MYSQL_SERVER_DB_NAME} -e "$1"); fi echo $queryResult; } mysql_list_exec(){ local queryResult=""; if [ "$2" == "opt_ignore_db_name" ]; then queryResult=$(mysql --silent --skip-column-names -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} -e "$1"); else queryResult=$(mysql --silent --skip-column-names -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} -D ${MYSQL_SERVER_DB_NAME} -e "$1"); fi read -ra vars <<< ${queryResult}; for i in "${vars[0][@]}"; do echo $i done } mysql_batch_exec(){ mysql --silent --skip-column-names -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} -D ${MYSQL_SERVER_DB_NAME} < "$1"; } mysql_check_connection() { if [ ${LOG_DEBUG} ]; then log_debug "Mysql check connection for ${MYSQL_SERVER_HOST}"; fi while ! mysqladmin ping -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} --silent; do sleep 1 done } change_connections(){ sed '/'${1}'/s/\(connectionString\s*=\s*\"\)[^\"]*\"/\1Server='${MYSQL_SERVER_HOST}';Port='${MYSQL_SERVER_PORT}';Database='${MYSQL_SERVER_DB_NAME}';User ID='${MYSQL_SERVER_USER}';Password='${MYSQL_SERVER_PASS}';Pooling=true;Character Set=utf8;AutoEnlist=false\"/' -i ${2} } if [ "${MYSQL_SERVER_EXTERNAL}" == "false" ]; then chown -R mysql:mysql /var/lib/mysql/ chmod -R 755 /var/lib/mysql/ if [ ! -f /var/lib/mysql/ibdata1 ]; then # cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf mysql_install_db || true # mysqld --initialize-insecure --user=mysql || true fi if [ ${LOG_DEBUG} ]; then log_debug "Fix docker bug volume mapping for mysql"; fi myisamchk -q -r /var/lib/mysql/mysql/proc || true service mysql start if [ ! -f /var/lib/mysql/mysql_upgrade_info ]; then if mysqladmin --silent ping -u root | grep -q "mysqld is alive" ; then mysql_upgrade else mysql_upgrade --password=${MYSQL_SERVER_ROOT_PASSWORD}; fi service mysql restart; fi if [ -n "$MYSQL_SERVER_ROOT_PASSWORD" ] && mysqladmin --silent ping -u root | grep -q "mysqld is alive" ; then mysql <> /etc/init.d/sphinxsearch if ! grep -q "name=\"textindex\"" ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/TeamLabSvc.exe.Config; then sed -i 's/.*/' ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/TeamLabSvc.exe.Config; fi if [ "${DOCUMENT_SERVER_ENABLED}" == "true" ]; then cp ${NGINX_ROOT_DIR}/includes/onlyoffice-communityserver-proxy-to-documentserver.conf.template ${NGINX_ROOT_DIR}/includes/onlyoffice-communityserver-proxy-to-documentserver.conf; sed 's,{{DOCUMENT_SERVER_HOST_ADDR}},'"${DOCUMENT_SERVER_PROTOCOL}:\/\/${DOCUMENT_SERVER_HOST}"',' -i ${NGINX_ROOT_DIR}/includes/onlyoffice-communityserver-proxy-to-documentserver.conf; # change web.appsettings link to editor sed '/files\.docservice\.url\.converter/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_PROTOCOL}':\/\/'${DOCUMENT_SERVER_HOST}'\/ConvertService\.ashx\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config sed '/files\.docservice\.url\.api/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_API_URL}'\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config sed '/files\.docservice\.url\.storage/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_PROTOCOL}':\/\/'${DOCUMENT_SERVER_HOST}'\/FileUploader\.ashx\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config sed '/files\.docservice\.url\.command/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_PROTOCOL}':\/\/'${DOCUMENT_SERVER_HOST}'\/coauthoring\/CommandService\.ashx\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config if [ "${DOCUMENT_SERVER_JWT_ENABLED}" == "true" ]; then sed '/files\.docservice\.secret/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_JWT_SECRET}'\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config sed '/files\.docservice\.secret.header/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_JWT_HEADER}'\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config fi if [ -n "${DOCKER_ONLYOFFICE_SUBNET}" ] && [ -n "${SERVER_HOST}" ]; then sed '/files\.docservice\.url\.portal/s!\(value\s*=\s*\"\)[^\"]*\"!\1http:\/\/'${SERVER_HOST}'\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config fi if ! grep -q "files\.docservice\.url\.command" ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config; then sed '/files\.docservice\.url\.storage/a /' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config else sed '/files\.docservice\.url\.command/s!\(value\s*=\s*\"\)[^\"]*\"!\1'${DOCUMENT_SERVER_PROTOCOL}':\/\/'${DOCUMENT_SERVER_HOST}'\/coauthoring\/CommandService\.ashx\"!' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config fi fi if [ "${MAIL_SERVER_ENABLED}" == "true" ]; then timeout=120; interval=10; while [ "$interval" -lt "$timeout" ] ; do interval=$((${interval} + 10)); MAIL_SERVER_HOSTNAME=$(mysql --silent --skip-column-names -h ${MAIL_SERVER_DB_HOST} \ --port=${MAIL_SERVER_DB_PORT} -u "${MAIL_SERVER_DB_USER}" \ --password="${MAIL_SERVER_DB_PASS}" -D "${MAIL_SERVER_DB_NAME}" -e "SELECT Comment from greylisting_whitelist where Source='SenderIP:${MAIL_SERVER_API_HOST}' limit 1;"); if [[ "$?" -eq "0" ]]; then break; fi sleep 10; if [ ${LOG_DEBUG} ]; then log_debug "Waiting MAIL SERVER DB..."; fi done # change web.appsettings sed -r '/web\.hide-settings/s/,AdministrationPage//' -i ${ONLYOFFICE_ROOT_DIR}/web.appsettings.config MYSQL_MAIL_SERVER_ID=$(mysql_scalar_exec "select id from mail_server_server where mx_record='${MAIL_SERVER_HOSTNAME}' limit 1"); echo "MYSQL mail server id '${MYSQL_MAIL_SERVER_ID}'"; if [ -z ${MYSQL_MAIL_SERVER_ID} ]; then VALID_IP_ADDRESS_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"; if [[ $EXTERNAL_IP =~ $VALID_IP_ADDRESS_REGEX ]]; then log_debug "External ip $EXTERNAL_IP is valid"; else log_debug "External ip $EXTERNAL_IP is not valid"; exit 502; fi mysql --silent --skip-column-names -h ${MAIL_SERVER_DB_HOST} \ --port=${MAIL_SERVER_DB_PORT} -u "${MAIL_SERVER_DB_USER}" \ --password="${MAIL_SERVER_DB_PASS}" -D "${MAIL_SERVER_DB_NAME}" \ -e "INSERT INTO greylisting_whitelist (Source, Comment, Disabled) VALUES (\"SenderIP:${EXTERNAL_IP}\", '', 0);"; mysql_scalar_exec < /dev/null; break; fi sleep 5s; done } if [ "${REDIS_SERVER_EXTERNAL}" == "true" ]; then rm -f "${ONLYOFFICE_GOD_DIR}"/redis.god; sed '/redis-cli/d' -i ${ONLYOFFICE_CRON_PATH} service redis-server stop else service redis-server start fi if [ "${MYSQL_SERVER_EXTERNAL}" == "true" ]; then rm -f "${ONLYOFFICE_GOD_DIR}"/mysql.god; fi if [ "${ONLYOFFICE_MODE}" == "SERVICES" ]; then service nginx stop rm -f "${ONLYOFFICE_GOD_DIR}"/nginx.god; rm -f "${ONLYOFFICE_GOD_DIR}"/monoserveApiSystem.god; service monoserveApiSystem stop rm -f /etc/init.d/monoserveApiSystem for serverID in $(seq 1 ${ONLYOFFICE_MONOSERVE_COUNT}); do index=$serverID; if [ $index == 1 ]; then index=""; fi rm -f "${ONLYOFFICE_GOD_DIR}"/monoserve$index.god; service monoserve$index stop rm -f /etc/init.d/monoserve$index done sed '/monoserve/d' -i ${ONLYOFFICE_CRON_PATH} sed '/warmup/d' -i ${ONLYOFFICE_CRON_PATH} else if [ ${LOG_DEBUG} ]; then echo "fix docker bug volume mapping for onlyoffice"; fi chown -R onlyoffice:onlyoffice /var/log/onlyoffice chown -R onlyoffice:onlyoffice ${ONLYOFFICE_DIR}/DocumentServerData if [ "$(ls -alhd ${ONLYOFFICE_DATA_DIR} | awk '{ print $3 }')" != "onlyoffice" ]; then chown -R onlyoffice:onlyoffice ${ONLYOFFICE_DATA_DIR} fi for serverID in $(seq 1 ${ONLYOFFICE_MONOSERVE_COUNT}); do index=$serverID; if [ $index == 1 ]; then index=""; fi service monoserve$index restart # (ping_onlyoffice "http://localhost/warmup${index}/auth.aspx") & done service monoserveApiSystem restart fi if [ "${ONLYOFFICE_SERVICES_EXTERNAL}" == "true" ]; then rm -f "${ONLYOFFICE_GOD_DIR}"/onlyoffice.god; rm -f "${ONLYOFFICE_GOD_DIR}"/mail.god; service onlyofficeFeed stop service onlyofficeIndex stop service onlyofficeJabber stop service onlyofficeMailAggregator stop service onlyofficeMailWatchdog stop service onlyofficeNotify stop service onlyofficeBackup stop service onlyofficeAutoreply stop rm -f /etc/init.d/onlyofficeFeed rm -f /etc/init.d/onlyofficeIndex rm -f /etc/init.d/onlyofficeJabber rm -f /etc/init.d/onlyofficeMailAggregator rm -f /etc/init.d/onlyofficeMailWatchdog rm -f /etc/init.d/onlyofficeNotify rm -f /etc/init.d/onlyofficeBackup rm -f /etc/init.d/onlyofficeAutoreply sed '/onlyoffice/d' -i ${ONLYOFFICE_CRON_PATH} else service onlyofficeFeed restart service onlyofficeIndex restart service onlyofficeJabber restart service onlyofficeMailAggregator restart service onlyofficeMailWatchdog restart service onlyofficeNotify restart service onlyofficeBackup restart service onlyofficeSocketIO restart service onlyofficeAutoreply stop service onlyofficeHealthCheck stop fi service god restart if [ "${ONLYOFFICE_MODE}" == "SERVER" ]; then # wait mv ${SYSCONF_TEMPLATES_DIR}/nginx/prepare-onlyoffice ${NGINX_CONF_DIR}/onlyoffice service nginx reload log_debug "reload nginx config"; log_debug "FINISH"; fi PID=$(ps auxf | grep cron | grep -v grep | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi cron if [ "${DOCKER_ENABLED}" == "true" ]; then exec tail -f /dev/null fi