zigbee2mqtt-install.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/usr/bin/env bash
  2. set -e
  3. CROSS='\033[1;31m\xE2\x9D\x8C\033[0m'
  4. RD=`echo "\033[01;31m"`
  5. BL=`echo "\033[36m"`
  6. CM='\xE2\x9C\x94\033'
  7. GN=`echo "\033[1;92m"`
  8. CL=`echo "\033[m"`
  9. RETRY_NUM=5
  10. RETRY_EVERY=3
  11. NUM=$RETRY_NUM
  12. echo -en "${GN} Setting up Container OS... "
  13. sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen
  14. locale-gen >/dev/null
  15. while [ "$(hostname -I)" = "" ]; do
  16. 1>&2 echo -en "${CROSS}${RD} No Network! "
  17. sleep $RETRY_EVERY
  18. ((NUM--))
  19. if [ $NUM -eq 0 ]
  20. then
  21. 1>&2 echo -e "${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}"
  22. exit 1
  23. fi
  24. done
  25. echo -e "${CM}${CL} \r"
  26. echo -en "${GN} Network Connected: ${BL}$(hostname -I)${CL} "
  27. echo -e "${CM}${CL} \r"
  28. echo -en "${GN} Updating Container OS... "
  29. apt update &>/dev/null
  30. apt-get -qqy upgrade &>/dev/null
  31. echo -e "${CM}${CL} \r"
  32. echo -en "${GN} Installing Dependencies... "
  33. apt-get install -y curl &>/dev/null
  34. apt-get install -y sudo &>/dev/null
  35. echo -e "${CM}${CL} \r"
  36. echo -en "${GN} Setting up Node.js Repository... "
  37. sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - &>/dev/null
  38. echo -e "${CM}${CL} \r"
  39. echo -en "${GN} Installing Node.js... "
  40. sudo apt-get install -y nodejs git make g++ gcc &>/dev/null
  41. echo -e "${CM}${CL} \r"
  42. echo -en "${GN} Setting up Zigbee2MQTT Repository... "
  43. sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt &>/dev/null
  44. echo -e "${CM}${CL} \r"
  45. echo -en "${GN} Installing Zigbee2MQTT... "
  46. cd /opt/zigbee2mqtt &>/dev/null
  47. npm ci &>/dev/null
  48. echo -e "${CM}${CL} \r"
  49. service_path="/etc/systemd/system/zigbee2mqtt.service"
  50. echo "[Unit]
  51. Description=zigbee2mqtt
  52. After=network.target
  53. [Service]
  54. ExecStart=/usr/bin/npm start
  55. WorkingDirectory=/opt/zigbee2mqtt
  56. StandardOutput=inherit
  57. StandardError=inherit
  58. Restart=always
  59. User=root
  60. [Install]
  61. WantedBy=multi-user.target" > $service_path
  62. echo -en "${GN} Customizing Container... "
  63. rm /etc/motd
  64. rm /etc/update-motd.d/10-uname
  65. touch ~/.hushlogin
  66. GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf"
  67. mkdir -p $(dirname $GETTY_OVERRIDE)
  68. cat << EOF > $GETTY_OVERRIDE
  69. [Service]
  70. ExecStart=
  71. ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM
  72. EOF
  73. systemctl daemon-reload
  74. systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
  75. echo -e "${CM}${CL} \r"
  76. echo -en "${GN} Cleanup... "
  77. apt-get autoremove >/dev/null
  78. apt-get autoclean >/dev/null
  79. rm -rf /var/{cache,log}/* /var/lib/apt/lists/*
  80. echo -e "${CM}${CL} \n"