navidrome-install.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
  20. msg_info "Installing Navidrome"
  21. install -d -o root -g root /opt/navidrome
  22. install -d -o root -g root /var/lib/navidrome
  23. wget -q https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz
  24. $STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
  25. chown -R root:root /opt/navidrome
  26. mkdir -p /music
  27. cat <<EOF >/var/lib/navidrome/navidrome.toml
  28. MusicFolder = '/music'
  29. EOF
  30. msg_ok "Installed Navidrome"
  31. msg_info "Creating Service"
  32. service_path="/etc/systemd/system/navidrome.service"
  33. echo "[Unit]
  34. Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
  35. After=remote-fs.target network.target
  36. AssertPathExists=/var/lib/navidrome
  37. [Service]
  38. User=root
  39. Group=root
  40. Type=simple
  41. ExecStart=/opt/navidrome/navidrome --configfile '/var/lib/navidrome/navidrome.toml'
  42. WorkingDirectory=/var/lib/navidrome
  43. TimeoutStopSec=20
  44. KillMode=process
  45. Restart=on-failure
  46. DevicePolicy=closed
  47. NoNewPrivileges=yes
  48. PrivateTmp=yes
  49. PrivateUsers=yes
  50. ProtectControlGroups=yes
  51. ProtectKernelModules=yes
  52. ProtectKernelTunables=yes
  53. RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
  54. RestrictNamespaces=yes
  55. RestrictRealtime=yes
  56. SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
  57. ReadWritePaths=/var/lib/navidrome
  58. ProtectSystem=full
  59. [Install]
  60. WantedBy=multi-user.target" >$service_path
  61. systemctl daemon-reload
  62. $STD systemctl enable --now navidrome.service
  63. msg_ok "Created Service"
  64. motd_ssh
  65. customize
  66. msg_info "Cleaning up"
  67. $STD apt-get autoremove
  68. $STD apt-get autoclean
  69. rm -rf /root/Navidrome.tar.gz
  70. msg_ok "Cleaned"