navidrome-install.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env bash
  2. # Copyright (c) 2021-2023 tteck
  3. # Author: tteck (tteckster)
  4. # License: MIT
  5. # https://github.com/tteck/Proxmox/raw/main/LICENSE
  6. source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
  7. color
  8. verb_ip6
  9. catch_errors
  10. setting_up_container
  11. network_check
  12. update_os
  13. msg_info "Installing Dependencies (patience)"
  14. $STD apt-get install -y curl
  15. $STD apt-get install -y sudo
  16. $STD apt-get install -y mc
  17. $STD apt-get install -y ffmpeg
  18. msg_ok "Installed Dependencies"
  19. RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest |
  20. grep "tag_name" |
  21. awk '{print substr($2, 3, length($2)-4) }')
  22. msg_info "Installing Navidrome"
  23. install -d -o root -g root /opt/navidrome
  24. install -d -o root -g root /var/lib/navidrome
  25. $STD wget https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_Linux_x86_64.tar.gz -O Navidrome.tar.gz
  26. $STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
  27. chown -R root:root /opt/navidrome
  28. mkdir -p /music
  29. cat <<EOF >/var/lib/navidrome/navidrome.toml
  30. MusicFolder = '/music'
  31. EOF
  32. msg_ok "Installed Navidrome"
  33. msg_info "Creating Service"
  34. service_path="/etc/systemd/system/navidrome.service"
  35. echo "[Unit]
  36. Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
  37. After=remote-fs.target network.target
  38. AssertPathExists=/var/lib/navidrome
  39. [Service]
  40. User=root
  41. Group=root
  42. Type=simple
  43. ExecStart=/opt/navidrome/navidrome --configfile '/var/lib/navidrome/navidrome.toml'
  44. WorkingDirectory=/var/lib/navidrome
  45. TimeoutStopSec=20
  46. KillMode=process
  47. Restart=on-failure
  48. DevicePolicy=closed
  49. NoNewPrivileges=yes
  50. PrivateTmp=yes
  51. PrivateUsers=yes
  52. ProtectControlGroups=yes
  53. ProtectKernelModules=yes
  54. ProtectKernelTunables=yes
  55. RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
  56. RestrictNamespaces=yes
  57. RestrictRealtime=yes
  58. SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
  59. ReadWritePaths=/var/lib/navidrome
  60. ProtectSystem=full
  61. [Install]
  62. WantedBy=multi-user.target" >$service_path
  63. systemctl daemon-reload
  64. $STD systemctl enable --now navidrome.service
  65. msg_ok "Created Service"
  66. motd_ssh
  67. customize
  68. msg_info "Cleaning up"
  69. $STD apt-get autoremove
  70. $STD apt-get autoclean
  71. rm -rf /root/Navidrome.tar.gz
  72. msg_ok "Cleaned"