|
|
@@ -0,0 +1,544 @@
|
|
|
+#!/bin/bash
|
|
|
+#
|
|
|
+# system management
|
|
|
+
|
|
|
+#######################################
|
|
|
+# creando usuario
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_create_user() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Ahora, vamos a crear el usuario para la instancia....${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ sudo useradd -m -s /bin/bash -G sudo deploy
|
|
|
+
|
|
|
+ ENCRYPTED_PASS=deploybotmal
|
|
|
+
|
|
|
+ echo "deploy:${ENCRYPTED_PASS}" | sudo chpasswd
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# clones repostorios usando git
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_git_clone() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Descargando el código de HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - deploy <<EOF
|
|
|
+ git clone http://hiegit.hiesoft.net/esterlin/HIECHAT.git /home/deploy/${instancia_add}/
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# Actualizando systema
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_update() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Actualicemos el sistema de HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt -y update
|
|
|
+ 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
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#######################################
|
|
|
+# Eliminando systema
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+deletar_tudo() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Vamos a eliminar HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ docker container rm redis-${empresa_delete} --force
|
|
|
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-frontend
|
|
|
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_delete}-backend
|
|
|
+ cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-frontend
|
|
|
+ cd && rm -rf /etc/nginx/sites-available/${empresa_delete}-backend
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - postgres
|
|
|
+ dropuser ${empresa_delete}
|
|
|
+ dropdb ${empresa_delete}
|
|
|
+ exit
|
|
|
+EOF
|
|
|
+
|
|
|
+sleep 2
|
|
|
+
|
|
|
+sudo su - deploy <<EOF
|
|
|
+ rm -rf /home/deploy/${empresa_delete}
|
|
|
+ pm2 delete ${empresa_delete}-frontend ${empresa_delete}-backend
|
|
|
+ pm2 save
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Eliminación de la instancia/empresa ${empresa_delete} completada con éxito ...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# bloquear systema
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+configurar_bloqueio() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Bloqueemos HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+sudo su - deploy <<EOF
|
|
|
+ pm2 stop ${empresa_bloquear}-backend
|
|
|
+ pm2 save
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instancia/Compañía ${empresa_bloquear} bloqueada exitosamente ...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+#######################################
|
|
|
+# desbloquear systema
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+configurar_desbloqueio() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Desbloqueemos HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+sudo su - deploy <<EOF
|
|
|
+ pm2 start ${empresa_bloquear}-backend
|
|
|
+ pm2 save
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instancia/Compañía ${empresa_bloquear} desbloqueada exitosamente ...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# Modificar dominio systema
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+configurar_dominio() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Cambiemos los dominios de HieChat...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-frontend
|
|
|
+ cd && rm -rf /etc/nginx/sites-enabled/${empresa_dominio}-backend
|
|
|
+ cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-frontend
|
|
|
+ cd && rm -rf /etc/nginx/sites-available/${empresa_dominio}-backend
|
|
|
+EOF
|
|
|
+
|
|
|
+sleep 2
|
|
|
+
|
|
|
+ sudo su - deploy <<EOF
|
|
|
+ cd && cd /home/deploy/${empresa_dominio}/frontend
|
|
|
+ sed -i "1c\REACT_APP_BACKEND_URL=https://${alter_backend_url}" .env
|
|
|
+ cd && cd /home/deploy/${empresa_dominio}/backend
|
|
|
+ sed -i "2c\BACKEND_URL=https://${alter_backend_url}" .env
|
|
|
+ sed -i "3c\FRONTEND_URL=https://${alter_frontend_url}" .env
|
|
|
+EOF
|
|
|
+
|
|
|
+sleep 2
|
|
|
+
|
|
|
+ backend_hostname=$(echo "${alter_backend_url/https:\/\/}")
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ cat > /etc/nginx/sites-available/${empresa_dominio}-backend << 'END'
|
|
|
+server {
|
|
|
+ server_name $backend_hostname;
|
|
|
+ location / {
|
|
|
+ proxy_pass http://127.0.0.1:${alter_backend_port};
|
|
|
+ proxy_http_version 1.1;
|
|
|
+ proxy_set_header Upgrade \$http_upgrade;
|
|
|
+ proxy_set_header Connection 'upgrade';
|
|
|
+ proxy_set_header Host \$host;
|
|
|
+ proxy_set_header X-Real-IP \$remote_addr;
|
|
|
+ proxy_set_header X-Forwarded-Proto \$scheme;
|
|
|
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
|
+ proxy_cache_bypass \$http_upgrade;
|
|
|
+ }
|
|
|
+}
|
|
|
+END
|
|
|
+ln -s /etc/nginx/sites-available/${empresa_dominio}-backend /etc/nginx/sites-enabled
|
|
|
+EOF
|
|
|
+
|
|
|
+sleep 2
|
|
|
+
|
|
|
+frontend_hostname=$(echo "${alter_frontend_url/https:\/\/}")
|
|
|
+
|
|
|
+sudo su - root << EOF
|
|
|
+cat > /etc/nginx/sites-available/${empresa_dominio}-frontend << 'END'
|
|
|
+server {
|
|
|
+ server_name $frontend_hostname;
|
|
|
+ location / {
|
|
|
+ proxy_pass http://127.0.0.1:${alter_frontend_port};
|
|
|
+ proxy_http_version 1.1;
|
|
|
+ proxy_set_header Upgrade \$http_upgrade;
|
|
|
+ proxy_set_header Connection 'upgrade';
|
|
|
+ proxy_set_header Host \$host;
|
|
|
+ proxy_set_header X-Real-IP \$remote_addr;
|
|
|
+ proxy_set_header X-Forwarded-Proto \$scheme;
|
|
|
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
|
+ proxy_cache_bypass \$http_upgrade;
|
|
|
+ }
|
|
|
+}
|
|
|
+END
|
|
|
+ln -s /etc/nginx/sites-available/${empresa_dominio}-frontend /etc/nginx/sites-enabled
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ service nginx restart
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ backend_domain=$(echo "${backend_url/https:\/\/}")
|
|
|
+ frontend_domain=$(echo "${frontend_url/https:\/\/}")
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ certbot -m $deploy_email \
|
|
|
+ --nginx \
|
|
|
+ --agree-tos \
|
|
|
+ --non-interactive \
|
|
|
+ --domains $backend_domain,$frontend_domain
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 El cambio de dominio de la instancia/empresa ${empresa_dominio} se completó correctamente ...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# instalar node
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_node_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando nodejs...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
|
+ apt-get install -y nodejs
|
|
|
+ sleep 2
|
|
|
+ npm install -g npm@latest
|
|
|
+ sleep 2
|
|
|
+ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
|
|
+ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
|
|
+ sudo apt-get update -y && sudo apt-get -y install postgresql
|
|
|
+ sleep 2
|
|
|
+ sudo timedatectl set-timezone America/Santo_Domingo
|
|
|
+ sudo npm install -g pm2
|
|
|
+
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+#######################################
|
|
|
+# instalar docker
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_docker_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando docker...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt install -y apt-transport-https \
|
|
|
+ ca-certificates curl \
|
|
|
+ software-properties-common
|
|
|
+
|
|
|
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
|
|
+
|
|
|
+ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
|
|
|
+
|
|
|
+ apt install -y docker-ce
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# Ask for file location containing
|
|
|
+# multiple URL for streaming.
|
|
|
+# Globals:
|
|
|
+# WHITE
|
|
|
+# GRAY_LIGHT
|
|
|
+# BATCH_DIR
|
|
|
+# PROJECT_ROOT
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_puppeteer_dependencies() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalación de dependencias de puppeteer...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt-get install -y 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
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# installar pm2
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_pm2_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando pm2...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+
|
|
|
+ npm install -g pm2
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# installar snapd
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_snapd_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando snapd...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt install -y snapd
|
|
|
+ snap install core
|
|
|
+ snap refresh core
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# installs certbot
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_certbot_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando certbot...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt-get remove certbot
|
|
|
+ apt install python3-certbot-nginx -y
|
|
|
+ ln -s /snap/bin/certbot /usr/bin/certbot
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# installs nginx
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_nginx_install() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Instalando nginx...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ apt install -y nginx
|
|
|
+ rm /etc/nginx/sites-enabled/default
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# restarts nginx
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_nginx_restart() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 reiniciando nginx...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ service nginx restart
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# setup for nginx.conf
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_nginx_conf() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 configurando nginx...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+sudo su - root << EOF
|
|
|
+
|
|
|
+cat > /etc/nginx/conf.d/deploy.conf << 'END'
|
|
|
+client_max_body_size 100M;
|
|
|
+END
|
|
|
+
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|
|
|
+
|
|
|
+#######################################
|
|
|
+# installs nginx
|
|
|
+# Arguments:
|
|
|
+# None
|
|
|
+#######################################
|
|
|
+system_certbot_setup() {
|
|
|
+ print_banner
|
|
|
+ printf "${WHITE} 💻 Configurando certbot...${GRAY_LIGHT}"
|
|
|
+ printf "\n\n"
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+
|
|
|
+ backend_domain=$(echo "${backend_url/https:\/\/}")
|
|
|
+ frontend_domain=$(echo "${frontend_url/https:\/\/}")
|
|
|
+
|
|
|
+ sudo su - root <<EOF
|
|
|
+ certbot -m $deploy_email \
|
|
|
+ --nginx \
|
|
|
+ --agree-tos \
|
|
|
+ --non-interactive \
|
|
|
+ --domains $backend_domain,$frontend_domain
|
|
|
+
|
|
|
+EOF
|
|
|
+
|
|
|
+ sleep 2
|
|
|
+}
|