From e2425b5eb6e8bbb1d95e9a638f4abbdd7e7cbb68 Mon Sep 17 00:00:00 2001 From: Sam Heinz <54530346+asylumexp@users.noreply.github.com> Date: Sat, 7 Mar 2026 19:48:25 +1000 Subject: [PATCH] arm64: add navidrome script --- ct/arm/adguard.sh | 41 ------------ ct/arm/bazarr.sh | 70 --------------------- ct/arm/bentopdf.sh | 62 ------------------ ct/arm/homeassistant.sh | 109 -------------------------------- ct/arm/jellyfin.sh | 52 --------------- ct/arm/kima-hub.sh | 79 ----------------------- ct/arm/lubelogger.sh | 74 ---------------------- ct/arm/pihole.sh | 47 -------------- ct/arm/rdtclient.sh | 63 ------------------- ct/arm/vaultwarden.sh | 119 ----------------------------------- ct/navidrome.sh | 53 ++++++++++++++++ install/navidrome-install.sh | 33 ++++++++++ 12 files changed, 86 insertions(+), 716 deletions(-) delete mode 100644 ct/arm/adguard.sh delete mode 100644 ct/arm/bazarr.sh delete mode 100644 ct/arm/bentopdf.sh delete mode 100644 ct/arm/homeassistant.sh delete mode 100644 ct/arm/jellyfin.sh delete mode 100644 ct/arm/kima-hub.sh delete mode 100644 ct/arm/lubelogger.sh delete mode 100644 ct/arm/pihole.sh delete mode 100644 ct/arm/rdtclient.sh delete mode 100644 ct/arm/vaultwarden.sh create mode 100644 ct/navidrome.sh create mode 100644 install/navidrome-install.sh diff --git a/ct/arm/adguard.sh b/ct/arm/adguard.sh deleted file mode 100644 index f0c2b99d1..000000000 --- a/ct/arm/adguard.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://adguard.com/ - -APP="Adguard" -var_tags="${var_tags:-adblock}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-512}" -var_disk="${var_disk:-2}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/AdGuardHome ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_error "Adguard Home can only be updated via the user interface." - exit -} - -start -build_container -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}:3000${CL}" diff --git a/ct/arm/bazarr.sh b/ct/arm/bazarr.sh deleted file mode 100644 index 7c4642aff..000000000 --- a/ct/arm/bazarr.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.bazarr.media/ - -APP="Bazarr" -var_tags="${var_tags:-arr}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-4}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /var/lib/bazarr/ ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then - apt-get install -y libicu76 &>/dev/null - msg_info "Stopping Service" - systemctl stop bazarr - msg_ok "Stopped Service" - - PYTHON_VERSION="3.12" setup_uv - fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip" - - msg_info "Setup Bazarr" - mkdir -p /var/lib/bazarr/ - chmod 775 /opt/bazarr /var/lib/bazarr/ - # Always ensure venv exists - if [[ ! -d /opt/bazarr/venv/ ]]; then - $STD uv venv --clear /opt/bazarr/venv --python 3.12 - fi - - # Always check and fix service file if needed - if [[ -f /etc/systemd/system/bazarr.service ]] && grep -q "ExecStart=/usr/bin/python3" /etc/systemd/system/bazarr.service; then - sed -i "s|ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py|ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py|g" /etc/systemd/system/bazarr.service - systemctl daemon-reload - fi - sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt - $STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3 - msg_ok "Setup Bazarr" - - msg_info "Starting Service" - systemctl start bazarr - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - exit -} -start -build_container -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}:6767${CL}" diff --git a/ct/arm/bentopdf.sh b/ct/arm/bentopdf.sh deleted file mode 100644 index f7fb63e89..000000000 --- a/ct/arm/bentopdf.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: vhsdream -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/alam00000/bentopdf - -APP="BentoPDF" -var_tags="${var_tags:-pdf-editor}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-4096}" -var_disk="${var_disk:-4}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/bentopdf ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - NODE_VERSION="24" setup_nodejs - - if check_for_gh_release "bentopdf" "alam00000/bentopdf"; then - msg_info "Stopping Service" - systemctl stop bentopdf - msg_ok "Stopped Service" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf" - - msg_info "Updating BentoPDF" - cd /opt/bentopdf - $STD npm ci --no-audit --no-fund - export SIMPLE_MODE=true - $STD npm run build -- --mode production - msg_ok "Updated BentoPDF" - - msg_info "Starting Service" - systemctl start bentopdf - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - exit -} - -start -build_container -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}" diff --git a/ct/arm/homeassistant.sh b/ct/arm/homeassistant.sh deleted file mode 100644 index 918f2d551..000000000 --- a/ct/arm/homeassistant.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.home-assistant.io/ - -APP="Home Assistant" -var_tags="${var_tags:-automation;smarthome}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-16}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /var/lib/docker/volumes/hass_config/_data ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - UPD=$(msg_menu "Home Assistant Update Options" \ - "1" "Update ALL Containers" \ - "2" "Remove ALL Unused Images" \ - "3" "Install HACS" \ - "4" "Install FileBrowser") - - if [ "$UPD" == "1" ]; then - msg_info "Updating All Containers" - CONTAINER_LIST="${1:-$(docker ps -q)}" - for container in ${CONTAINER_LIST}; do - CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container "${container}")" - RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")" - docker pull "${CONTAINER_IMAGE}" - LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")" - if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then - pip install -U runlike - echo "Updating ${container} image ${CONTAINER_IMAGE}" - DOCKER_COMMAND="$(runlike --use-volume-id "${container}")" - docker rm --force "${container}" - eval "${DOCKER_COMMAND}" - fi - done - msg_ok "Updated All Containers" - exit - fi - if [ "$UPD" == "2" ]; then - msg_info "Removing ALL Unused Images" - docker image prune -af - msg_ok "Removed ALL Unused Images" - exit - fi - if [ "$UPD" == "3" ]; then - msg_info "Installing Home Assistant Community Store (HACS)" - $STD apt update - cd /var/lib/docker/volumes/hass_config/_data - $STD bash <(curl -fsSL https://get.hacs.xyz) - msg_ok "Installed Home Assistant Community Store (HACS)" - echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n" - exit - fi - if [ "$UPD" == "4" ]; then - msg_info "Installing FileBrowser" - RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g') - $STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-arm64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin - $STD filebrowser config init -a '0.0.0.0' - $STD filebrowser config set -a '0.0.0.0' - $STD filebrowser users add admin helper-scripts.com --perm.admin - msg_ok "Installed FileBrowser" - - msg_info "Creating Service" - service_path="/etc/systemd/system/filebrowser.service" - echo "[Unit] -Description=Filebrowser -After=network-online.target -[Service] -User=root -WorkingDirectory=/root/ -ExecStart=/usr/local/bin/filebrowser -r / -[Install] -WantedBy=default.target" >$service_path - - $STD systemctl enable --now filebrowser - msg_ok "Created Service" - - msg_ok "Completed successfully!\n" - echo -e "FileBrowser should be reachable by going to the following URL. - ${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n" - exit - fi -} - -start -build_container -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}HA: http://${IP}:8123${CL}" -echo -e "${TAB}${GATEWAY}${BGN}Portainer: https://${IP}:9443${CL}" diff --git a/ct/arm/jellyfin.sh b/ct/arm/jellyfin.sh deleted file mode 100644 index 2bba8fdf8..000000000 --- a/ct/arm/jellyfin.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://jellyfin.org/ - -APP="Jellyfin" -var_tags="${var_tags:-media}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-16}" -var_os="${var_os:-ubuntu}" -var_version="${var_version:-24.04}" -var_unprivileged="${var_unprivileged:-0}" -var_gpu="${var_gpu:-yes}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /usr/lib/jellyfin ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - msg_info "Updating Jellyfin" - ensure_dependencies libjemalloc2 - if [[ ! -f /usr/lib/libjemalloc.so ]]; then - ln -sf /usr/lib/aarch64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so - fi - $STD apt update - $STD apt -y upgrade - $STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server - msg_ok "Updated Jellyfin" - msg_ok "Updated successfully!" - exit -} - -start -build_container -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}:8096${CL}" diff --git a/ct/arm/kima-hub.sh b/ct/arm/kima-hub.sh deleted file mode 100644 index c75230270..000000000 --- a/ct/arm/kima-hub.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/Chevron7Locked/kima-hub - -APP="Kima-Hub" -var_tags="${var_tags:-music;streaming;media}" -var_cpu="${var_cpu:-4}" -var_ram="${var_ram:-8192}" -var_disk="${var_disk:-20}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - - if [[ ! -d /opt/kima-hub ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "kima-hub" "Chevron7Locked/kima-hub"; then - msg_info "Stopping Services" - systemctl stop kima-frontend kima-backend kima-analyzer kima-analyzer-clap - msg_ok "Stopped Services" - - msg_info "Backing up Data" - cp /opt/kima-hub/backend/.env /opt/kima-hub-backend-env.bak - cp /opt/kima-hub/frontend/.env /opt/kima-hub-frontend-env.bak - msg_ok "Backed up Data" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball" - - msg_info "Restoring Data" - cp /opt/kima-hub-backend-env.bak /opt/kima-hub/backend/.env - cp /opt/kima-hub-frontend-env.bak /opt/kima-hub/frontend/.env - rm -f /opt/kima-hub-backend-env.bak /opt/kima-hub-frontend-env.bak - msg_ok "Restored Data" - - msg_info "Rebuilding Backend" - cd /opt/kima-hub/backend - $STD npm install - $STD npm run build - $STD npx prisma generate - $STD npx prisma migrate deploy - msg_ok "Rebuilt Backend" - - msg_info "Rebuilding Frontend" - cd /opt/kima-hub/frontend - $STD npm install - $STD npm run build - msg_ok "Rebuilt Frontend" - - msg_info "Starting Services" - systemctl start kima-backend kima-frontend kima-analyzer kima-analyzer-clap - msg_ok "Started Services" - msg_ok "Updated successfully!" - fi - exit -} - -start -build_container -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}:3030${CL}" diff --git a/ct/arm/lubelogger.sh b/ct/arm/lubelogger.sh deleted file mode 100644 index 5d314abf9..000000000 --- a/ct/arm/lubelogger.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: kristocopani -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://lubelogger.com/ - -APP="LubeLogger" -var_tags="${var_tags:-vehicle;car}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-512}" -var_disk="${var_disk:-2}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /etc/systemd/system/lubelogger.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "lubelogger" "hargata/lubelog"; then - msg_info "Stopping Service" - systemctl stop lubelogger - msg_ok "Stopped Service" - - msg_info "Backing up data" - mkdir -p /tmp/lubeloggerData/data - cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json - cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/ - - # Lubelogger has moved multiples folders to the 'data' folder, and we need to move them before the update to keep the user data - # Github Discussion: https://github.com/hargata/lubelog/discussions/787 - [[ -e /opt/lubelogger/config ]] && cp -r /opt/lubelogger/config /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/translations ]] && cp -r /opt/lubelogger/wwwroot/translations /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/documents ]] && cp -r /opt/lubelogger/wwwroot/documents /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/images ]] && cp -r /opt/lubelogger/wwwroot/images /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/ - rm -rf /opt/lubelogger - msg_ok "Backed up data" - - fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip" - - msg_info "Configuring LubeLogger" - chmod 700 /opt/lubelogger/CarCareTracker - cp -rf /tmp/lubeloggerData/* /opt/lubelogger/ - rm -rf /tmp/lubeloggerData - msg_ok "Configured LubeLogger" - - msg_info "Starting Service" - systemctl start lubelogger - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - exit -} - -start -build_container -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}:5000${CL}" diff --git a/ct/arm/pihole.sh b/ct/arm/pihole.sh deleted file mode 100644 index b16aba5cc..000000000 --- a/ct/arm/pihole.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://pi-hole.net/ - -APP="Pihole" -var_tags="${var_tags:-adblock}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-512}" -var_disk="${var_disk:-2}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /etc/pihole ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_info "Updating PiHole" - set +e - $STD apt update - $STD apt upgrade -y - /usr/local/bin/pihole -up - msg_ok "Updated PiHole" - msg_ok "Updated successfully!" - exit -} - -start -build_container -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}/admin${CL}" diff --git a/ct/arm/rdtclient.sh b/ct/arm/rdtclient.sh deleted file mode 100644 index ad669a2bf..000000000 --- a/ct/arm/rdtclient.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/rogerfar/rdt-client - -APP="RDTClient" -var_tags="${var_tags:-torrent}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-4}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/rdtc/ ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "rdt-client" "rogerfar/rdt-client"; then - msg_info "Stopping Service" - systemctl stop rdtc - msg_ok "Stopped Service" - - msg_info "Creating backup" - mkdir -p /opt/rdtc-backup - cp -R /opt/rdtc/appsettings.json /opt/rdtc-backup/ - msg_ok "Backup created" - - fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip" - cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/ - if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then - $STD apt remove --purge -y dotnet-sdk-8.0 - ensure_dependencies aspnetcore-runtime-9.0 - fi - rm -rf /opt/rdtc-backup - - msg_info "Starting Service" - systemctl start rdtc - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - exit -} - -start -build_container -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}:6500${CL}" diff --git a/ct/arm/vaultwarden.sh b/ct/arm/vaultwarden.sh deleted file mode 100644 index ed03e84bf..000000000 --- a/ct/arm/vaultwarden.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/dani-garcia/vaultwarden - -APP="Vaultwarden" -var_tags="${var_tags:-password-manager}" -var_cpu="${var_cpu:-4}" -var_ram="${var_ram:-6144}" -var_disk="${var_disk:-20}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /etc/systemd/system/vaultwarden.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - VAULT=$(get_latest_github_release "dani-garcia/vaultwarden") - WVRELEASE=$(get_latest_github_release "dani-garcia/bw_web_builds") - - UPD=$(msg_menu "Vaultwarden Update Options" \ - "1" "Update VaultWarden + Web-Vault" \ - "2" "Set Admin Token") - - if [ "$UPD" == "1" ]; then - if check_for_gh_release "vaultwarden" "dani-garcia/vaultwarden"; then - msg_info "Stopping Service" - systemctl stop vaultwarden - msg_ok "Stopped Service" - - fetch_and_deploy_gh_release "vaultwarden" "dani-garcia/vaultwarden" "tarball" "latest" "/tmp/vaultwarden-src" - - msg_info "Updating VaultWarden to $VAULT (Patience)" - cd /tmp/vaultwarden-src - VW_VERSION="$VAULT" - export VW_VERSION - $STD cargo build --features "sqlite,mysql,postgresql" --release - if [[ -f /usr/bin/vaultwarden ]]; then - cp target/release/vaultwarden /usr/bin/ - else - cp target/release/vaultwarden /opt/vaultwarden/bin/ - fi - cd ~ && rm -rf /tmp/vaultwarden-src - msg_ok "Updated VaultWarden to ${VAULT}" - - msg_info "Starting Service" - systemctl start vaultwarden - msg_ok "Started Service" - else - msg_ok "VaultWarden is already up-to-date" - fi - - if check_for_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds"; then - msg_info "Stopping Service" - systemctl stop vaultwarden - msg_ok "Stopped Service" - - msg_info "Updating Web-Vault to $WVRELEASE" - rm -rf /opt/vaultwarden/web-vault - mkdir -p /opt/vaultwarden/web-vault - - fetch_and_deploy_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds" "prebuild" "latest" "/opt/vaultwarden/web-vault" "bw_web_*.tar.gz" - - chown -R root:root /opt/vaultwarden/web-vault/ - msg_ok "Updated Web-Vault to ${WVRELEASE}" - - msg_info "Starting Service" - systemctl start vaultwarden - msg_ok "Started Service" - else - msg_ok "Web-Vault is already up-to-date" - fi - - msg_ok "Updated successfully!" - exit - fi - - if [ "$UPD" == "2" ]; then - if [[ "${PHS_SILENT:-0}" == "1" ]]; then - msg_warn "Set Admin Token requires interactive mode, skipping." - exit - fi - read -r -s -p "Set the ADMIN_TOKEN: " NEWTOKEN - echo "" - if [[ -n "$NEWTOKEN" ]]; then - ensure_dependencies argon2 - TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e) - sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env - if [[ -f /opt/vaultwarden/data/config.json ]]; then - sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json - fi - systemctl restart vaultwarden - msg_ok "Admin token updated" - fi - exit - fi -} - -start -build_container -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}https://${IP}:8000${CL}" diff --git a/ct/navidrome.sh b/ct/navidrome.sh new file mode 100644 index 000000000..f850bb812 --- /dev/null +++ b/ct/navidrome.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/arm64-dev-build/misc/build.func) +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/navidrome/navidrome + +APP="Navidrome" +var_tags="${var_tags:-music}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/navidrome ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "navidrome" "navidrome/navidrome"; then + msg_info "Stopping Services" + systemctl stop navidrome + msg_ok "Services Stopped" + + fetch_and_deploy_gh_release "navidrome" "navidrome/navidrome" "binary" + + msg_info "Starting Services" + systemctl start navidrome + msg_ok "Started Services" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +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}" diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh new file mode 100644 index 000000000..139efbfbd --- /dev/null +++ b/install/navidrome-install.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/navidrome/navidrome + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (Patience)" +$STD apt install -y ffmpeg +msg_ok "Installed Dependencies" + +fetch_and_deploy_gh_release "navidrome" "navidrome/navidrome" "binary" + +msg_info "Starting Navidrome" +systemctl enable -q --now navidrome +msg_ok "Started Navidrome" + +read -p "${TAB3}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 +cleanup_lxc