Compare commits

..

6 Commits

Author SHA1 Message Date
MickLesk
87c26b56bd fix(reactive-resume): update for v5.1.4 compatibility
- Replace obsolete PRINTER_ENDPOINT with ENCRYPTION_SECRET in .env
  (PDF generation moved client-side in v5.1.0; AI providers require
  ENCRYPTION_SECRET since v5.1.4)
- Add commented REDIS_URL for the new AI Agent workspace (optional)
- Inject ENCRYPTION_SECRET into existing installs on update if missing
2026-05-19 10:21:22 +02:00
MickLesk
81737f733f fix(reactive-resume): use pnpm deploy instead of cp -rL for runtime externals
cp -rL follows pnpm's circular symlink chains (sharp, @aws-sdk both have
pkg/node_modules/pkg loops in the virtual store) causing infinite path
recursion and 'File name too long' errors.

Use pnpm deploy --legacy which is exactly what the upstream Dockerfile does:
it creates a flat, real-file node_modules with no symlinks. cp -r (no -L)
then copies it cleanly into apps/web/node_modules/.
2026-05-19 10:08:26 +02:00
MickLesk
6181e5aad4 fix(reactive-resume): drop @aws-sdk/client-s3 from cp -rL step
@aws-sdk/client-s3 has a pathologically deep pnpm virtual store symlink
tree; cp -rL follows the chain into thousands of nested client-s3 dirs
causing 'File name too long' errors. S3 is an optional storage backend
so skip it. bcrypt, sharp, linkedom and ioredis are unaffected.
2026-05-19 10:04:17 +02:00
MickLesk
0938891e77 fix(reactive-resume): copy runtime externals with cp -rL instead of symlinks
pnpm symlink chains (our link -> packages/runtime-externals/node_modules/
-> pnpm virtual store) are not reliably followed by Node.js ESM resolution.
The upstream Dockerfile uses pnpm deploy which produces real files.
Replicate that by using cp -rL to dereference all symlinks and copy the
actual package files into apps/web/node_modules/.
2026-05-19 09:58:36 +02:00
MickLesk
f52b055350 fix(reactive-resume): use shamefully-hoist to expose pnpm externals
Replace the broken npm-install workaround with a simpler approach:
write shamefully-hoist=true to .npmrc before pnpm install. This causes
pnpm to hoist all packages to root node_modules/, including bcrypt, sharp,
linkedom etc. (deps of @reactive-resume/runtime-externals), making them
resolvable by the Nitro server at runtime.

The upstream repo has no .npmrc, so git reset --hard leaves this file
untouched on updates. The file is written before each pnpm install in
both install and update scripts to ensure it is always in place.
2026-05-19 09:46:37 +02:00
MickLesk
5a322a4593 fix(reactive-resume): install Nitro runtime externals after build
bcrypt, sharp, and linkedom are marked as Rolldown externals in
apps/web/vite.config.ts and belong to the @reactive-resume/runtime-externals
workspace package, but apps/web does not declare that package as a direct
dependency. With pnpm strict node_modules, this means the packages are never
symlinked into apps/web/node_modules/, causing ERR_MODULE_NOT_FOUND at
runtime when the Nitro server tries to import them.

Fix: after pnpm run build, use npm to install the three required packages
directly into apps/web/node_modules/ without modifying package.json.

Applies to both fresh install and update scripts.
2026-05-19 09:42:45 +02:00
12 changed files with 49 additions and 44 deletions

View File

@@ -464,15 +464,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details> </details>
## 2026-05-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update mylar3 to point to new Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14606](https://github.com/community-scripts/ProxmoxVE/pull/14606))
- Ollama: Fix for latest version [@tremor021](https://github.com/tremor021) ([#14596](https://github.com/community-scripts/ProxmoxVE/pull/14596))
## 2026-05-19 ## 2026-05-19
### 🆕 New Scripts ### 🆕 New Scripts
@@ -485,16 +476,11 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🐞 Bug Fixes - #### 🐞 Bug Fixes
- ESPConnect: Fix paths to SSL certificates [@tremor021](https://github.com/tremor021) ([#14591](https://github.com/community-scripts/ProxmoxVE/pull/14591))
- ReactiveResume: set correct WorkingDirectory for systemd service [@MickLesk](https://github.com/MickLesk) ([#14579](https://github.com/community-scripts/ProxmoxVE/pull/14579)) - ReactiveResume: set correct WorkingDirectory for systemd service [@MickLesk](https://github.com/MickLesk) ([#14579](https://github.com/community-scripts/ProxmoxVE/pull/14579))
- Sparkyfitness: add missing nginx template variable substitutions [@MickLesk](https://github.com/MickLesk) ([#14578](https://github.com/community-scripts/ProxmoxVE/pull/14578)) - Sparkyfitness: add missing nginx template variable substitutions [@MickLesk](https://github.com/MickLesk) ([#14578](https://github.com/community-scripts/ProxmoxVE/pull/14578))
- Wanderer: include dev dependencies during build [@MickLesk](https://github.com/MickLesk) ([#14577](https://github.com/community-scripts/ProxmoxVE/pull/14577)) - Wanderer: include dev dependencies during build [@MickLesk](https://github.com/MickLesk) ([#14577](https://github.com/community-scripts/ProxmoxVE/pull/14577))
- Whisparr: switch from nightly to stable GitHub release [@MickLesk](https://github.com/MickLesk) ([#14581](https://github.com/community-scripts/ProxmoxVE/pull/14581)) - Whisparr: switch from nightly to stable GitHub release [@MickLesk](https://github.com/MickLesk) ([#14581](https://github.com/community-scripts/ProxmoxVE/pull/14581))
- #### 🔧 Refactor
- Refactor: SonarQube [@tremor021](https://github.com/tremor021) ([#14594](https://github.com/community-scripts/ProxmoxVE/pull/14594))
## 2026-05-18 ## 2026-05-18
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -22,12 +22,12 @@ catch_errors
function update_script() { function update_script() {
header_info header_info
if [[ ! -d /opt/mylar3 ]]; then if [[ ! -d /opt/mylar3 ]]; then
msg_error "No Mylar3 Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "mylar3" "MylarComics/mylar3"; then if check_for_gh_release "mylar3" "mylar3/mylar3"; then
fetch_and_deploy_gh_release "mylar3" "MylarComics/mylar3" "tarball" fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
systemctl restart mylar3 systemctl restart mylar3
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi

View File

@@ -27,10 +27,7 @@ function update_script() {
msg_error "No Ollama Installation Found!" msg_error "No Ollama Installation Found!"
exit exit
fi fi
if check_for_gh_release "ollama" "ollama/ollama"; then
[[ -f /root/.ollama ]] && rm -f /root/.ollama
if check_for_gh_release "ollama-com" "ollama/ollama"; then
ensure_dependencies zstd ensure_dependencies zstd
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop ollama systemctl stop ollama
@@ -39,7 +36,7 @@ function update_script() {
OLLAMA_INSTALL_DIR="/usr/local/lib/ollama" OLLAMA_INSTALL_DIR="/usr/local/lib/ollama"
rm -rf "$OLLAMA_INSTALL_DIR" /usr/local/bin/ollama rm -rf "$OLLAMA_INSTALL_DIR" /usr/local/bin/ollama
mkdir -p "$OLLAMA_INSTALL_DIR" mkdir -p "$OLLAMA_INSTALL_DIR"
if ! fetch_and_deploy_gh_release "ollama-com" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then
msg_error "Download or deployment failed check network connectivity and GitHub API availability" msg_error "Download or deployment failed check network connectivity and GitHub API availability"
exit 250 exit 250
fi fi

View File

@@ -26,7 +26,6 @@ function update_script() {
check_container_resources check_container_resources
ensure_dependencies zstd build-essential libmariadb-dev ensure_dependencies zstd build-essential libmariadb-dev
[[ -f /root/.ollama ]] && rm -f /root/.ollama
if [[ -d /opt/open-webui ]]; then if [[ -d /opt/open-webui ]]; then
msg_warn "Legacy installation detected — migrating to uv based install..." msg_warn "Legacy installation detected — migrating to uv based install..."
@@ -92,13 +91,13 @@ EOF
if [ -x "/usr/bin/ollama" ]; then if [ -x "/usr/bin/ollama" ]; then
msg_info "Checking for Ollama Update" msg_info "Checking for Ollama Update"
if check_for_gh_release "ollama-com" "ollama/ollama"; then if check_for_gh_release "ollama" "ollama/ollama"; then
msg_info "Stopping Ollama Service" msg_info "Stopping Ollama Service"
systemctl stop ollama systemctl stop ollama
msg_ok "Stopped Service" msg_ok "Stopped Service"
rm -rf /usr/lib/ollama /usr/bin/ollama rm -rf /usr/lib/ollama /usr/bin/ollama
if ! fetch_and_deploy_gh_release "ollama-com" "ollama/ollama" "prebuild" "latest" "/usr/lib/ollama" "ollama-linux-amd64.tar.zst"; then if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "/usr/lib/ollama" "ollama-linux-amd64.tar.zst"; then
msg_error "Ollama download or deployment failed check network connectivity and GitHub API availability" msg_error "Ollama download or deployment failed check network connectivity and GitHub API availability"
else else
ln -sf /usr/lib/ollama/bin/ollama /usr/bin/ollama ln -sf /usr/lib/ollama/bin/ollama /usr/bin/ollama

View File

@@ -48,7 +48,17 @@ function update_script() {
export NODE_ENV="production" export NODE_ENV="production"
$STD pnpm install --frozen-lockfile $STD pnpm install --frozen-lockfile
$STD pnpm run build $STD pnpm run build
msg_info "Deploying Nitro Runtime Externals"
$STD pnpm --filter=@reactive-resume/runtime-externals deploy --prod --legacy /tmp/rr-runtime
cp -r /tmp/rr-runtime/node_modules/. /opt/reactive-resume/apps/web/node_modules/
rm -rf /tmp/rr-runtime
msg_ok "Deployed Nitro Runtime Externals"
mv /opt/reactive-resume.env.bak /opt/reactive-resume/.env mv /opt/reactive-resume.env.bak /opt/reactive-resume/.env
# Inject ENCRYPTION_SECRET if missing (required for AI providers since v5.1.4)
if ! grep -q '^ENCRYPTION_SECRET=' /opt/reactive-resume/.env; then
ENCRYPTION_SECRET=$(openssl rand -hex 32)
echo "ENCRYPTION_SECRET=${ENCRYPTION_SECRET}" >> /opt/reactive-resume/.env
fi
msg_ok "Updated Reactive Resume" msg_ok "Updated Reactive Resume"
msg_info "Updating Service" msg_info "Updating Service"

View File

@@ -39,11 +39,13 @@ function update_script() {
msg_ok "Created Backup" msg_ok "Created Backup"
msg_info "Updating SonarQube" msg_info "Updating SonarQube"
RELEASE=$(curl -fsSL "https://binaries.sonarsource.com/s3api?prefix=Distribution/sonarqube/sonarqube-&delimiter=/" | temp_file=$(mktemp)
grep -oP 'sonarqube-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\.zip' | RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
sort -V | tail -n1) curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
fetch_and_deploy_from_url "https://binaries.sonarsource.com/Distribution/sonarqube/${RELEASE}" /opt/sonarqube unzip -q "$temp_file" -d /opt
echo "${RELEASE}" >~/.sonarqube rm -f "$temp_file"
mv /opt/sonarqube-${RELEASE} /opt/sonarqube
echo "${RELEASE}" > ~/.sonarqube
msg_ok "Updated SonarQube" msg_ok "Updated SonarQube"
msg_info "Restoring Backup" msg_info "Restoring Backup"

View File

@@ -34,8 +34,8 @@ server {
listen 443 ssl default_server; listen 443 ssl default_server;
listen [::]:443 ssl default_server; listen [::]:443 ssl default_server;
ssl_certificate /etc/ssl/espconnect/espconnect.crt; ssl_certificate /etc/ssl/certs/espconnect-selfsigned.crt;
ssl_certificate_key /etc/ssl/espconnect/espconnect.key; ssl_certificate_key /etc/ssl/private/espconnect-selfsigned.key;
ssl_protocols TLSv1.2 TLSv1.3; ssl_protocols TLSv1.2 TLSv1.3;
root /opt/espconnect; root /opt/espconnect;

View File

@@ -24,16 +24,16 @@ $STD apt update
$STD apt install -y unrar $STD apt install -y unrar
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PYTHON_VERSION="3.11" setup_uv PYTHON_VERSION="3.12" setup_uv
fetch_and_deploy_gh_release "mylar3" "MylarComics/mylar3" "tarball" fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
msg_info "Installing Mylar3" msg_info "Installing ${APPLICATION}"
mkdir -p /opt/mylar3-data mkdir -p /opt/mylar3-data
$STD uv venv --clear /opt/mylar3/.venv $STD uv venv --clear /opt/mylar3/.venv
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade $STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip $STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
$STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt $STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
msg_ok "Installed Mylar3" msg_ok "Installed ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mylar3.service cat <<EOF >/etc/systemd/system/mylar3.service

View File

@@ -65,7 +65,7 @@ msg_info "Installing Ollama (Patience)"
OLLAMA_INSTALL_DIR="/usr/local/lib/ollama" OLLAMA_INSTALL_DIR="/usr/local/lib/ollama"
BINDIR="/usr/local/bin" BINDIR="/usr/local/bin"
mkdir -p "$OLLAMA_INSTALL_DIR" mkdir -p "$OLLAMA_INSTALL_DIR"
if ! fetch_and_deploy_gh_release "ollama-com" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then
msg_error "Failed to download or deploy Ollama check network connectivity and GitHub API availability" msg_error "Failed to download or deploy Ollama check network connectivity and GitHub API availability"
exit 250 exit 250
fi fi

View File

@@ -73,7 +73,7 @@ EOF
msg_ok "Installed Intel® oneAPI Base Toolkit" msg_ok "Installed Intel® oneAPI Base Toolkit"
msg_info "Installing Ollama" msg_info "Installing Ollama"
if ! fetch_and_deploy_gh_release "ollama-com" "ollama/ollama" "prebuild" "latest" "/usr/lib/ollama" "ollama-linux-amd64.tar.zst"; then if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "/usr/lib/ollama" "ollama-linux-amd64.tar.zst"; then
msg_error "Failed to download or deploy Ollama check network connectivity and GitHub API availability" msg_error "Failed to download or deploy Ollama check network connectivity and GitHub API availability"
else else
ln -sf /usr/lib/ollama/bin/ollama /usr/bin/ollama ln -sf /usr/lib/ollama/bin/ollama /usr/bin/ollama

View File

@@ -34,11 +34,17 @@ export NODE_ENV="production"
export CI="true" export CI="true"
$STD pnpm install --frozen-lockfile $STD pnpm install --frozen-lockfile
$STD pnpm run build $STD pnpm run build
msg_info "Deploying Nitro Runtime Externals"
$STD pnpm --filter=@reactive-resume/runtime-externals deploy --prod --legacy /tmp/rr-runtime
cp -r /tmp/rr-runtime/node_modules/. /opt/reactive-resume/apps/web/node_modules/
rm -rf /tmp/rr-runtime
msg_ok "Deployed Nitro Runtime Externals"
mkdir -p /opt/reactive-resume/data mkdir -p /opt/reactive-resume/data
msg_ok "Built Reactive Resume" msg_ok "Built Reactive Resume"
msg_info "Configuring Reactive Resume" msg_info "Configuring Reactive Resume"
AUTH_SECRET=$(openssl rand -hex 32) AUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_SECRET=$(openssl rand -hex 32)
cat <<EOF >/opt/reactive-resume/.env cat <<EOF >/opt/reactive-resume/.env
# Reactive Resume v5 Configuration # Reactive Resume v5 Configuration
@@ -54,8 +60,8 @@ DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAM
# Authentication Secret (do not change after initial setup) # Authentication Secret (do not change after initial setup)
AUTH_SECRET=${AUTH_SECRET} AUTH_SECRET=${AUTH_SECRET}
# Printer (headless Chromium for PDF generation) # Encryption Secret (required for saved AI providers, do not change after initial setup)
PRINTER_ENDPOINT=http://127.0.0.1:9222 ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
# Storage: uses local filesystem (/opt/reactive-resume/data) when S3 is not configured # Storage: uses local filesystem (/opt/reactive-resume/data) when S3 is not configured
# S3_ACCESS_KEY_ID= # S3_ACCESS_KEY_ID=
@@ -78,6 +84,9 @@ PRINTER_ENDPOINT=http://127.0.0.1:9222
# GOOGLE_CLIENT_ID= # GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET= # GOOGLE_CLIENT_SECRET=
# AI Agent (optional, required for the Agent workspace feature)
# REDIS_URL=redis://localhost:6379
# Feature Flags # Feature Flags
# FLAG_DISABLE_SIGNUPS=false # FLAG_DISABLE_SIGNUPS=false
# FLAG_DISABLE_EMAIL_AUTH=false # FLAG_DISABLE_EMAIL_AUTH=false

View File

@@ -17,10 +17,12 @@ PG_VERSION="17" setup_postgresql
PG_DB_NAME="sonarqube" PG_DB_USER="sonarqube" setup_postgresql_db PG_DB_NAME="sonarqube" PG_DB_USER="sonarqube" setup_postgresql_db
msg_info "Setting up SonarQube" msg_info "Setting up SonarQube"
RELEASE=$(curl -s "https://binaries.sonarsource.com/s3api?prefix=Distribution/sonarqube/sonarqube-&delimiter=/" | temp_file=$(mktemp)
grep -oP 'sonarqube-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\.zip' | RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
sort -V | tail -n1) curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
fetch_and_deploy_from_url "https://binaries.sonarsource.com/Distribution/sonarqube/${RELEASE}" /opt/sonarqube unzip -q "$temp_file" -d /opt
rm -f "$temp_file"
mv /opt/sonarqube-* /opt/sonarqube
$STD useradd -r -m -U -d /opt/sonarqube -s /bin/bash sonarqube $STD useradd -r -m -U -d /opt/sonarqube -s /bin/bash sonarqube
chown -R sonarqube:sonarqube /opt/sonarqube chown -R sonarqube:sonarqube /opt/sonarqube
chmod -R 755 /opt/sonarqube chmod -R 755 /opt/sonarqube