refactor actualbudg
This commit is contained in:
		
							parent
							
								
									7bb8b52ff3
								
							
						
					
					
						commit
						a9b9d917e4
					
				| @ -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 <<EOF >/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 <<EOF >/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 | ||||
|  | ||||
| @ -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 <<EOF >/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 <<EOF | ||||
| US | ||||
| California | ||||
| San Francisco | ||||
| My Organization | ||||
| My Unit | ||||
| localhost | ||||
| myemail@example.com | ||||
| EOF | ||||
| RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') | ||||
| NODE_VERSION="22" | ||||
| NODE_MODULE="--location=global @actual-app/sync-server" | ||||
| install_node_and_modules | ||||
| echo "${RELEASE}" >"/opt/actualbudget_version.txt" | ||||
| msg_ok "Installed Actual Budget" | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 CanbiZ
						CanbiZ