_system.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. #!/bin/bash
  2. #
  3. # system management
  4. #######################################
  5. # creando usuario
  6. # Arguments:
  7. # None
  8. #######################################
  9. system_create_user() {
  10. print_banner
  11. printf "${WHITE} 💻 Ahora, vamos a crear el usuario para la instancia....${GRAY_LIGHT}"
  12. printf "\n\n"
  13. sleep 2
  14. sudo su - root <<EOF
  15. sudo useradd -m -s /bin/bash -G sudo deploy
  16. ENCRYPTED_PASS=deploybotmal
  17. echo "deploy:${ENCRYPTED_PASS}" | sudo chpasswd
  18. EOF
  19. sleep 2
  20. }
  21. #######################################
  22. # clones repostorios usando git
  23. # Arguments:
  24. # None
  25. #######################################
  26. system_git_clone() {
  27. print_banner
  28. printf "${WHITE} 💻 Descargando el código de HieChat...${GRAY_LIGHT}"
  29. printf "\n\n"
  30. sleep 2
  31. sudo su - deploy <<EOF
  32. git clone http://hiegit.hiesoft.net/esterlin/HIECHAT.git /home/deploy/${instancia_add}/
  33. EOF
  34. sleep 2
  35. }
  36. #######################################
  37. # Actualizando systema
  38. # Arguments:
  39. # None
  40. #######################################
  41. system_update() {
  42. print_banner
  43. printf "${WHITE} 💻 Actualicemos el sistema de HieChat...${GRAY_LIGHT}"
  44. printf "\n\n"
  45. sleep 2
  46. sudo su - root <<EOF
  47. apt -y update
  48. sudo apt-get install -y npm libxshmfence-dev libgbm-dev wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
  49. EOF
  50. sleep 2
  51. }
  52. #######################################
  53. # Eliminando systema
  54. # Arguments:
  55. # None
  56. #######################################
  57. deletar_tudo() {
  58. print_banner
  59. printf "${WHITE} 💻 Vamos a eliminar HieChat...${GRAY_LIGHT}"
  60. printf "\n\n"
  61. sleep 2
  62. sudo su - root <<EOF
  63. docker container rm redis-${empresa_delete} --force
  64. cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-frontend
  65. cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-backend
  66. cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-frontend
  67. cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-backend
  68. sleep 2
  69. sudo su - postgres
  70. dropuser ${empresa_delete}
  71. dropdb ${empresa_delete}
  72. exit
  73. EOF
  74. sleep 2
  75. sudo su - deploy <<EOF
  76. rm -rf /home/deploy/${empresa_delete}
  77. pm2 delete ${empresa_delete}-frontend ${empresa_delete}-backend
  78. pm2 save
  79. EOF
  80. sleep 2
  81. print_banner
  82. printf "${WHITE} 💻 Eliminación de la instancia/empresa ${empresa_delete} completada con éxito ...${GRAY_LIGHT}"
  83. printf "\n\n"
  84. sleep 2
  85. }
  86. #######################################
  87. # bloquear systema
  88. # Arguments:
  89. # None
  90. #######################################
  91. configurar_bloqueio() {
  92. print_banner
  93. printf "${WHITE} 💻 Bloqueemos HieChat...${GRAY_LIGHT}"
  94. printf "\n\n"
  95. sleep 2
  96. sudo su - deploy <<EOF
  97. pm2 stop ${empresa_bloquear}-backend
  98. pm2 save
  99. EOF
  100. sleep 2
  101. print_banner
  102. printf "${WHITE} 💻 Instancia/Compañía ${empresa_bloquear} bloqueada exitosamente ...${GRAY_LIGHT}"
  103. printf "\n\n"
  104. sleep 2
  105. }
  106. #######################################
  107. # desbloquear systema
  108. # Arguments:
  109. # None
  110. #######################################
  111. configurar_desbloqueio() {
  112. print_banner
  113. printf "${WHITE} 💻 Desbloqueemos HieChat...${GRAY_LIGHT}"
  114. printf "\n\n"
  115. sleep 2
  116. sudo su - deploy <<EOF
  117. pm2 start ${empresa_bloquear}-backend
  118. pm2 save
  119. EOF
  120. sleep 2
  121. print_banner
  122. printf "${WHITE} 💻 Instancia/Compañía ${empresa_bloquear} desbloqueada exitosamente ...${GRAY_LIGHT}"
  123. printf "\n\n"
  124. sleep 2
  125. }
  126. #######################################
  127. # Modificar dominio systema
  128. # Arguments:
  129. # None
  130. #######################################
  131. configurar_dominio() {
  132. print_banner
  133. printf "${WHITE} 💻 Cambiemos los dominios de HieChat...${GRAY_LIGHT}"
  134. printf "\n\n"
  135. sleep 2
  136. sudo su - root <<EOF
  137. cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-frontend
  138. cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-backend
  139. cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-frontend
  140. cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-backend
  141. EOF
  142. sleep 2
  143. sudo su - deploy <<EOF
  144. cd && cd /home/deploy/${empresa_dominio}/frontend
  145. sed -i "1c\REACT_APP_BACKEND_URL=https://${alter_backend_url}" .env
  146. cd && cd /home/deploy/${empresa_dominio}/backend
  147. sed -i "2c\BACKEND_URL=https://${alter_backend_url}" .env
  148. sed -i "3c\FRONTEND_URL=https://${alter_frontend_url}" .env
  149. EOF
  150. sleep 2
  151. backend_hostname=$(echo "${alter_backend_url/https:\/\/}")
  152. sudo su - root <<EOF
  153. cat > /etc/nginx/sites-available/${empresa_dominio}-backend << 'END'
  154. server {
  155. server_name $backend_hostname;
  156. location / {
  157. proxy_pass http://127.0.0.1:${alter_backend_port};
  158. proxy_http_version 1.1;
  159. proxy_set_header Upgrade \$http_upgrade;
  160. proxy_set_header Connection 'upgrade';
  161. proxy_set_header Host \$host;
  162. proxy_set_header X-Real-IP \$remote_addr;
  163. proxy_set_header X-Forwarded-Proto \$scheme;
  164. proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
  165. proxy_cache_bypass \$http_upgrade;
  166. }
  167. }
  168. END
  169. ln -s /etc/nginx/sites-available/${empresa_dominio}-backend /etc/nginx/sites-enabled
  170. EOF
  171. sleep 2
  172. frontend_hostname=$(echo "${alter_frontend_url/https:\/\/}")
  173. sudo su - root << EOF
  174. cat > /etc/nginx/sites-available/${empresa_dominio}-frontend << 'END'
  175. server {
  176. server_name $frontend_hostname;
  177. location / {
  178. proxy_pass http://127.0.0.1:${alter_frontend_port};
  179. proxy_http_version 1.1;
  180. proxy_set_header Upgrade \$http_upgrade;
  181. proxy_set_header Connection 'upgrade';
  182. proxy_set_header Host \$host;
  183. proxy_set_header X-Real-IP \$remote_addr;
  184. proxy_set_header X-Forwarded-Proto \$scheme;
  185. proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
  186. proxy_cache_bypass \$http_upgrade;
  187. }
  188. }
  189. END
  190. ln -s /etc/nginx/sites-available/${empresa_dominio}-frontend /etc/nginx/sites-enabled
  191. EOF
  192. sleep 2
  193. sudo su - root <<EOF
  194. service nginx restart
  195. EOF
  196. sleep 2
  197. backend_domain=$(echo "${backend_url/https:\/\/}")
  198. frontend_domain=$(echo "${frontend_url/https:\/\/}")
  199. sudo su - root <<EOF
  200. certbot -m $deploy_email \
  201. --nginx \
  202. --agree-tos \
  203. --non-interactive \
  204. --domains $backend_domain,$frontend_domain
  205. EOF
  206. sleep 2
  207. print_banner
  208. printf "${WHITE} 💻 El cambio de dominio de la instancia/empresa ${empresa_dominio} se completó correctamente ...${GRAY_LIGHT}"
  209. printf "\n\n"
  210. sleep 2
  211. }
  212. #######################################
  213. # instalar node
  214. # Arguments:
  215. # None
  216. #######################################
  217. system_node_install() {
  218. print_banner
  219. printf "${WHITE} 💻 Instalando nodejs...${GRAY_LIGHT}"
  220. printf "\n\n"
  221. sleep 2
  222. sudo su - root <<EOF
  223. curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
  224. apt-get install -y nodejs
  225. sleep 2
  226. npm install -g npm@latest
  227. sleep 2
  228. sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
  229. wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  230. sudo apt-get update -y && sudo apt-get -y install postgresql
  231. sleep 2
  232. sudo timedatectl set-timezone America/Santo_Domingo
  233. sudo npm install -g pm2
  234. EOF
  235. sleep 2
  236. }
  237. #######################################
  238. # instalar docker
  239. # Arguments:
  240. # None
  241. #######################################
  242. system_docker_install() {
  243. print_banner
  244. printf "${WHITE} 💻 Instalando docker...${GRAY_LIGHT}"
  245. printf "\n\n"
  246. sleep 2
  247. sudo su - root <<EOF
  248. apt install -y apt-transport-https \
  249. ca-certificates curl \
  250. software-properties-common
  251. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
  252. add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
  253. apt install -y docker-ce
  254. EOF
  255. sleep 2
  256. }
  257. #######################################
  258. # Ask for file location containing
  259. # multiple URL for streaming.
  260. # Globals:
  261. # WHITE
  262. # GRAY_LIGHT
  263. # BATCH_DIR
  264. # PROJECT_ROOT
  265. # Arguments:
  266. # None
  267. #######################################
  268. system_puppeteer_dependencies() {
  269. print_banner
  270. printf "${WHITE} 💻 Instalación de dependencias de puppeteer...${GRAY_LIGHT}"
  271. printf "\n\n"
  272. sleep 2
  273. sudo su - root <<EOF
  274. apt-get install -y libxshmfence-dev \
  275. libgbm-dev \
  276. wget \
  277. unzip \
  278. fontconfig \
  279. locales \
  280. gconf-service \
  281. libasound2 \
  282. libatk1.0-0 \
  283. libc6 \
  284. libcairo2 \
  285. libcups2 \
  286. libdbus-1-3 \
  287. libexpat1 \
  288. libfontconfig1 \
  289. libgcc1 \
  290. libgconf-2-4 \
  291. libgdk-pixbuf2.0-0 \
  292. libglib2.0-0 \
  293. libgtk-3-0 \
  294. libnspr4 \
  295. libpango-1.0-0 \
  296. libpangocairo-1.0-0 \
  297. libstdc++6 \
  298. libx11-6 \
  299. libx11-xcb1 \
  300. libxcb1 \
  301. libxcomposite1 \
  302. libxcursor1 \
  303. libxdamage1 \
  304. libxext6 \
  305. libxfixes3 \
  306. libxi6 \
  307. libxrandr2 \
  308. libxrender1 \
  309. libxss1 \
  310. libxtst6 \
  311. ca-certificates \
  312. fonts-liberation \
  313. libappindicator1 \
  314. libnss3 \
  315. lsb-release \
  316. xdg-utils
  317. EOF
  318. sleep 2
  319. }
  320. #######################################
  321. # installar pm2
  322. # Arguments:
  323. # None
  324. #######################################
  325. system_pm2_install() {
  326. print_banner
  327. printf "${WHITE} 💻 Instalando pm2...${GRAY_LIGHT}"
  328. printf "\n\n"
  329. sleep 2
  330. npm install -g pm2
  331. sleep 2
  332. }
  333. #######################################
  334. # installar snapd
  335. # Arguments:
  336. # None
  337. #######################################
  338. system_snapd_install() {
  339. print_banner
  340. printf "${WHITE} 💻 Instalando snapd...${GRAY_LIGHT}"
  341. printf "\n\n"
  342. sleep 2
  343. sudo su - root <<EOF
  344. apt install -y snapd
  345. snap install core
  346. snap refresh core
  347. EOF
  348. sleep 2
  349. }
  350. #######################################
  351. # installs certbot
  352. # Arguments:
  353. # None
  354. #######################################
  355. system_certbot_install() {
  356. print_banner
  357. printf "${WHITE} 💻 Instalando certbot...${GRAY_LIGHT}"
  358. printf "\n\n"
  359. sleep 2
  360. sudo su - root <<EOF
  361. apt-get remove certbot
  362. apt install python3-certbot-nginx -y
  363. ln -s /snap/bin/certbot /usr/bin/certbot
  364. EOF
  365. sleep 2
  366. }
  367. #######################################
  368. # installs nginx
  369. # Arguments:
  370. # None
  371. #######################################
  372. system_nginx_install() {
  373. print_banner
  374. printf "${WHITE} 💻 Instalando nginx...${GRAY_LIGHT}"
  375. printf "\n\n"
  376. sleep 2
  377. sudo su - root <<EOF
  378. apt install -y nginx
  379. rm /etc/nginx/sites-enabled/default
  380. EOF
  381. sleep 2
  382. }
  383. #######################################
  384. # restarts nginx
  385. # Arguments:
  386. # None
  387. #######################################
  388. system_nginx_restart() {
  389. print_banner
  390. printf "${WHITE} 💻 reiniciando nginx...${GRAY_LIGHT}"
  391. printf "\n\n"
  392. sleep 2
  393. sudo su - root <<EOF
  394. service nginx restart
  395. EOF
  396. sleep 2
  397. }
  398. #######################################
  399. # setup for nginx.conf
  400. # Arguments:
  401. # None
  402. #######################################
  403. system_nginx_conf() {
  404. print_banner
  405. printf "${WHITE} 💻 configurando nginx...${GRAY_LIGHT}"
  406. printf "\n\n"
  407. sleep 2
  408. sudo su - root << EOF
  409. cat > /etc/nginx/conf.d/deploy.conf << 'END'
  410. client_max_body_size 100M;
  411. END
  412. EOF
  413. sleep 2
  414. }
  415. #######################################
  416. # installs nginx
  417. # Arguments:
  418. # None
  419. #######################################
  420. system_certbot_setup() {
  421. print_banner
  422. printf "${WHITE} 💻 Configurando certbot...${GRAY_LIGHT}"
  423. printf "\n\n"
  424. sleep 2
  425. backend_domain=$(echo "${backend_url/https:\/\/}")
  426. frontend_domain=$(echo "${frontend_url/https:\/\/}")
  427. sudo su - root <<EOF
  428. certbot -m $deploy_email \
  429. --nginx \
  430. --agree-tos \
  431. --non-interactive \
  432. --domains $backend_domain,$frontend_domain
  433. EOF
  434. sleep 2
  435. }