install.sh 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  2. export PATH
  3. # fonts color
  4. Green="\033[32m"
  5. Red="\033[31m"
  6. Yellow="\033[33m"
  7. GreenBG="\033[42;37m"
  8. RedBG="\033[41;37m"
  9. Font="\033[0m"
  10. # fonts color
  11. WORK_PATH=$(dirname $(readlink -f $0))
  12. v2_ui_ssl (){
  13. clear
  14. echo -e "${Green}请输入需要申请证书的根域名(例如:ioiox.com):${Font}"
  15. read -p "请输入:" DOMAIN_INPUT
  16. if [ ! -n "${DOMAIN_INPUT}" ]; then
  17. echo -e "${Red}输入错误,请重新运行脚本.${Font}"
  18. exit 0
  19. fi
  20. DOMAIN=$DOMAIN_INPUT
  21. echo -e "${Green}请选择域名服务商:${Font}"
  22. echo -e "1) 腾讯云 dnspod.cn"
  23. echo -e "2) 阿里云 aliyun"
  24. echo -e "3) Cloudflare"
  25. read -p "请选择:" DNSAPI_INPUT
  26. case "$DNSAPI_INPUT" in
  27. 1)
  28. PLATFORM_NAME='dnspod.cn'
  29. DNSAPI='dns_dp'
  30. API_ID_HEADER='DP_Id'
  31. API_KEY_HEADER='DP_Key'
  32. ;;
  33. 2)
  34. PLATFORM_NAME='aliyun'
  35. DNSAPI='dns_ali'
  36. API_ID_HEADER='Ali_Key'
  37. API_KEY_HEADER='Ali_Secret'
  38. ;;
  39. 3)
  40. ;;
  41. *)
  42. echo -e "${Red}输入错误,请重新运行脚本.${Font}"
  43. exit 0
  44. esac
  45. if [ "$DNSAPI_INPUT" == "3" ]; then
  46. echo -e "${Green}=========================================================================================${Font}"
  47. echo -e "${Red}注意: Cloudflare API 有三种:${Font}"
  48. echo -e "${Red}请参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi#1-cloudflare-option 选择.${Font}"
  49. echo "1) Using the global API key"
  50. echo "2) Using the new cloudflare api token"
  51. echo "3) Using the new cloudflare api token for Single Zone"
  52. read -p "请选择:" CHOICE_CLOUDFLARE_INPUT
  53. echo -e "${Green}=========================================================================================${Font}"
  54. case "$CHOICE_CLOUDFLARE_INPUT" in
  55. 1)
  56. PLATFORM_NAME='Cloudflare'
  57. DNSAPI='dns_cf'
  58. API_ID_HEADER='CF_Key'
  59. API_KEY_HEADER='CF_Email'
  60. ;;
  61. 2)
  62. PLATFORM_NAME='Cloudflare'
  63. DNSAPI='dns_cf'
  64. API_ID_HEADER='CF_Token'
  65. API_KEY_HEADER='CF_Account_ID'
  66. ;;
  67. 3)
  68. PLATFORM_NAME='Cloudflare'
  69. DNSAPI='dns_cf'
  70. API_ID_HEADER='CF_Token'
  71. API_KEY_HEADER='CF_Account_ID'
  72. API_ZONE_HEADER='CF_Zone_ID'
  73. ;;
  74. *)
  75. echo -e "${Red}输入错误,请重新运行脚本.${Font}"
  76. exit 0
  77. esac
  78. fi
  79. read -p "请输入 $API_ID_HEADER :" API_ID_INPUT
  80. read -p "请输入 $API_KEY_HEADER :" API_KEY_INPUT
  81. if [ "$CHOICE_CLOUDFLARE_INPUT" == "3" ]; then
  82. read -p "请输入 $API_ZONE_HEADER :" API_ZONE_HEADER_INPUT
  83. fi
  84. echo -e "${Green}=========================================================================================${Font}"
  85. echo -e "${Red}请确认以下信息正确无误!${Font}"
  86. echo -e "${Green}域名: ${Font}${Red}${DOMAIN}${Font}"
  87. echo -e "${Green}域名服务商: ${Font}${Red}${PLATFORM_NAME}${Font}"
  88. echo -e "${Green}${API_ID_HEADER}:${Font} ${Red}${API_ID_INPUT}${Font}"
  89. echo -e "${Green}${API_KEY_HEADER}:${Font} ${Red}${API_KEY_INPUT}${Font}"
  90. if [ "$CHOICE_CLOUDFLARE_INPUT" == "3" ]; then
  91. echo -e "${Green}${API_ZONE_HEADER}:${Font} ${Red}${API_ZONE_HEADER_INPUT}${Font}"
  92. fi
  93. echo -e "${Red}请再次确认以上信息正确无误!${Font}"
  94. echo -e "${Green}=========================================================================================${Font}"
  95. echo -e "1) 开始部署"
  96. echo -e "2) 退出脚本"
  97. read -p "请输入:" START_INPUT
  98. case "$START_INPUT" in
  99. 1)
  100. echo -e "${Green}开始部署中......${Font}"
  101. accout_conf $*
  102. ;;
  103. 2)
  104. exit 0
  105. ;;
  106. *)
  107. echo -e "${Red}输入有误,请重新运行脚本.${Font}"
  108. exit 0
  109. esac
  110. }
  111. accout_conf (){
  112. WORK_PATH=$(dirname $(readlink -f $0))
  113. wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/v2-ui/v2-ui-ssl/v2-ui-ssl.tar
  114. tar -xvf v2-ui-ssl.tar
  115. cat >${WORK_PATH}/v2-ui-ssl/conf/account.conf<<EOF
  116. export ${API_ID_HEADER}="${API_ID_INPUT}"
  117. export ${API_KEY_HEADER}="${API_KEY_INPUT}"
  118. export DOMAIN=${DOMAIN}
  119. export DNSAPI=${DNSAPI}
  120. EOF
  121. if [ "$CHOICE_CLOUDFLARE_INPUT" == "3" ]; then
  122. sed -i "2a export ${API_ZONE_HEADER}=\"${API_ZONE_HEADER_INPUT}\"" v2-ui-ssl/conf/account.conf
  123. fi
  124. docker_compose_ssl
  125. }
  126. docker_compose_ssl (){
  127. cd v2-ui-ssl
  128. docker-compose up -d
  129. cd ${WORK_PATH}
  130. rm -rf ${WORK_PATH}/v2-ui-ssl.tar
  131. echo -e "${Green}部署完毕,静等 1 分钟查看 ssl 目录下是否生成证书文件.${Font}"
  132. echo -e "${Green}访问 http://服务器IP:65432 使用帐号 admin 密码 admin 登陆,尽快修改帐号密码.${Font}"
  133. rm $0
  134. }
  135. docker_compose_nossl (){
  136. WORK_PATH=$(dirname $(readlink -f $0))
  137. wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/v2-ui/v2-ui-ssl/v2-ui-ssl.tar
  138. tar -xvf v2-ui-ssl.tar
  139. sed -i '8d' ${WORK_PATH}/v2-ui-ssl/docker-compose.yml
  140. sed -i '11,20d' ${WORK_PATH}/v2-ui-ssl/docker-compose.yml
  141. rm -rf ${WORK_PATH}/v2-ui-ssl/conf
  142. mv ${WORK_PATH}/v2-ui-ssl ${WORK_PATH}/v2-ui
  143. cd v2-ui
  144. docker-compose up -d
  145. cd ${WORK_PATH}
  146. rm -rf ${WORK_PATH}/v2-ui-ssl.tar
  147. echo -e "${Green}部署完毕.访问 http://服务器IP:65432 使用帐号 admin 密码 admin 登陆,尽快修改帐号密码.${Font}"
  148. rm $0
  149. }
  150. if ! type docker-compose >/dev/null 2>&1 ; then
  151. echo -e "${Red}本机未安装 docker compose 已退出脚本.${Font}";
  152. exit 0
  153. fi
  154. clear
  155. echo -e "${Green}=========================================================================================${Font}"
  156. echo -e "${Green}开始安装 v2-ui-ssl${Font}"
  157. echo -e "${Red}注意:本脚本需要服务器有 docker 和 docker compose 环境${Font}"
  158. echo -e "${Green}=========================================================================================${Font}"
  159. echo "1) v2-ui + acme 自动申请和续签证书"
  160. echo "2) v2-ui 独立版本"
  161. read -p "请输入:" VS_INPUT
  162. case "$VS_INPUT" in
  163. 1)
  164. v2_ui_ssl
  165. ;;
  166. 2)
  167. docker_compose_nossl
  168. ;;
  169. *)
  170. echo -e "${Red}输入有误,请重新运行脚本.${Font}"
  171. exit 0
  172. esac