diff --git a/.version b/.version index d2daed64e0..a433d02d30 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -3.20.143-lts +3.20.144-lts diff --git a/docker/ce-entrypoint.sh b/docker/ce-entrypoint.sh index b18ab59ffd..8493c9dd2c 100755 --- a/docker/ce-entrypoint.sh +++ b/docker/ce-entrypoint.sh @@ -1,6 +1,12 @@ #!/bin/bash set -e +# Start Redis if not already running (bundled sidecar for single-instance CE) +if ! pgrep -x redis-server > /dev/null 2>&1; then + redis-server /app/redis.conf + echo "Redis started" +fi + if [ -f "./.env" ]; then export $(grep -v '^#' ./.env | xargs -d '\n') || true fi diff --git a/docker/ce-production.Dockerfile b/docker/ce-production.Dockerfile index bbd0130210..965ad98ddf 100644 --- a/docker/ce-production.Dockerfile +++ b/docker/ce-production.Dockerfile @@ -54,7 +54,7 @@ ENV PATH=/usr/local/lib/nodejs/bin:$PATH ENV NODE_ENV=production ENV NODE_OPTIONS="--max-old-space-size=4096" RUN apt-get update && \ - apt-get install -y postgresql-client freetds-dev libaio1 wget && \ + apt-get install -y postgresql-client freetds-dev libaio1 wget redis-server supervisor && \ apt-get -o Dpkg::Options::="--force-confold" upgrade -q -y --force-yes && \ apt-get -y autoremove && \ apt-get -y autoclean @@ -96,12 +96,19 @@ COPY --from=builder /app/server/dist ./app/server/dist COPY ./docker/ce-entrypoint.sh ./app/server/entrypoint.sh -# Define non-sudo user +# Define non-sudo user and set up Redis dirs in one layer (appuser must exist before chown) RUN useradd --create-home --home-dir /home/appuser appuser \ && chown -R appuser:0 /app \ && chown -R appuser:0 /home/appuser \ && chmod u+x /app \ - && chmod -R g=u /app + && chmod -R g=u /app \ + && mkdir -p /var/lib/redis /var/log/redis \ + && chown -R appuser:0 /var/lib/redis /var/log/redis \ + && chmod -R g=u /var/lib/redis /var/log/redis +# Configure Redis — bind to localhost only, daemonized, no persistence needed for CE single-instance +# Written to /app (appuser-owned) to avoid /etc/redis permission issues +RUN printf 'bind 127.0.0.1\nport 6379\nprotected-mode yes\ndaemonize yes\nlogfile /var/log/redis/redis.log\ndir /var/lib/redis\n' \ + > /app/redis.conf # Set npm cache directory ENV npm_config_cache /home/appuser/.npm diff --git a/frontend/.version b/frontend/.version index d2daed64e0..a433d02d30 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -3.20.143-lts +3.20.144-lts diff --git a/plugins/package-lock.json b/plugins/package-lock.json index 3a275ac772..acb7b305bb 100644 --- a/plugins/package-lock.json +++ b/plugins/package-lock.json @@ -9240,7 +9240,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, "license": "MIT" }, "node_modules/cosmiconfig": { @@ -9784,6 +9783,45 @@ "node": ">= 0.4" } }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/duplexify": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", @@ -10940,7 +10978,6 @@ "version": "11.3.4", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -12818,7 +12855,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -13840,7 +13876,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -17410,7 +17445,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, "license": "MIT" }, "node_modules/proggy": { @@ -20538,12 +20572,30 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, + "node_modules/unzipper": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz", + "integrity": "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==", + "license": "MIT", + "dependencies": { + "bluebird": "~3.7.2", + "duplexer2": "~0.1.4", + "fs-extra": "^11.2.0", + "graceful-fs": "^4.2.2", + "node-int64": "^0.4.0" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -22154,7 +22206,8 @@ "@tooljet-plugins/common": "file:../common", "knex": "^3.1.0", "oracledb": "^6.0.0", - "react": "^17.0.2" + "react": "^17.0.2", + "unzipper": "^0.12.3" }, "devDependencies": { "@types/oracledb": "^5.2.2" diff --git a/server/.version b/server/.version index d2daed64e0..a433d02d30 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -3.20.143-lts +3.20.144-lts