@@ -20,52 +20,52 @@ color
2020catch_errors
2121
2222function update_script() {
23- header_info
24- check_container_storage
25- check_container_resources
23+ header_info
24+ check_container_storage
25+ check_container_resources
2626
27- if [[ ! -d /opt/actualbudget ]]; then
28- msg_error " No ${APP} Installation Found!"
29- exit
27+ if [[ ! -d /opt/actualbudget ]]; then
28+ msg_error " No ${APP} Installation Found!"
29+ exit
30+ fi
31+
32+ RELEASE=$( curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep " tag_name" | awk ' {print substr($2, 3, length($2)-4) }' )
33+ if [[ ! -f /opt/actualbudget_version.txt ]] || [[ " ${RELEASE} " != " $( cat /opt/actualbudget_version.txt) " ]]; then
34+ msg_info " Stopping ${APP} "
35+ systemctl stop actualbudget
36+ msg_ok " ${APP} Stopped"
37+
38+ msg_info " Updating ${APP} to ${RELEASE} "
39+ cd /tmp || exit
40+ curl -fsSL " https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE} .tar.gz" -o " v${RELEASE} .tar.gz"
41+
42+ mv /opt/actualbudget /opt/actualbudget_bak
43+ tar -xzf " v${RELEASE} .tar.gz"
44+ mv " actual-${RELEASE} " /opt/actualbudget
45+
46+ mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
47+ for dir in server-files .migrate user-files migrations; do
48+ if [[ -d /opt/actualbudget_bak/$dir ]]; then
49+ mv /opt/actualbudget_bak/$dir /* /opt/actualbudget-data/$dir / || true
50+ fi
51+ done
52+ if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
53+ sed -i ' s/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
54+ sed -i ' s/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
55+ fi
56+ if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
57+ mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
58+ fi
59+
60+ if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
61+ mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
62+ mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
3063 fi
3164
32- RELEASE=$( curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep " tag_name" | awk ' {print substr($2, 3, length($2)-4) }' )
33- if [[ ! -f /opt/actualbudget_version.txt ]] || [[ " ${RELEASE} " != " $( cat /opt/actualbudget_version.txt) " ]]; then
34- msg_info " Stopping ${APP} "
35- systemctl stop actualbudget
36- msg_ok " ${APP} Stopped"
37-
38- msg_info " Updating ${APP} to ${RELEASE} "
39- cd /tmp
40- curl -fsSL -O https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE} .tar.gz
41-
42- mv /opt/actualbudget /opt/actualbudget_bak
43- tar -xzf " v${RELEASE} .tar.gz"
44- mv actual-${RELEASE} /opt/actualbudget
45-
46- mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
47- for dir in server-files .migrate user-files migrations; do
48- if [[ -d /opt/actualbudget_bak/$dir ]]; then
49- mv /opt/actualbudget_bak/$dir /* /opt/actualbudget-data/$dir / || true
50- fi
51- done
52- if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
53- sed -i ' s/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
54- sed -i ' s/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
55- fi
56- if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
57- mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
58- fi
59-
60- if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
61- mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
62- mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
63- fi
64-
65- if [[ -f /opt/actualbudget_bak/.env ]]; then
66- mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
67- else
68- cat << EOF >/opt/actualbudget-data/.env
65+ if [[ -f /opt/actualbudget_bak/.env ]]; then
66+ mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
67+ else
68+ cat << EOF >/opt/actualbudget-data/.env
6969ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
7070ACTUAL_DATA_DIR=/opt/actualbudget-data
7171ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
@@ -75,14 +75,14 @@ ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1
7575ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
7676ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
7777EOF
78- fi
79- cd /opt/actualbudget
80- $STD yarn workspaces focus @actual-app/sync-server --production
81- echo " ${RELEASE} " > /opt/actualbudget_version.txt
82- msg_ok " Updated ${APP} "
83-
84- msg_info " Starting ${APP} "
85- cat << EOF >/etc/systemd/system/actualbudget.service
78+ fi
79+ cd /opt/actualbudget || exit
80+ $STD yarn workspaces focus @actual-app/sync-server --production
81+ echo " ${RELEASE} " > /opt/actualbudget_version.txt
82+ msg_ok " Updated ${APP} "
83+
84+ msg_info " Starting ${APP} "
85+ cat << EOF >/etc/systemd/system/actualbudget.service
8686[Unit]
8787Description=Actual Budget Service
8888After=network.target
@@ -101,19 +101,19 @@ RestartSec=10
101101WantedBy=multi-user.target
102102EOF
103103
104- systemctl daemon-reload
105- systemctl start actualbudget
106- msg_ok " Started ${APP} "
107-
108- msg_info " Cleaning Up"
109- rm -rf /opt/actualbudget_bak
110- rm -rf " /tmp/v${RELEASE} .tar.gz"
111- msg_ok " Cleaned"
112- msg_ok " Updated Successfully"
113- else
114- msg_ok " No update required. ${APP} is already at ${RELEASE} "
115- fi
116- exit
104+ systemctl daemon-reload
105+ systemctl start actualbudget
106+ msg_ok " Started ${APP} "
107+
108+ msg_info " Cleaning Up"
109+ rm -rf /opt/actualbudget_bak
110+ rm -rf " /tmp/v${RELEASE} .tar.gz"
111+ msg_ok " Cleaned"
112+ msg_ok " Updated Successfully"
113+ else
114+ msg_ok " No update required. ${APP} is already at ${RELEASE} "
115+ fi
116+ exit
117117}
118118
119119start
@@ -123,4 +123,4 @@ description
123123msg_ok " Completed Successfully!\n"
124124echo -e " ${CREATING}${GN}${APP} setup has been successfully initialized!${CL} "
125125echo -e " ${INFO}${YW} Access it using the following URL:${CL} "
126- echo -e " ${TAB}${GATEWAY}${BGN} https://${IP} :5006${CL} "
126+ echo -e " ${TAB}${GATEWAY}${BGN} https://${IP} :5006${CL} "
0 commit comments