diff --git a/ct/reactive-resume.sh b/ct/reactive-resume.sh index a974326fe..0efa58147 100644 --- a/ct/reactive-resume.sh +++ b/ct/reactive-resume.sh @@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV # Copyright (c) 2021-2025 community-scripts ORG # Author: vhsdream # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://rxresu.me +# Source: https://rxresume.org APP="Reactive-Resume" var_tags="${var_tags:-documents}" @@ -20,80 +20,75 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources + header_info + check_container_storage + check_container_resources - if [[ ! -f /etc/systemd/system/Reactive-Resume.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - RELEASE=$(curl -fsSL https://api.github.com/repos/AmruthPillai/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping services" - systemctl stop Reactive-Resume - msg_ok "Stopped services" - - msg_info "Updating $APP to v${RELEASE}" - cp /opt/${APP}/.env /opt/rxresume.env - res_tmp=$(mktemp) - rm -rf /opt/${APP} - curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -O $res_tmp - $STD unzip $res_tmp - mv ${APP}-${RELEASE}/ /opt/${APP} - cd /opt/${APP} - export PUPPETEER_SKIP_DOWNLOAD="true" - export NEXT_TELEMETRY_DISABLED=1 - export CI="true" - export NODE_ENV="production" - $STD pnpm install --frozen-lockfile - $STD pnpm run build - $STD pnpm run prisma:generate - mv /opt/rxresume.env /opt/${APP}/.env - msg_ok "Updated $APP to v${RELEASE}" - - msg_info "Updating Minio" - systemctl stop minio - cd /tmp - curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb - $STD dpkg -i minio.deb - msg_ok "Updated Minio" - - msg_info "Updating Browserless (Patience)" - systemctl stop browserless - cp /opt/browserless/.env /opt/browserless.env - rm -rf browserless - brwsr_tmp=$(mktemp) - TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }') - curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v${TAG}.zip -O $brwsr_tmp - $STD unzip $brwsr_tmp - mv browserless-${TAG}/ /opt/browserless - cd /opt/browserless - $STD npm install - rm -rf src/routes/{chrome,edge,firefox,webkit} - $STD node_modules/playwright-core/cli.js install --with-deps chromium - $STD npm run build - $STD npm run build:function - $STD npm prune production - mv /opt/browserless.env /opt/browserless/.env - msg_ok "Updated Browserless" - - msg_info "Restarting services" - systemctl start minio Reactive-Resume browserless - msg_ok "Restarted services" - - msg_info "Cleaning Up" - rm -f /tmp/minio.deb - rm -f $brwsr_tmp - rm -f $res_tmp - msg_ok "Cleanup Completed" - - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Update Successful" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" - fi + if [[ ! -f /etc/systemd/system/Reactive-Resume.service ]]; then + msg_error "No $APP Installation Found!" exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then + msg_info "Stopping services" + systemctl stop Reactive-Resume + msg_ok "Stopped services" + + cp /opt/"$APP"/.env /opt/rxresume.env + rm -rf /opt/"$APP" + fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" + msg_info "Updating $APP to v${RELEASE}" + cd /opt/"$APP" + export PUPPETEER_SKIP_DOWNLOAD="true" + export NEXT_TELEMETRY_DISABLED=1 + export CI="true" + export NODE_ENV="production" + $STD pnpm install --frozen-lockfile + $STD pnpm run build + $STD pnpm run prisma:generate + mv /opt/rxresume.env /opt/"$APP"/.env + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Updating Minio" + systemctl stop minio + cd /tmp + curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb + $STD dpkg -i minio.deb + msg_ok "Updated Minio" + + msg_info "Updating Browserless (Patience)" + systemctl stop browserless + cp /opt/browserless/.env /opt/browserless.env + rm -rf /opt/browserless + brwsr_tmp=$(mktemp) + TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }') + curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v"$TAG".zip -o "$brwsr_tmp" + $STD unzip "$brwsr_tmp" + mv browserless-"$TAG"/ /opt/browserless + cd /opt/browserless + $STD npm install + rm -rf src/routes/{chrome,edge,firefox,webkit} + $STD node_modules/playwright-core/cli.js install --with-deps chromium + $STD npm run build + $STD npm run build:function + $STD npm prune production + mv /opt/browserless.env /opt/browserless/.env + msg_ok "Updated Browserless" + + msg_info "Restarting services" + systemctl start minio Reactive-Resume browserless + msg_ok "Restarted services" + + msg_info "Cleaning Up" + rm -f /tmp/minio.deb + rm -f "$brwsr_tmp" + msg_ok "Cleanup Completed" + + msg_ok "Update Successful" + else + msg_ok "No update required. $APP is already at v{$RELEASE}" + fi + exit } start diff --git a/frontend/public/json/reactive-resume.json b/frontend/public/json/reactive-resume.json index 0d86c3159..5c99acfb9 100644 --- a/frontend/public/json/reactive-resume.json +++ b/frontend/public/json/reactive-resume.json @@ -9,8 +9,8 @@ "updateable": true, "privileged": false, "interface_port": 3000, - "documentation": "https://docs.rxresu.me/", - "website": "https://rxresu.me", + "documentation": "https://docs.rxresume.org/", + "website": "https://rxresume.org", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/reactive-resume-light.png", "config_path": "/opt/reactive-resume/.env", "description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.", diff --git a/install/reactive-resume-install.sh b/install/reactive-resume-install.sh index f961c0915..7de63caa4 100644 --- a/install/reactive-resume-install.sh +++ b/install/reactive-resume-install.sh @@ -3,7 +3,7 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: vhsdream # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://rxresu.me +# Source: https://rxresume.org source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color @@ -32,19 +32,16 @@ $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" msg_ok "Set up Database" -msg_info "Installing ${APPLICATION}" +msg_info "Installing $APPLICATION" MINIO_PASS=$(openssl rand -base64 48) ACCESS_TOKEN=$(openssl rand -base64 48) REFRESH_TOKEN=$(openssl rand -base64 48) CHROME_TOKEN=$(openssl rand -hex 32) LOCAL_IP=$(hostname -I | awk '{print $1}') TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }') -RELEASE=$(curl -fsSL https://api.github.com/repos/AmruthPillai/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip -$STD unzip v${RELEASE}.zip -mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION} -cd /opt/${APPLICATION} -corepack enable + +fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" +cd /opt/"$APPLICATION" export CI="true" export PUPPETEER_SKIP_DOWNLOAD="true" export NODE_ENV="production" @@ -53,13 +50,13 @@ $STD pnpm install --frozen-lockfile $STD pnpm run build $STD pnpm install --prod --frozen-lockfile $STD pnpm run prisma:generate -msg_ok "Installed ${APPLICATION}" +msg_ok "Installed $APPLICATION" msg_info "Installing Browserless (Patience)" cd /tmp -curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v${TAG}.zip -o v${TAG}.zip -$STD unzip v${TAG}.zip -mv browserless-${TAG} /opt/browserless +curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v"$TAG".zip -o v"$TAG".zip +$STD unzip v"$TAG".zip +mv browserless-"$TAG" /opt/browserless cd /opt/browserless $STD npm install rm -rf src/routes/{chrome,edge,firefox,webkit} @@ -77,9 +74,10 @@ MINIO_ROOT_PASSWORD="${MINIO_PASS}" MINIO_VOLUMES=/opt/minio MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001" EOF -cat </opt/${APPLICATION}/.env +cat </opt/"$APPLICATION"/.env NODE_ENV=production PORT=3000 +# for use behind a reverse proxy, use your FQDN for PUBLIC_URL and STORAGE_URL PUBLIC_URL=http://${LOCAL_IP}:3000 STORAGE_URL=http://${LOCAL_IP}:9000/rxresume DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}?schema=public @@ -116,14 +114,13 @@ HOST=localhost PORT=8080 TOKEN=${CHROME_TOKEN} EOF -echo "${RELEASE}" >/opt/${APPLICATION}_version.txt { echo "${APPLICATION} Credentials" echo "Database User: $DB_USER" echo "Database Password: $DB_PASS" echo "Database Name: $DB_NAME" echo "Minio Root Password: ${MINIO_PASS}" -} >>~/${APPLICATION}.creds +} >>~/"$APPLICATION".creds msg_ok "Configured applications" msg_info "Creating Services" @@ -136,7 +133,7 @@ WorkingDirectory=/usr/local/bin EnvironmentFile=/opt/minio/.env EOF -cat </etc/systemd/system/${APPLICATION}.service +cat </etc/systemd/system/"$APPLICATION".service [Unit] Description=${APPLICATION} Service After=network.target postgresql.service minio.service @@ -167,15 +164,14 @@ Restart=unless-stopped WantedBy=multi-user.target EOF systemctl daemon-reload -systemctl enable -q --now minio.service ${APPLICATION}.service browserless.service +systemctl enable -q --now minio.service "$APPLICATION".service browserless.service msg_ok "Created Services" motd_ssh customize msg_info "Cleaning up" -rm -f /tmp/v${RELEASE}.zip -rm -f /tmp/v${TAG}.zip +rm -f /tmp/v"$TAG".zip rm -f /tmp/minio.deb $STD apt-get -y autoremove $STD apt-get -y autoclean