From 63d65420a90003d11cc06ae6172a67134d217ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 28 Jul 2025 14:56:54 +0200 Subject: [PATCH] Refactor Navidrome (#6300) --- ct/navidrome.sh | 16 ++---- frontend/public/json/navidrome.json | 76 ++++++++++++++--------------- install/navidrome-install.sh | 15 ++---- 3 files changed, 47 insertions(+), 60 deletions(-) diff --git a/ct/navidrome.sh b/ct/navidrome.sh index b476d82b1..d817a82fc 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -27,27 +27,19 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - 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 + + RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat ~/.navidrome 2>/dev/null)" ]] || [[ ! -f ~/.navidrome ]]; then msg_info "Stopping Services" systemctl stop navidrome msg_ok "Services Stopped" - 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" + fetch_and_deploy_gh_release "navidrome" "navidrome/navidrome" "binary" 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}" diff --git a/frontend/public/json/navidrome.json b/frontend/public/json/navidrome.json index ec2b0ea9c..acfc1e608 100644 --- a/frontend/public/json/navidrome.json +++ b/frontend/public/json/navidrome.json @@ -1,40 +1,40 @@ { - "name": "Navidrome", - "slug": "navidrome", - "categories": [ - 13 - ], - "date_created": "2024-05-02", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 4533, - "documentation": null, - "website": "https://www.navidrome.org/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/navidrome.webp", - "config_path": "/etc/navidrome/navidrome.toml", - "description": "Navidrome is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.", - "install_methods": [ - { - "type": "default", - "script": "ct/navidrome.sh", - "resources": { - "cpu": 2, - "ram": 1024, - "hdd": 4, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "To change Navidrome music folder path, `nano /etc/navidrome/navidrome.toml`", - "type": "info" - } - ] + "name": "Navidrome", + "slug": "navidrome", + "categories": [ + 13 + ], + "date_created": "2024-05-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 4533, + "documentation": "https://www.navidrome.org/docs/", + "website": "https://www.navidrome.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/navidrome.webp", + "config_path": "/etc/navidrome/navidrome.toml", + "description": "Navidrome is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.", + "install_methods": [ + { + "type": "default", + "script": "ct/navidrome.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "To change Navidrome music folder path, `nano /etc/navidrome/navidrome.toml`", + "type": "info" + } + ] } diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh index 0d1fdc167..8f45f46a0 100644 --- a/install/navidrome-install.sh +++ b/install/navidrome-install.sh @@ -14,18 +14,14 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y \ - ffmpeg +$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 -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}" +fetch_and_deploy_gh_release "navidrome" "navidrome/navidrome" "binary" + +msg_info "Starting Navidrome" systemctl enable -q --now navidrome -echo "${RELEASE}" >/opt/Navidrome_version.txt -msg_ok "Installed Navidrome" +msg_ok "Started Navidrome" read -p "${TAB3}Do you want to install filebrowser addon? (y/n) " -n 1 -r if [[ $REPLY =~ ^[Yy]$ ]]; then @@ -36,7 +32,6 @@ motd_ssh customize msg_info "Cleaning up" -rm -f "${TMP_DEB}" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"