diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 4661771..5fcf9f9 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://actualbudget.org/ @@ -20,100 +20,41 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources + header_info + check_container_storage + check_container_resources - if [[ ! -d /opt/actualbudget ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop actualbudget - msg_ok "${APP} Stopped" - - msg_info "Updating ${APP} to ${RELEASE}" - cd /tmp - wget -q https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz - - mv /opt/actualbudget /opt/actualbudget_bak - tar -xzf "v${RELEASE}.tar.gz" - mv actual-${RELEASE} /opt/actualbudget - - mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config} - for dir in server-files .migrate user-files migrations; do - if [[ -d /opt/actualbudget_bak/$dir ]]; then - mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ || true - fi - done - if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then - sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations - sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations - fi - if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then - mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite - fi - - if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then - mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key - mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt - fi - - if [[ -f /opt/actualbudget_bak/.env ]]; then - mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env - else - cat </opt/actualbudget-data/.env -ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload -ACTUAL_DATA_DIR=/opt/actualbudget-data -ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files -ACTUAL_USER_FILES=/opt/actualbudget-data/user-files -PORT=5006 -ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7" -ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key -ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt -EOF - fi - cd /opt/actualbudget - $STD yarn workspaces focus @actual-app/sync-server --production - echo "${RELEASE}" >/opt/actualbudget_version.txt - msg_ok "Updated ${APP}" - - msg_info "Starting ${APP}" - cat </etc/systemd/system/actualbudget.service -[Unit] -Description=Actual Budget Service -After=network.target - -[Service] -Type=simple -User=root -Group=root -WorkingDirectory=/opt/actualbudget -EnvironmentFile=/opt/actualbudget-data/.env -ExecStart=/usr/bin/yarn start:server -Restart=always -RestartSec=10 - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl start actualbudget - msg_ok "Started ${APP}" - - msg_info "Cleaning Up" - rm -rf /opt/actualbudget_bak - rm -rf "/tmp/v${RELEASE}.tar.gz" - msg_ok "Cleaned" - msg_ok "Updated Successfully" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi + if [[ ! -d /opt/actualbudget ]]; then + msg_error "No ${APP} Installation Found!" exit + fi + + RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop actualbudget + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + NODE_VERSION="22" + NODE_MODULE="--location=global @actual-app/sync-server" + install_node_and_modules + npm update -g @actual-app/sync-server + msg_ok "Updated ${APP} to ${RELEASE}" + + systemctl daemon-reload + systemctl start actualbudget + msg_ok "Started ${APP}" + + msg_info "Cleaning Up" + rm -rf /opt/actualbudget_bak + rm -rf "/tmp/v${RELEASE}.tar.gz" + 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/actualbudget-install.sh b/install/actualbudget-install.sh index 7403c51..04d7552 100644 --- a/install/actualbudget-install.sh +++ b/install/actualbudget-install.sh @@ -13,57 +13,12 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y \ - tini \ - gpg \ - build-essential -msg_ok "Installed Dependencies" - -msg_info "Setting up Node.js Repository" -mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list -msg_ok "Set up Node.js Repository" - -msg_info "Installing Node.js" -$STD apt-get update -$STD apt-get install -y nodejs -$STD npm install --global yarn -msg_ok "Installed Node.js" - msg_info "Installing Actual Budget" cd /opt -RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz -tar -xzf v${RELEASE}.tar.gz -mv actual-${RELEASE} /opt/actualbudget - -mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config} -chown -R root:root /opt/actualbudget-data -chmod -R 755 /opt/actualbudget-data - -cat </opt/actualbudget-data/.env -ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload -ACTUAL_DATA_DIR=/opt/actualbudget-data -ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files -ACTUAL_USER_FILES=/opt/actualbudget-data/user-files -PORT=5006 -ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7" -ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key -ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt -EOF -cd /opt/actualbudget -$STD yarn workspaces focus @actual-app/sync-server --production -$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <"/opt/actualbudget_version.txt" msg_ok "Installed Actual Budget"