545 lines
12 KiB
Bash
545 lines
12 KiB
Bash
#!/bin/bash
|
|
#
|
|
# system management
|
|
|
|
#######################################
|
|
# creates user
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
system_create_user() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Agora, vamos criar o usuário para a 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 repostories using git
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
system_git_clone() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Fazendo download do código Atendechat...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
|
|
sleep 2
|
|
|
|
sudo su - deploy <<EOF
|
|
git clone https://agente-atendechat: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@github.com/atendechat-org/codatendechat.git /home/deploy/${instancia_add}/
|
|
EOF
|
|
|
|
sleep 2
|
|
}
|
|
|
|
#######################################
|
|
# updates system
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
system_update() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Vamos atualizar o sistema do Atendechat...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
sleep 2
|
|
|
|
sudo su - root <<EOF
|
|
apt -y update
|
|
sudo 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
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
# delete system
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
deletar_tudo() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Vamos deletar o Atendechat...${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} 💻 Remoção da Instancia/Empresa ${empresa_delete} realizado com sucesso ...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
|
|
sleep 2
|
|
|
|
}
|
|
|
|
#######################################
|
|
# bloquear system
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
configurar_bloqueio() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Vamos bloquear o Atendechat...${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} 💻 Bloqueio da Instancia/Empresa ${empresa_bloquear} realizado com sucesso ...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
sleep 2
|
|
}
|
|
|
|
|
|
#######################################
|
|
# desbloquear system
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
configurar_desbloqueio() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Vamos Desbloquear o Atendechat...${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} 💻 Desbloqueio da Instancia/Empresa ${empresa_desbloquear} realizado com sucesso ...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
sleep 2
|
|
}
|
|
|
|
#######################################
|
|
# alter dominio system
|
|
# Arguments:
|
|
# None
|
|
#######################################
|
|
configurar_dominio() {
|
|
print_banner
|
|
printf "${WHITE} 💻 Vamos Alterar os Dominios do Atendechat...${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} 💻 Alteração de dominio da Instancia/Empresa ${empresa_dominio} realizado com sucesso ...${GRAY_LIGHT}"
|
|
printf "\n\n"
|
|
|
|
sleep 2
|
|
}
|
|
|
|
#######################################
|
|
# installs 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/Sao_Paulo
|
|
sudo npm install -g pm2
|
|
|
|
EOF
|
|
|
|
sleep 2
|
|
}
|
|
#######################################
|
|
# installs 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} 💻 Instalando puppeteer dependencies...${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
|
|
}
|
|
|
|
#######################################
|
|
# installs 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
|
|
}
|
|
|
|
#######################################
|
|
# installs 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
|
|
snap install --classic certbot
|
|
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
|
|
}
|