From 42535e14ab5bd7f731ae9b2e68d47080dcb084bb Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 10 May 2025 17:23:51 -0400 Subject: [PATCH] (fix) Documenso: fix build failures (#4382) - change build command - change port in ENV file; remove unneeded sed cmds - change systemd service file - ensure turbo daemon is stopped to prevent hang on exit --- ct/documenso.sh | 83 +++++++++++++++++++----------------- install/documenso-install.sh | 53 +++++++++++------------ 2 files changed, 70 insertions(+), 66 deletions(-) diff --git a/ct/documenso.sh b/ct/documenso.sh index 708767784..2a45e8149 100644 --- a/ct/documenso.sh +++ b/ct/documenso.sh @@ -20,46 +20,51 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/documenso ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop documenso - msg_ok "${APP} Stopped" - - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/documenso/.env /opt/ - rm -rf /opt/documenso - cd /opt - curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip - unzip -q v${RELEASE}.zip - mv documenso-${RELEASE} /opt/documenso - cd /opt/documenso - mv /opt/.env /opt/documenso/.env - $STD npm install - $STD npm run build:web - $STD npm run prisma:migrate-deploy - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" - - msg_info "Starting ${APP}" - systemctl start documenso - msg_ok "Started ${APP}" - - msg_info "Cleaning Up" - rm -rf /opt/v${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/documenso ]]; then + msg_error "No ${APP} Installation Found!" exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop documenso + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/documenso/.env /opt/ + rm -rf /opt/documenso + cd /opt + curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip + unzip -q v${RELEASE}.zip + mv documenso-${RELEASE} /opt/documenso + cd /opt/documenso + mv /opt/.env /opt/documenso/.env + export TURBO_CACHE=1 + export NEXT_TELEMETRY_DISABLED=1 + export CYPRESS_INSTALL_BINARY=0 + export NODE_OPTIONS="--max-old-space-size=4096" + $STD npm ci + $STD turbo run build --filter=@documenso/remix + $STD npm run prisma:migrate-deploy + $STD turbo daemon stop + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start documenso + msg_ok "Started ${APP}" + + msg_info "Cleaning Up" + rm -rf /opt/v${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start diff --git a/install/documenso-install.sh b/install/documenso-install.sh index 456c6f972..37d658fcb 100644 --- a/install/documenso-install.sh +++ b/install/documenso-install.sh @@ -20,14 +20,14 @@ msg_ok "Setup Functions" msg_info "Installing Dependencies" $STD apt-get install -y \ - gpg \ - libc6 \ - make \ - cmake \ - jq \ - postgresql \ - python3 \ - python3-bcrypt + gpg \ + libc6 \ + make \ + cmake \ + jq \ + postgresql \ + python3 \ + python3-bcrypt msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -52,10 +52,10 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8' $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'" { - echo "Documenso-Credentials" - echo "Database Name: $DB_NAME" - echo "Database User: $DB_USER" - echo "Database Password: $DB_PASS" + echo "Documenso-Credentials" + echo "Database Name: $DB_NAME" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" } >>~/documenso.creds msg_ok "Set up PostgreSQL" @@ -68,24 +68,22 @@ mv documenso-${RELEASE} /opt/documenso cd /opt/documenso mv .env.example /opt/documenso/.env sed -i \ - -e "s|^NEXTAUTH_SECRET=.*|NEXTAUTH_SECRET='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ - -e "s|^NEXT_PRIVATE_ENCRYPTION_KEY=.*|NEXT_PRIVATE_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ - -e "s|^NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=.*|NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ - -e "s|^DOCUMENSO_ENCRYPTION_KEY=.*|DOCUMENSO_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ - -e "s|^DOCUMENSO_ENCRYPTION_SECONDARY_KEY=.*|DOCUMENSO_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ - -e "s|^NEXTAUTH_URL=.*|NEXTAUTH_URL=\"http://${LOCAL_IP}:3000\"|" \ - -e "s|^NEXT_PUBLIC_WEBAPP_URL=.*|NEXT_PUBLIC_WEBAPP_URL='http://${LOCAL_IP}:9000'|" \ - -e "s|^NEXT_PUBLIC_MARKETING_URL=.*|NEXT_PUBLIC_MARKETING_URL=\"http://${LOCAL_IP}:3001\"|" \ - -e "s|^NEXT_PRIVATE_INTERNAL_WEBAPP_URL=.*|NEXT_PRIVATE_INTERNAL_WEBAPP_URL=\"http://${LOCAL_IP}:3000\"|" \ - -e "s|^NEXT_PRIVATE_DATABASE_URL=.*|NEXT_PRIVATE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ - -e "s|^NEXT_PRIVATE_DIRECT_DATABASE_URL=.*|NEXT_PRIVATE_DIRECT_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ - /opt/documenso/.env + -e "s|^NEXTAUTH_SECRET=.*|NEXTAUTH_SECRET='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ + -e "s|^NEXT_PRIVATE_ENCRYPTION_KEY=.*|NEXT_PRIVATE_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ + -e "s|^NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=.*|NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ + -e "s|^DOCUMENSO_ENCRYPTION_KEY=.*|DOCUMENSO_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ + -e "s|^DOCUMENSO_ENCRYPTION_SECONDARY_KEY=.*|DOCUMENSO_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \ + -e "s|^NEXT_PUBLIC_WEBAPP_URL=.*|NEXT_PUBLIC_WEBAPP_URL='http://${LOCAL_IP}:3000'|" \ + -e "s|^NEXT_PRIVATE_INTERNAL_WEBAPP_URL=.*|NEXT_PRIVATE_INTERNAL_WEBAPP_URL=\"http://${LOCAL_IP}:3000\"|" \ + -e "s|^NEXT_PRIVATE_DATABASE_URL=.*|NEXT_PRIVATE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ + -e "s|^NEXT_PRIVATE_DIRECT_DATABASE_URL=.*|NEXT_PRIVATE_DIRECT_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \ + /opt/documenso/.env export TURBO_CACHE=1 export NEXT_TELEMETRY_DISABLED=1 export CYPRESS_INSTALL_BINARY=0 export NODE_OPTIONS="--max-old-space-size=4096" $STD npm ci -$STD npm run build:web +$STD turbo run build --filter=@documenso/remix $STD npm run prisma:migrate-deploy echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Documenso" @@ -103,8 +101,8 @@ Description=Documenso Service After=network.target postgresql.service [Service] -WorkingDirectory=/opt/documenso/apps/web -ExecStart=/usr/bin/npm start +WorkingDirectory=/opt/documenso +ExecStart=/usr/bin/turbo run start --filter=@documenso/remix Restart=always EnvironmentFile=/opt/documenso/.env @@ -118,6 +116,7 @@ motd_ssh customize msg_info "Cleaning up" +$STD turbo daemon stop $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"