diff --git a/install/OneClickInstall/install-Docker.sh b/install/OneClickInstall/install-Docker.sh index 086ab18a4e0..475bba4e24c 100644 --- a/install/OneClickInstall/install-Docker.sh +++ b/install/OneClickInstall/install-Docker.sh @@ -87,6 +87,7 @@ REDIS_PORT="" REDIS_USER_NAME="" REDIS_PASSWORD="" +RABBIT_PROTOCOL="" RABBIT_HOST="" RABBIT_PORT="" RABBIT_USER_NAME="" @@ -409,6 +410,13 @@ while [ "$1" != "" ]; do fi ;; + -rbpr | --rabbitmqprotocol ) + if [ "$2" != "" ]; then + RABBIT_PROTOCOL=$2 + shift + fi + ;; + -rbth | --rabbitmqhost ) if [ "$2" != "" ]; then RABBIT_HOST=$2 @@ -536,6 +544,7 @@ while [ "$1" != "" ]; do echo " -rdsp, --redisport redis server port number (default value 6379)" echo " -rdsu, --redisusername redis user name" echo " -rdspass, --redispassword password set for redis account" + echo " -rbpr, --rabbitmqprotocol the protocol for the connection to rabbitmq server (default value amqp)" echo " -rbth, --rabbitmqhost the IP address or hostname of the rabbitmq server" echo " -rbtp, --rabbitmqport rabbitmq server port number (default value 5672)" echo " -rbtu, --rabbitmqusername username for rabbitmq server account" @@ -1409,6 +1418,7 @@ services_check_connection () { } [[ ! -z "$RABBIT_HOST" ]] && { establish_conn ${RABBIT_HOST} "${RABBIT_PORT:-5672}" "RabbitMQ" + reconfigure RABBIT_PROTOCOL ${RABBIT_PROTOCOL:-amqp} reconfigure RABBIT_HOST ${RABBIT_HOST} reconfigure RABBIT_PORT "${RABBIT_PORT:-5672}" reconfigure RABBIT_USER_NAME ${RABBIT_USER_NAME} diff --git a/install/common/product-configuration b/install/common/product-configuration index e51196f361f..e670fbc91fa 100644 --- a/install/common/product-configuration +++ b/install/common/product-configuration @@ -28,6 +28,7 @@ ELK_HOST="localhost" ELK_PORT="9200" OPENSEARCH_INDEX="${PACKAGE_SYSNAME}-fluent-bit" +RABBITMQ_PROTOCOL="amqp" RABBITMQ_HOST="localhost" RABBITMQ_USER="guest" RABBITMQ_PASSWORD="guest" @@ -216,6 +217,7 @@ while [ "$1" != "" ]; do echo " -rbp, --rabbitmqport rabbitmq port" echo " -rbu, --rabbitmquser rabbitmq user" echo " -rbpw, --rabbitmqpassword rabbitmq password" + echo " -rbpr, --rabbitmqprotocol rabbitmq protocol" echo " -mysqlh, --mysqlhost mysql server host" echo " -mysqld, --mysqldatabase ${PRODUCT} database name" echo " -mysqlu, --mysqluser ${PRODUCT} database user" @@ -588,7 +590,7 @@ setup_docs() { local DOCUMENT_SERVER_JWT_SECRET=${DOCUMENT_SERVER_JWT_SECRET:-$(json -f ${DS_CONF_DIR}/local.json services.CoAuthoring.secret.inbox.string)} local DOCUMENT_SERVER_JWT_HEADER=${DOCUMENT_SERVER_JWT_HEADER:-$(json -f ${DS_CONF_DIR}/local.json services.CoAuthoring.token.inbox.header)} - $JSON ${DS_CONF_DIR}/local.json -e "this.rabbitmq = { 'url': 'amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@${RABBITMQ_HOST}:${RABBITMQ_PORT}' }" >/dev/null 2>&1 + $JSON ${DS_CONF_DIR}/local.json -e "this.rabbitmq = { 'url': '${RABBITMQ_PROTOCOL}://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@${RABBITMQ_HOST}:${RABBITMQ_PORT}' }" >/dev/null 2>&1 $JSON ${DS_CONF_DIR}/local.json -e "this.services.CoAuthoring.redis = { 'host': '$REDIS_HOST' }" >/dev/null 2>&1 sed 's/\(listen .*:\)\([0-9]\{2,5\}\b\)\( default_server\)\?\(;\)/\1'${DOCUMENT_SERVER_PORT}'\3\4/' -i ${DS_CONF_DIR}/nginx/ds.conf @@ -796,6 +798,9 @@ setup_rabbitmq() { save_undefined_param "${APP_DIR}/rabbitmq.${ENVIRONMENT}.json" "RabbitMQ.Password" "${RABBITMQ_PASSWORD}" "$EXTERNAL_RABBITMQ_FLAG" save_undefined_param "${APP_DIR}/rabbitmq.${ENVIRONMENT}.json" "RabbitMQ.Port" "${RABBITMQ_PORT}" "$EXTERNAL_RABBITMQ_FLAG" save_undefined_param "${APP_DIR}/rabbitmq.${ENVIRONMENT}.json" "RabbitMQ.VirtualHost" "/" + if [[ ${RABBITMQ_PROTOCOL} = "amqps" ]] && [[ ${RABBITMQ_HOST} != "localhost" ]]; then + save_undefined_param "${APP_DIR}/rabbitmq.${ENVIRONMENT}.json" "RabbitMQ.Uri" "${RABBITMQ_PROTOCOL}://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@${RABBITMQ_HOST}:${RABBITMQ_PORT}/" + fi if [ $1 == "LOCAL_RABBITMQ_SERVER" ]; then systemctl enable rabbitmq-server >/dev/null 2>&1 diff --git a/install/docker/.env b/install/docker/.env index 651ef0bdf0e..45463627112 100644 --- a/install/docker/.env +++ b/install/docker/.env @@ -75,6 +75,7 @@ # rabbitmq # RABBIT_CONTAINER_NAME=${CONTAINER_PREFIX}rabbitmq + RABBIT_PROTOCOL="" RABBIT_HOST="" RABBIT_PORT=5672 RABBIT_VIRTUAL_HOST=/ diff --git a/install/docker/docker-entrypoint.py b/install/docker/docker-entrypoint.py index e1a35226235..20537e0ddda 100644 --- a/install/docker/docker-entrypoint.py +++ b/install/docker/docker-entrypoint.py @@ -69,13 +69,18 @@ REDIS_CONNECTION_HOST = REDIS_HOST if REDIS_HOST else REDIS_CONTAINER_NAME RABBIT_CONTAINER_NAME = os.environ["RABBIT_CONTAINER_NAME"] if environ.get("RABBIT_CONTAINER_NAME") else "onlyoffice-rabbitmq" +RABBIT_PROTOCOL = os.environ["RABBIT_PROTOCOL"] if environ.get("RABBIT_PROTOCOL") else "amqp" RABBIT_HOST = os.environ["RABBIT_HOST"] if environ.get("RABBIT_HOST") else None RABBIT_USER_NAME = os.environ["RABBIT_USER_NAME"] if environ.get("RABBIT_USER_NAME") else "guest" RABBIT_PASSWORD = os.environ["RABBIT_PASSWORD"] if environ.get("RABBIT_PASSWORD") else "guest" RABBIT_PORT = os.environ["RABBIT_PORT"] if environ.get("RABBIT_PORT") else "5672" RABBIT_VIRTUAL_HOST = os.environ["RABBIT_VIRTUAL_HOST"] if environ.get("RABBIT_VIRTUAL_HOST") else "/" -RABBIT_URI = {"Uri": os.environ["RABBIT_URI"]} if environ.get("RABBIT_URI") else None RABBIT_CONNECTION_HOST = RABBIT_HOST if RABBIT_HOST else RABBIT_CONTAINER_NAME +RABBIT_URI = ( + {"Uri": os.environ["RABBIT_URI"]} if os.environ.get("RABBIT_URI") + else {"Uri": f"{RABBIT_PROTOCOL}://{RABBIT_USER_NAME}:{RABBIT_PASSWORD}@{RABBIT_HOST}:{RABBIT_PORT}{RABBIT_VIRTUAL_HOST}"} + if RABBIT_PROTOCOL == "amqps" and RABBIT_HOST else None +) class RunServices: def __init__(self, SERVICE_PORT, PATH_TO_CONF): diff --git a/install/docker/docspace.profiles.yml b/install/docker/docspace.profiles.yml index b6d0a7b75b8..f6fef1cf080 100644 --- a/install/docker/docspace.profiles.yml +++ b/install/docker/docspace.profiles.yml @@ -45,6 +45,7 @@ x-service: &x-service-base ELK_HOST: ${ELK_HOST} ELK_PORT: ${ELK_PORT} REDIS_CONTAINER_NAME: ${REDIS_CONTAINER_NAME} + RABBIT_PROTOCOL: ${RABBIT_PROTOCOL} REDIS_HOST: ${REDIS_HOST} REDIS_PORT: ${REDIS_PORT} REDIS_USER_NAME: ${REDIS_USER_NAME} diff --git a/install/docker/docspace.yml b/install/docker/docspace.yml index 562b7391aaa..dbb3c2331e1 100644 --- a/install/docker/docspace.yml +++ b/install/docker/docspace.yml @@ -42,6 +42,7 @@ x-service: &x-service-base REDIS_USER_NAME: ${REDIS_USER_NAME} REDIS_PASSWORD: ${REDIS_PASSWORD} RABBIT_CONTAINER_NAME: ${RABBIT_CONTAINER_NAME} + RABBIT_PROTOCOL: ${RABBIT_PROTOCOL} RABBIT_HOST: ${RABBIT_HOST} RABBIT_PORT: ${RABBIT_PORT} RABBIT_VIRTUAL_HOST: ${RABBIT_VIRTUAL_HOST} diff --git a/install/docker/notify.yml b/install/docker/notify.yml index ae5de46949f..945d7eda7bb 100644 --- a/install/docker/notify.yml +++ b/install/docker/notify.yml @@ -43,6 +43,7 @@ x-service: REDIS_USER_NAME: ${REDIS_USER_NAME} REDIS_PASSWORD: ${REDIS_PASSWORD} RABBIT_CONTAINER_NAME: ${RABBIT_CONTAINER_NAME} + RABBIT_PROTOCOL: ${RABBIT_PROTOCOL} RABBIT_HOST: ${RABBIT_HOST} RABBIT_PORT: ${RABBIT_PORT} RABBIT_VIRTUAL_HOST: ${RABBIT_VIRTUAL_HOST}