diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index bb576355..1d245c8a 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.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) +# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://magicmirror.builders/ @@ -27,18 +27,45 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - echo "Installed NPM..." + RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop magicmirror + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + mkdir /opt/magicmirror-backup + cp /opt/magicmirror/config/config.js /opt/magicmirror-backup + if [[ -f /opt/magicmirror/css/custom.css ]]; then + cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup fi + cp -r /opt/magicmirror/modules /opt/magicmirror-backup + temp_file=$(mktemp) + wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" + tar -xzf "$temp_file" + rm -rf /opt/magicmirror + mv MagicMirror-${RELEASE} /opt/magicmirror + cd /opt/magicmirror + npm run install-mm &> /dev/null + cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/ + if [[ -f /opt/magicmirror-backup/custom.css ]]; then + cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/ + fi + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting Service" + systemctl start magicmirror + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -f $temp_file + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." fi - msg_info "Updating ${APP} LXC" - cd /opt/magicmirror - git pull &>/dev/null - npm install --only=prod --omit=dev &>/dev/null - msg_ok "Updated Successfully" exit } @@ -49,4 +76,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/install/magicmirror-install.sh b/install/magicmirror-install.sh index 3a593e42..defa2387 100644 --- a/install/magicmirror-install.sh +++ b/install/magicmirror-install.sh @@ -1,9 +1,10 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://magicmirror.builders/ source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color @@ -14,12 +15,11 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y git -$STD apt-get install -y ca-certificates -$STD apt-get install -y gnupg +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -33,14 +33,14 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Setting up MagicMirror Repository" -$STD git clone https://github.com/MichMich/MagicMirror /opt/magicmirror -msg_ok "Set up MagicMirror Repository" - -msg_info "Installing MagicMirror" +msg_info "Setup MagicMirror" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv MagicMirror-${RELEASE} /opt/magicmirror cd /opt/magicmirror -$STD npm install --only=prod --omit=dev - +$STD npm run install-mm cat </opt/magicmirror/config/config.js let config = { address: "0.0.0.0", @@ -130,11 +130,12 @@ let config = { /*************** DO NOT EDIT THE LINE BELOW ***************/ if (typeof module !== "undefined") {module.exports = config;} EOF -msg_ok "Installed MagicMirror" +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup MagicMirror" msg_info "Creating Service" -service_path="/etc/systemd/system/magicmirror.service" -echo "[Unit] +cat </etc/systemd/system/magicmirror.service +[Unit] Description=Magic Mirror After=network.target StartLimitIntervalSec=0 @@ -145,17 +146,19 @@ Restart=always RestartSec=1 User=root WorkingDirectory=/opt/magicmirror/ -ExecStart=/usr/bin/node serveronly +ExecStart=/usr/bin/npm run server [Install] -WantedBy=multi-user.target" >$service_path -$STD systemctl enable --now magicmirror +WantedBy=multi-user.target +EOF +systemctl enable --now magicmirror msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -rf $temp_file $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"