diff --git a/ct/bookorbit.sh b/ct/bookorbit.sh index 25b19cddf..16e330e24 100644 --- a/ct/bookorbit.sh +++ b/ct/bookorbit.sh @@ -30,6 +30,8 @@ function update_script() { exit fi + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs + if check_for_gh_release "bookorbit" "bookorbit/bookorbit"; then msg_info "Stopping Service" systemctl stop bookorbit @@ -42,7 +44,7 @@ function update_script() { msg_info "Rebuilding Application" cd /opt/bookorbit PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json) - $STD corepack enable + $STD corepack prepare "pnpm@${PNPM_VERSION}" --activate $STD pnpm install --frozen-lockfile $STD pnpm --filter client run build-only @@ -59,7 +61,6 @@ function update_script() { $STD uv pip install --python /opt/bookorbit-python/bin/python -r /opt/bookorbit/server/requirements/kobo-cloudscraper.txt msg_ok "Updated Kobo Python Runtime" - msg_info "Starting Service" systemctl start bookorbit msg_ok "Started Service" diff --git a/ct/databasus.sh b/ct/databasus.sh index e07104331..8e5cc5df9 100644 --- a/ct/databasus.sh +++ b/ct/databasus.sh @@ -30,6 +30,8 @@ function update_script() { exit fi + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs + if check_for_gh_release "databasus" "databasus/databasus"; then msg_info "Stopping Databasus" $STD systemctl stop databasus @@ -70,7 +72,7 @@ function update_script() { msg_info "Updating Databasus" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 cd /opt/databasus/frontend - $STD corepack enable + $STD corepack prepare pnpm@latest --activate $STD pnpm install --frozen-lockfile $STD pnpm run build diff --git a/ct/feishin.sh b/ct/feishin.sh index b13b280e5..4f3f8cd63 100644 --- a/ct/feishin.sh +++ b/ct/feishin.sh @@ -30,6 +30,8 @@ function update_script() { exit fi + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs + if check_for_gh_release "feishin" "jeffvli/feishin"; then create_backup /opt/feishin/.env @@ -38,7 +40,7 @@ function update_script() { msg_info "Rebuilding Feishin Web" cd /opt/feishin #PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/feishin/package.json) - $STD corepack enable + $STD corepack prepare "pnpm@10" --activate $STD pnpm install $STD pnpm run build:web diff --git a/ct/gramps-web.sh b/ct/gramps-web.sh index 287145ec7..04c369452 100644 --- a/ct/gramps-web.sh +++ b/ct/gramps-web.sh @@ -31,7 +31,7 @@ function update_script() { fi PYTHON_VERSION="3.12" setup_uv - NODE_VERSION="22" setup_nodejs + NODE_VERSION="22" NODE_MODULE="corepack" setup_nodejs if check_for_gh_release "gramps-web-api" "gramps-project/gramps-web-api"; then msg_info "Stopping Service" @@ -84,7 +84,7 @@ function update_script() { msg_info "Updating Gramps Web Frontend" cd /opt/gramps-web/frontend export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 - $STD corepack enable + $STD npm install $STD npm run build msg_ok "Updated Gramps Web Frontend" diff --git a/ct/immich.sh b/ct/immich.sh index 5615d267b..53d1d9699 100644 --- a/ct/immich.sh +++ b/ct/immich.sh @@ -168,13 +168,12 @@ EOF setup_uv CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "${RELEASE}" "$SRC_DIR" PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)" - NODE_VERSION="24" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs msg_info "Updating Immich web and microservices" cd "$SRC_DIR"/server export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 export CI=1 - corepack enable # server build export SHARP_IGNORE_GLOBAL_LIBVIPS=true diff --git a/ct/invoiceshelf.sh b/ct/invoiceshelf.sh index 4d62ac6a5..0e6c8fbe7 100644 --- a/ct/invoiceshelf.sh +++ b/ct/invoiceshelf.sh @@ -53,7 +53,7 @@ function update_script() { cd /opt/invoiceshelf $STD composer install --no-dev --optimize-autoloader if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack yarn install $STD corepack yarn build else diff --git a/ct/karakeep.sh b/ct/karakeep.sh index 2cc623d65..c52db636c 100644 --- a/ct/karakeep.sh +++ b/ct/karakeep.sh @@ -89,11 +89,11 @@ EOF fi sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)" - NODE_VERSION="24" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${MODULE_VERSION}" setup_nodejs setup_meilisearch msg_info "Updating Karakeep" - corepack enable + export PUPPETEER_SKIP_DOWNLOAD="true" export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true" export NEXT_TELEMETRY_DISABLED=1 diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 59eb32c04..6fb08596b 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -28,7 +28,7 @@ function update_script() { exit fi if check_for_gh_release "linkwarden" "linkwarden/linkwarden"; then - NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs + NODE_VERSION="22" NODE_MODULE="corepack,yarn@latest" setup_nodejs msg_info "Stopping Service" systemctl stop linkwarden msg_ok "Stopped Service" @@ -54,7 +54,7 @@ function update_script() { fi fi if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack prepare "yarn@${yarn_ver}" --activate || true fi $STD yarn diff --git a/ct/manyfold.sh b/ct/manyfold.sh index 2537736fd..52c9b76c3 100644 --- a/ct/manyfold.sh +++ b/ct/manyfold.sh @@ -29,7 +29,7 @@ function update_script() { exit fi - NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs ensure_dependencies f3d if check_for_gh_release "manyfold" "manyfold3d/manyfold"; then @@ -65,8 +65,6 @@ function update_script() { msg_ok "Restored Data" msg_info "Installing Manyfold" - $STD npm install --global corepack - $STD corepack enable yarn sudo -u manyfold bash -c ' source /opt/manyfold/.env diff --git a/ct/metube.sh b/ct/metube.sh index fbaeee46c..b00f4e833 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -41,7 +41,7 @@ function update_script() { fi fi - NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack,pnpm" setup_nodejs if check_for_gh_release "metube" "alexta69/metube"; then msg_info "Stopping Service" @@ -60,7 +60,7 @@ function update_script() { msg_info "Building Frontend" cd /opt/metube/ui if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack prepare pnpm --activate || true fi echo 'onlyBuiltDependencies=*' >> .npmrc diff --git a/ct/outline.sh b/ct/outline.sh index cf38d4bd2..a67b7ff2e 100644 --- a/ct/outline.sh +++ b/ct/outline.sh @@ -29,7 +29,7 @@ function update_script() { exit fi - NODE_VERSION="24" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs if check_for_gh_release "outline" "outline/outline"; then msg_info "Stopping Services" @@ -48,7 +48,7 @@ function update_script() { export NODE_ENV=development export NODE_OPTIONS="--max-old-space-size=3584" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 - $STD corepack enable + $STD yarn install --immutable export NODE_ENV=production $STD yarn build diff --git a/ct/plane.sh b/ct/plane.sh index 33148a6a9..13c29969c 100644 --- a/ct/plane.sh +++ b/ct/plane.sh @@ -30,6 +30,8 @@ function update_script() { exit 1 fi + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs + if check_for_gh_release "plane" "makeplane/plane"; then msg_info "Stopping Services" systemctl stop plane-api plane-worker plane-beat plane-live plane-space @@ -49,7 +51,7 @@ function update_script() { cd /opt/plane export NODE_OPTIONS="--max-old-space-size=4096" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 - $STD corepack enable pnpm + $STD pnpm install --frozen-lockfile $STD pnpm turbo run build --filter=web --filter=admin --filter=space --filter=live msg_ok "Rebuilt Frontend" diff --git a/ct/reactive-resume.sh b/ct/reactive-resume.sh index 33dada404..e1da974db 100644 --- a/ct/reactive-resume.sh +++ b/ct/reactive-resume.sh @@ -37,13 +37,13 @@ function update_script() { ensure_dependencies git cp /opt/reactive-resume/.env /opt/reactive-resume.env.bak - NODE_VERSION="24" setup_nodejs + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball" "latest" "/opt/reactive-resume" msg_info "Updating Reactive Resume (Patience)" cd /opt/reactive-resume export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 - corepack enable + corepack prepare --activate export CI="true" export NODE_ENV="production" diff --git a/ct/storyteller.sh b/ct/storyteller.sh index a461a6d02..a4f31c5f3 100644 --- a/ct/storyteller.sh +++ b/ct/storyteller.sh @@ -48,7 +48,7 @@ function update_script() { msg_info "Rebuilding Storyteller" cd /opt/storyteller export NODE_OPTIONS="--max-old-space-size=4096" - $STD corepack enable + $STD corepack yarn install --network-timeout 600000 $STD gcc -g -fPIC -rdynamic -shared web/sqlite/uuid.c -o web/sqlite/uuid.c.so export CI=1 diff --git a/ct/twenty.sh b/ct/twenty.sh index 19871062f..eac19594c 100644 --- a/ct/twenty.sh +++ b/ct/twenty.sh @@ -31,6 +31,8 @@ function update_script() { exit fi + NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs + if check_for_gh_release "twenty" "twentyhq/twenty"; then msg_info "Stopping Services" systemctl stop twenty-worker twenty-server @@ -47,7 +49,7 @@ function update_script() { msg_info "Building Application" cd /opt/twenty export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 - $STD corepack enable + $STD corepack prepare yarn@4.9.2 --activate export NODE_OPTIONS="--max-old-space-size=3072" $STD yarn install --immutable || $STD yarn install diff --git a/install/bookorbit-install.sh b/install/bookorbit-install.sh index 48c249a2d..baf220dfb 100644 --- a/install/bookorbit-install.sh +++ b/install/bookorbit-install.sh @@ -22,7 +22,7 @@ msg_ok "Installed Dependencies" PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql PG_DB_NAME="bookorbit" PG_DB_USER="bookorbit" PG_DB_EXTENSIONS="uuid-ossp,pg_trgm,vector" setup_postgresql_db -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs setup_uv fetch_and_deploy_gh_release "bookorbit" "bookorbit/bookorbit" "tarball" @@ -30,7 +30,7 @@ fetch_and_deploy_gh_release "bookorbit" "bookorbit/bookorbit" "tarball" msg_info "Building Application" cd /opt/bookorbit PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json) -$STD corepack enable + $STD corepack prepare "pnpm@${PNPM_VERSION}" --activate $STD pnpm install --frozen-lockfile $STD pnpm --filter client run build-only diff --git a/install/databasus-install.sh b/install/databasus-install.sh index c9808d3e2..1f81d8b0d 100644 --- a/install/databasus-install.sh +++ b/install/databasus-install.sh @@ -23,7 +23,7 @@ msg_ok "Installed Dependencies" PG_VERSION="17" setup_postgresql setup_go -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs msg_info "Installing Database Clients" # Create PostgreSQL version symlinks for compatibility @@ -56,7 +56,7 @@ fetch_and_deploy_gh_release "databasus" "databasus/databasus" "tarball" "latest" msg_info "Building Databasus (Patience)" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 cd /opt/databasus/frontend -$STD corepack enable + $STD corepack prepare pnpm@latest --activate $STD pnpm install --frozen-lockfile $STD pnpm run build diff --git a/install/feishin-install.sh b/install/feishin-install.sh index 68669db7d..6a12898d0 100644 --- a/install/feishin-install.sh +++ b/install/feishin-install.sh @@ -19,14 +19,14 @@ $STD apt install -y \ gettext-base msg_ok "Installed Dependencies" -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs fetch_and_deploy_gh_release "feishin" "jeffvli/feishin" "tarball" msg_info "Building Feishin Web" cd /opt/feishin #PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/feishin/package.json) -$STD corepack enable + $STD corepack prepare "pnpm@10" --activate $STD pnpm install $STD pnpm run build:web diff --git a/install/foldergram-install.sh b/install/foldergram-install.sh index 895a619a8..92b6bef06 100644 --- a/install/foldergram-install.sh +++ b/install/foldergram-install.sh @@ -23,7 +23,7 @@ fetch_and_deploy_gh_release "foldergram" "foldergram/foldergram" "tarball" msg_info "Configuring Foldergram" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable + cd /opt/foldergram $STD pnpm install $STD pnpm run build diff --git a/install/gramps-web-install.sh b/install/gramps-web-install.sh index 7924847a2..f7df3692b 100644 --- a/install/gramps-web-install.sh +++ b/install/gramps-web-install.sh @@ -38,7 +38,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" PYTHON_VERSION="3.12" setup_uv -NODE_VERSION="22" setup_nodejs +NODE_VERSION="22" NODE_MODULE="corepack" setup_nodejs fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api" fetch_and_deploy_gh_release "gramps-web" "gramps-project/gramps-web" "tarball" "latest" "/opt/gramps-web/frontend" @@ -92,7 +92,7 @@ msg_ok "Installed Gramps Addons" cd /opt/gramps-web/frontend export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable + $STD npm install $STD npm run build cd /opt/gramps-web-api diff --git a/install/immich-install.sh b/install/immich-install.sh index 3637fed98..d64589727 100644 --- a/install/immich-install.sh +++ b/install/immich-install.sh @@ -313,14 +313,13 @@ mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache} fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v2.7.5" "$SRC_DIR" PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)" -NODE_VERSION="24" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs msg_info "Installing Immich (patience)" cd "$SRC_DIR"/server export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 export CI=1 -corepack enable # server build export SHARP_IGNORE_GLOBAL_LIBVIPS=true diff --git a/install/invoiceshelf-install.sh b/install/invoiceshelf-install.sh index c604ab2c4..657054f37 100644 --- a/install/invoiceshelf-install.sh +++ b/install/invoiceshelf-install.sh @@ -19,7 +19,7 @@ msg_ok "Installed Dependencies" PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULES="bcmath,gd,intl,xml,zip,pdo_pgsql,mbstring,curl,exif" setup_php setup_composer -NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack,pnpm" setup_nodejs PG_VERSION="16" setup_postgresql PG_DB_NAME="invoiceshelf" PG_DB_USER="invoiceshelf" setup_postgresql_db @@ -40,7 +40,7 @@ sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${PG_DB_PASS}|" .env COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader --no-interaction $STD php artisan key:generate --force if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack pnpm install $STD corepack pnpm run build else diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh index 8c4f6f664..93d9ab841 100644 --- a/install/linkwarden-install.sh +++ b/install/linkwarden-install.sh @@ -19,7 +19,7 @@ $STD apt install -y \ build-essential msg_ok "Installed Dependencies" -NODE_VERSION="22" setup_nodejs +NODE_VERSION="22" NODE_MODULE="corepack" setup_nodejs PG_VERSION="16" setup_postgresql RUST_CRATES="monolith" setup_rust PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db @@ -44,7 +44,7 @@ if [[ -f package.json ]]; then fi fi if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack prepare "yarn@${yarn_ver}" --activate || true fi $STD yarn diff --git a/install/manyfold-install.sh b/install/manyfold-install.sh index 7007fa74d..dfc43b49e 100644 --- a/install/manyfold-install.sh +++ b/install/manyfold-install.sh @@ -27,7 +27,7 @@ msg_ok "Installed Dependencies" setup_imagemagick PG_VERSION="16" setup_postgresql PG_DB_NAME="manyfold" PG_DB_USER="manyfold" setup_postgresql_db -NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app" @@ -66,7 +66,7 @@ gem install bundler bundle install gem install sidekiq gem install foreman -corepack enable yarn + rm -f /opt/manyfold/app/config/credentials.yml.enc corepack prepare $YARN_VERSION --activate corepack use $YARN_VERSION @@ -81,7 +81,7 @@ msg_ok "Configured Manyfold" msg_info "Installing Manyfold" chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold} chmod +x /opt/manyfold/user_setup.sh -$STD npm install --global corepack + $STD sudo -u manyfold bash /opt/manyfold/user_setup.sh rm -f /opt/manyfold/user_setup.sh msg_ok "Installed Manyfold" diff --git a/install/metube-install.sh b/install/metube-install.sh index 734cf583c..ee4a6247b 100644 --- a/install/metube-install.sh +++ b/install/metube-install.sh @@ -23,7 +23,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" PYTHON_VERSION="3.13" setup_uv -NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack,pnpm" setup_nodejs msg_info "Installing Deno" export DENO_INSTALL="/usr/local" @@ -38,7 +38,7 @@ fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest" msg_info "Installing MeTube" cd /opt/metube/ui if command -v corepack >/dev/null 2>&1; then - $STD corepack enable + $STD corepack prepare pnpm --activate || true fi echo 'onlyBuiltDependencies=*' >> .npmrc diff --git a/install/outline-install.sh b/install/outline-install.sh index 9bacffe8f..222fdd016 100644 --- a/install/outline-install.sh +++ b/install/outline-install.sh @@ -20,7 +20,7 @@ $STD apt install -y \ redis msg_ok "Installed Dependencies" -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs PG_VERSION="16" setup_postgresql PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db @@ -39,7 +39,7 @@ sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env export NODE_OPTIONS="--max-old-space-size=3584" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable + $STD yarn install --immutable export NODE_ENV=production sed -i 's/NODE_ENV=development/NODE_ENV=production/g' /opt/outline/.env diff --git a/install/plane-install.sh b/install/plane-install.sh index c0ae16c46..e5fa04712 100644 --- a/install/plane-install.sh +++ b/install/plane-install.sh @@ -32,7 +32,7 @@ $STD apt install -y \ rabbitmq-server msg_ok "Installed Dependencies" -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs PG_VERSION="16" setup_postgresql PG_DB_NAME="plane" PG_DB_USER="plane" setup_postgresql_db @@ -90,7 +90,7 @@ for app in web admin space; do done export NODE_OPTIONS="--max-old-space-size=4096" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable pnpm + $STD pnpm install --frozen-lockfile $STD pnpm turbo run build --filter=web --filter=admin --filter=space --filter=live msg_ok "Built Frontend Apps" diff --git a/install/reactive-resume-install.sh b/install/reactive-resume-install.sh index 1eb864b0f..35cbee5f2 100644 --- a/install/reactive-resume-install.sh +++ b/install/reactive-resume-install.sh @@ -15,7 +15,7 @@ update_os PG_VERSION="16" setup_postgresql PG_DB_NAME="reactive_resume" PG_DB_USER="reactive_resume" setup_postgresql_db -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs msg_info "Installing Dependencies" $STD apt install -y \ @@ -28,7 +28,7 @@ fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "ta msg_info "Building Reactive Resume (Patience)" cd /opt/reactive-resume export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -corepack enable + corepack prepare --activate export NODE_ENV="production" export CI="true" diff --git a/install/storyteller-install.sh b/install/storyteller-install.sh index 3bf66cea6..a3f71fe7d 100644 --- a/install/storyteller-install.sh +++ b/install/storyteller-install.sh @@ -24,7 +24,7 @@ $STD apt install -y \ ffmpeg msg_ok "Installed Dependencies" -NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs +NODE_VERSION="22" NODE_MODULE="corepack,yarn" setup_nodejs fetch_and_deploy_gh_release "readium" "readium/cli" "prebuild" "latest" "/opt/readium" "readium_linux_x86_64.tar.gz" ln -sf /opt/readium/readium /usr/local/bin/readium @@ -32,7 +32,7 @@ fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "ta msg_info "Setting up Storyteller" cd /opt/storyteller -$STD corepack enable + $STD corepack yarn install --network-timeout 600000 $STD gcc -g -fPIC -rdynamic -shared web/sqlite/uuid.c -o web/sqlite/uuid.c.so STORYTELLER_SECRET_KEY=$(openssl rand -base64 32) diff --git a/install/tracearr-install.sh b/install/tracearr-install.sh index f714fb652..a1f6cdc85 100644 --- a/install/tracearr-install.sh +++ b/install/tracearr-install.sh @@ -17,13 +17,13 @@ msg_info "Installing Dependencies" $STD apt install -y redis-server msg_ok "Installed Dependencies" -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs PG_VERSION="18" setup_postgresql msg_info "Installing pnpm" PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/connorgallopo/Tracearr/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]' | cut -d'+' -f1)" export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable pnpm + $STD corepack prepare pnpm@${PNPM_VERSION} --activate msg_ok "Installed pnpm" diff --git a/install/twenty-install.sh b/install/twenty-install.sh index 033b3e140..23819f20d 100644 --- a/install/twenty-install.sh +++ b/install/twenty-install.sh @@ -21,14 +21,14 @@ msg_ok "Installed Dependencies" PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql PG_DB_NAME="twenty_db" PG_DB_USER="twenty" PG_DB_SCHEMA_PERMS="true" PG_DB_EXTENSIONS="vector" setup_postgresql_db -NODE_VERSION="24" setup_nodejs +NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs fetch_and_deploy_gh_release "twenty" "twentyhq/twenty" "tarball" msg_info "Building Application" cd /opt/twenty export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -$STD corepack enable + $STD corepack prepare yarn@4.9.2 --activate yarn install --immutable >/dev/null 2>&1 || $STD yarn install export NODE_OPTIONS="--max-old-space-size=4096" diff --git a/install/wger-install.sh b/install/wger-install.sh index 213c29f38..dabdfd1e1 100644 --- a/install/wger-install.sh +++ b/install/wger-install.sh @@ -31,7 +31,7 @@ msg_info "Setting up wger" mkdir -p /opt/wger/{static,media} chmod o+w /opt/wger/media cd /opt/wger -$STD corepack enable + $STD npm install $STD npm run build:css:sass $STD uv venv diff --git a/misc/tools.func b/misc/tools.func index 278a015e9..5baa8bb7a 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -7283,13 +7283,18 @@ EOF # - Optionally installs or updates global npm modules # # Variables: -# NODE_VERSION - Node.js version to install (default: 24 LTS) -# NODE_MODULE - Comma-separated list of global modules (e.g. "yarn,@vue/cli@5.0.0") +# NODE_VERSION - Node.js version to install (default: 24 LTS) +# NODE_MODULE - Comma-separated global modules (e.g. "yarn,corepack,pnpm@10") +# NODE_COREPACK_ENABLE - Run corepack enable after install (default: 1 when corepack is used) # ------------------------------------------------------------------------------ setup_nodejs() { local NODE_VERSION="${NODE_VERSION:-24}" local NODE_MODULE="${NODE_MODULE:-}" + local NODE_COREPACK_ENABLE="${NODE_COREPACK_ENABLE:-1}" + local node_major="${NODE_VERSION%%.*}" + local wants_corepack=0 + local node_setup_ok_msg="" # ALWAYS clean up legacy installations first (nvm, etc.) to prevent conflicts cleanup_legacy_install "nodejs" @@ -7316,18 +7321,17 @@ setup_nodejs() { # Upgrade to the latest minor/patch release from NodeSource $STD apt-get install -y --only-upgrade nodejs 2>/dev/null || true - # Pin npm to 11.11.0 to work around Node.js 22.22.2 regression (nodejs/node#62425) - $STD npm install -g npm@11.11.0 2>/dev/null || true - cache_installed_version "nodejs" "$NODE_VERSION" msg_ok "Update Node.js $NODE_VERSION" else # Scenario 2: Different version installed - clean upgrade if [[ -n "$CURRENT_NODE_VERSION" && "$CURRENT_NODE_VERSION" != "$NODE_VERSION" ]]; then msg_info "Upgrade Node.js from $CURRENT_NODE_VERSION to $NODE_VERSION" + node_setup_ok_msg="Upgrade Node.js to $NODE_VERSION" remove_old_tool_version "nodejs" else msg_info "Setup Node.js $NODE_VERSION" + node_setup_ok_msg="Setup Node.js $NODE_VERSION" fi # Remove ALL Debian nodejs packages BEFORE adding NodeSource repo @@ -7336,6 +7340,7 @@ setup_nodejs() { $STD apt purge -y nodejs nodejs-doc libnode* node-* 2>/dev/null || true $STD apt autoremove -y 2>/dev/null || true $STD apt clean 2>/dev/null || true + msg_ok "Removed Debian-packaged Node.js" fi # Remove any APT pinning (not needed) @@ -7381,17 +7386,19 @@ setup_nodejs() { return 127 fi - # Pin npm to 11.11.0 to work around Node.js 22.22.2 regression (nodejs/node#62425) - local NPM_VERSION - NPM_VERSION=$(npm -v 2>/dev/null || echo "0") - if [[ "$NPM_VERSION" != "0" ]]; then - $STD npm install -g npm@11.11.0 2>/dev/null || { - msg_warn "Failed to update npm to 11.11.0 (continuing with bundled npm $NPM_VERSION)" - } - fi - cache_installed_version "nodejs" "$NODE_VERSION" - msg_ok "Setup Node.js $NODE_VERSION" + msg_ok "$node_setup_ok_msg" + fi + + # Node 22.22.2 bundles npm 10.9.7 which cannot self-upgrade (nodejs/node#62425) + if [[ "$NODE_VERSION" == "22" && "$(npm -v 2>/dev/null)" == "10.9.7" ]]; then + msg_info "Updating npm (Node 22 regression fix)" + $STD npm install -g npm@10.9.8 2>/dev/null || true + if $STD npm install -g npm@latest 2>/dev/null; then + msg_ok "Updated npm ($(npm -v))" + else + msg_warn "npm update failed on Node 22.22.2" + fi fi # Set a safe default heap limit for Node.js builds if not explicitly provided. @@ -7436,12 +7443,18 @@ setup_nodejs() { } # Install global Node modules - if [[ -n "$NODE_MODULE" ]]; then + if [[ -n "$NODE_MODULE" ]] || (( node_major >= 25 )); then + if (( node_major >= 25 )) && [[ ",${NODE_MODULE}," != *",corepack,"* ]] && [[ "$NODE_MODULE" != corepack* ]]; then + NODE_MODULE="${NODE_MODULE:+$NODE_MODULE,}corepack" + fi + IFS=',' read -ra MODULES <<<"$NODE_MODULE" - # Pin pnpm to v10 to avoid breaking changes from newer major versions for i in "${!MODULES[@]}"; do - if [[ "${MODULES[$i]}" =~ ^pnpm(@.*)?$ ]]; then + if [[ "${MODULES[$i]}" == "corepack" || "${MODULES[$i]}" == corepack@* ]]; then + wants_corepack=1 + fi + if [[ "${MODULES[$i]}" == "pnpm" ]]; then MODULES[$i]="pnpm@^10" fi done @@ -7467,33 +7480,43 @@ setup_nodejs() { if $STD npm list -g --depth=0 "$MODULE_NAME" 2>&1 | grep -q "$MODULE_NAME@"; then MODULE_INSTALLED_VERSION="$(npm list -g --depth=0 "$MODULE_NAME" 2>&1 | grep "$MODULE_NAME@" | awk -F@ '{print $2}' 2>/dev/null | tr -d '[:space:]' || echo '')" if [[ "$MODULE_REQ_VERSION" != "latest" && "$MODULE_REQ_VERSION" != "$MODULE_INSTALLED_VERSION" ]]; then - msg_info "Updating $MODULE_NAME from v$MODULE_INSTALLED_VERSION to v$MODULE_REQ_VERSION" - if ! $STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}" 2>/dev/null; then + msg_info "Updating $MODULE_NAME to v$MODULE_REQ_VERSION" + if $STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}" 2>/dev/null; then + msg_ok "Updated $MODULE_NAME" + else msg_warn "Failed to update $MODULE_NAME to version $MODULE_REQ_VERSION" ((failed_modules++)) || true - continue fi elif [[ "$MODULE_REQ_VERSION" == "latest" ]]; then msg_info "Updating $MODULE_NAME to latest version" - if ! $STD npm install -g "${MODULE_NAME}@latest" 2>/dev/null; then + if $STD npm install -g "${MODULE_NAME}@latest" 2>/dev/null; then + msg_ok "Updated $MODULE_NAME" + else msg_warn "Failed to update $MODULE_NAME to latest version" ((failed_modules++)) || true - continue fi fi else msg_info "Installing $MODULE_NAME@$MODULE_REQ_VERSION" - if ! $STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}" 2>/dev/null; then + if $STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}" 2>/dev/null; then + msg_ok "Installed $MODULE_NAME" + else msg_warn "Failed to install $MODULE_NAME@$MODULE_REQ_VERSION" ((failed_modules++)) || true - continue fi fi done - if [[ $failed_modules -eq 0 ]]; then - msg_ok "Installed Node.js modules: $NODE_MODULE" + if (( failed_modules > 0 )); then + msg_warn "$failed_modules Node.js module(s) failed: $NODE_MODULE" + fi + fi + + if [[ "$NODE_COREPACK_ENABLE" == "1" ]] && (( wants_corepack )) && command -v corepack >/dev/null 2>&1; then + msg_info "Enabling corepack" + if $STD corepack enable 2>/dev/null; then + msg_ok "Enabled corepack" else - msg_warn "Installed Node.js modules with $failed_modules failure(s): $NODE_MODULE" + msg_warn "corepack enable failed" fi fi }