diff --git a/ct/navidrome.sh b/ct/navidrome.sh index 45396d480..b476d82b1 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.navidrome.org/ +# Source: https://github.com/navidrome/navidrome APP="Navidrome" var_tags="${var_tags:-music}" @@ -23,27 +23,35 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /opt/navidrome ]]; then + if [[ ! -d /var/lib/navidrome ]]; then msg_error "No ${APP} Installation Found!" exit fi - RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - msg_info "Stopping ${APP}" - systemctl stop navidrome - msg_ok "Stopped Navidrome" + RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk -F '"' '{print $4}') + if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Services" + systemctl stop navidrome + msg_ok "Services Stopped" - msg_info "Updating to v${RELEASE}" - cd /opt -curl -fsSL "https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz" -o "Navidrome.tar.gz" - $STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ - chmod +x /opt/navidrome/navidrome - msg_ok "Updated ${APP}" - rm -rf /opt/Navidrome.tar.gz + msg_info "Updating ${APP} to ${RELEASE}" + TMP_DEB=$(mktemp --suffix=.deb) + curl -fsSL -o "${TMP_DEB}" "https://github.com/navidrome/navidrome/releases/download/${RELEASE}/navidrome_${RELEASE#v}_linux_amd64.deb" + $STD apt-get install -y "${TMP_DEB}" + echo "${RELEASE}" >/opt/"${APP}_version.txt" + msg_ok "Updated Navidrome" - msg_info "Starting ${APP}" - systemctl start navidrome.service - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" + msg_info "Starting Services" + systemctl start navidrome + msg_ok "Started Services" + + msg_info "Cleaning Up" + rm -f "${TMP_DEB}" + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi exit } @@ -54,4 +62,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}:4533${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}" diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh index 04c4af0b9..6e5200a86 100644 --- a/install/navidrome-install.sh +++ b/install/navidrome-install.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.navidrome.org/ +# Source: https://github.com/navidrome/navidrome source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color @@ -13,67 +13,30 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies (patience)" -$STD apt-get install -y ffmpeg +msg_info "Installing Dependencies (Patience)" +$STD apt-get install -y \ + ffmpeg msg_ok "Installed Dependencies" msg_info "Installing Navidrome" -RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -install -d -o root -g root /opt/navidrome -install -d -o root -g root /var/lib/navidrome -curl -fsSL "https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz" -o "Navidrome.tar.gz" -$STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ -chown -R root:root /opt/navidrome -chmod +x /opt/navidrome/navidrome -mkdir -p /music -cat </var/lib/navidrome/navidrome.toml -MusicFolder = '/music' -EOF +RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk -F '"' '{print $4}') +TMP_DEB=$(mktemp --suffix=.deb) +curl -fsSL -o "${TMP_DEB}" "https://github.com/navidrome/navidrome/releases/download/${RELEASE}/navidrome_${RELEASE#v}_linux_amd64.deb" +$STD apt-get install -y "${TMP_DEB}" +systemctl enable -q --now navidrome +echo "${RELEASE}" >/opt/Navidrome_version.txt msg_ok "Installed Navidrome" -msg_info "Creating Service" -service_path="/etc/systemd/system/navidrome.service" - -echo "[Unit] -Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic -After=remote-fs.target network.target -AssertPathExists=/var/lib/navidrome - -[Service] -User=root -Group=root -Type=simple -ExecStart=/opt/navidrome/navidrome --configfile '/var/lib/navidrome/navidrome.toml' -WorkingDirectory=/var/lib/navidrome -TimeoutStopSec=20 -KillMode=process -Restart=on-failure -DevicePolicy=closed -NoNewPrivileges=yes -PrivateTmp=yes -PrivateUsers=yes -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 -RestrictNamespaces=yes -RestrictRealtime=yes -SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap -ReadWritePaths=/var/lib/navidrome -ProtectSystem=full - -[Install] -WantedBy=multi-user.target" >$service_path -systemctl daemon-reload -systemctl enable -q --now navidrome - -msg_ok "Created Service" +read -p "Do you want to install filebrowser addon? (y/n) " -n 1 -r +if [[ $REPLY =~ ^[Yy]$ ]]; then + bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/filebrowser.sh)" +fi motd_ssh customize msg_info "Cleaning up" +rm -f "${TMP_DEB}" $STD apt-get -y autoremove $STD apt-get -y autoclean -rm -rf /root/Navidrome.tar.gz msg_ok "Cleaned"