This commit is contained in:
2025-04-30 13:14:27 -06:00
parent 2f84152f34
commit 6b32fe18d2
757 changed files with 97380 additions and 1 deletions

256
instalador/lib/_backend.sh Normal file
View File

@@ -0,0 +1,256 @@
#!/bin/bash
#
# functions for setting up app backend
#######################################
# creates REDIS db using docker
# Arguments:
# None
#######################################
backend_redis_create() {
print_banner
printf "${WHITE} 💻 Criando Redis & Banco Postgres...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - root <<EOF
usermod -aG docker deploy
docker run --name redis-${instancia_add} -p ${redis_port}:6379 --restart always --detach redis redis-server --requirepass ${mysql_root_password}
sleep 2
sudo su - postgres
createdb ${instancia_add};
psql
CREATE USER ${instancia_add} SUPERUSER INHERIT CREATEDB CREATEROLE;
ALTER USER ${instancia_add} PASSWORD '${mysql_root_password}';
\q
exit
EOF
sleep 2
}
#######################################
# sets environment variable for backend.
# Arguments:
# None
#######################################
backend_set_env() {
print_banner
printf "${WHITE} 💻 Configurando variáveis de ambiente (backend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
# ensure idempotency
backend_url=$(echo "${backend_url/https:\/\/}")
backend_url=${backend_url%%/*}
backend_url=https://$backend_url
# ensure idempotency
frontend_url=$(echo "${frontend_url/https:\/\/}")
frontend_url=${frontend_url%%/*}
frontend_url=https://$frontend_url
sudo su - deploy << EOF
cat <<[-]EOF > /home/deploy/${instancia_add}/backend/.env
NODE_ENV=
BACKEND_URL=${backend_url}
FRONTEND_URL=${frontend_url}
PROXY_PORT=443
PORT=${backend_port}
DB_DIALECT=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USER=${instancia_add}
DB_PASS=${mysql_root_password}
DB_NAME=${instancia_add}
JWT_SECRET=${jwt_secret}
JWT_REFRESH_SECRET=${jwt_refresh_secret}
REDIS_URI=redis://:${mysql_root_password}@127.0.0.1:${redis_port}
REDIS_OPT_LIMITER_MAX=1
REGIS_OPT_LIMITER_DURATION=3000
USER_LIMIT=${max_user}
CONNECTIONS_LIMIT=${max_whats}
CLOSED_SEND_BY_ME=true
[-]EOF
EOF
sleep 2
}
#######################################
# installs node.js dependencies
# Arguments:
# None
#######################################
backend_node_dependencies() {
print_banner
printf "${WHITE} 💻 Instalando dependências do backend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/backend
npm install --force
EOF
sleep 2
}
#######################################
# compiles backend code
# Arguments:
# None
#######################################
backend_node_build() {
print_banner
printf "${WHITE} 💻 Compilando o código do backend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/backend
npm run build
EOF
sleep 2
}
#######################################
# updates frontend code
# Arguments:
# None
#######################################
backend_update() {
print_banner
printf "${WHITE} 💻 Atualizando o backend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${empresa_atualizar}
pm2 stop ${empresa_atualizar}-backend
git pull
cd /home/deploy/${empresa_atualizar}/backend
npm install
npm update -f
npm install @types/fs-extra
rm -rf dist
npm run build
npx sequelize db:migrate
npx sequelize db:migrate
npx sequelize db:seed
pm2 start ${empresa_atualizar}-backend
pm2 save
EOF
sleep 2
}
#######################################
# runs db migrate
# Arguments:
# None
#######################################
backend_db_migrate() {
print_banner
printf "${WHITE} 💻 Executando db:migrate...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/backend
npx sequelize db:migrate
EOF
sleep 2
}
#######################################
# runs db seed
# Arguments:
# None
#######################################
backend_db_seed() {
print_banner
printf "${WHITE} 💻 Executando db:seed...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/backend
npx sequelize db:seed:all
EOF
sleep 2
}
#######################################
# starts backend using pm2 in
# production mode.
# Arguments:
# None
#######################################
backend_start_pm2() {
print_banner
printf "${WHITE} 💻 Iniciando pm2 (backend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/backend
pm2 start dist/server.js --name ${instancia_add}-backend
EOF
sleep 2
}
#######################################
# updates frontend code
# Arguments:
# None
#######################################
backend_nginx_setup() {
print_banner
printf "${WHITE} 💻 Configurando nginx (backend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
backend_hostname=$(echo "${backend_url/https:\/\/}")
sudo su - root << EOF
cat > /etc/nginx/sites-available/${instancia_add}-backend << 'END'
server {
server_name $backend_hostname;
location / {
proxy_pass http://127.0.0.1:${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/${instancia_add}-backend /etc/nginx/sites-enabled
EOF
sleep 2
}

182
instalador/lib/_frontend.sh Normal file
View File

@@ -0,0 +1,182 @@
#!/bin/bash
#
# functions for setting up app frontend
#######################################
# installed node packages
# Arguments:
# None
#######################################
frontend_node_dependencies() {
print_banner
printf "${WHITE} 💻 Instalando dependências do frontend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/frontend
npm install --force
EOF
sleep 2
}
#######################################
# compiles frontend code
# Arguments:
# None
#######################################
frontend_node_build() {
print_banner
printf "${WHITE} 💻 Compilando o código do frontend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/frontend
npm run build
EOF
sleep 2
}
#######################################
# updates frontend code
# Arguments:
# None
#######################################
frontend_update() {
print_banner
printf "${WHITE} 💻 Atualizando o frontend...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${empresa_atualizar}
pm2 stop ${empresa_atualizar}-frontend
git pull
cd /home/deploy/${empresa_atualizar}/frontend
npm install
rm -rf build
npm run build
pm2 start ${empresa_atualizar}-frontend
pm2 save
EOF
sleep 2
}
#######################################
# sets frontend environment variables
# Arguments:
# None
#######################################
frontend_set_env() {
print_banner
printf "${WHITE} 💻 Configurando variáveis de ambiente (frontend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
# ensure idempotency
backend_url=$(echo "${backend_url/https:\/\/}")
backend_url=${backend_url%%/*}
backend_url=https://$backend_url
sudo su - deploy << EOF
cat <<[-]EOF > /home/deploy/${instancia_add}/frontend/.env
REACT_APP_BACKEND_URL=${backend_url}
REACT_APP_HOURS_CLOSE_TICKETS_AUTO = 24
[-]EOF
EOF
sleep 2
sudo su - deploy << EOF
cat <<[-]EOF > /home/deploy/${instancia_add}/frontend/server.js
//simple express server to run frontend production build;
const express = require("express");
const path = require("path");
const app = express();
app.use(express.static(path.join(__dirname, "build")));
app.get("/*", function (req, res) {
res.sendFile(path.join(__dirname, "build", "index.html"));
});
app.listen(${frontend_port});
[-]EOF
EOF
sleep 2
}
#######################################
# starts pm2 for frontend
# Arguments:
# None
#######################################
frontend_start_pm2() {
print_banner
printf "${WHITE} 💻 Iniciando pm2 (frontend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
sudo su - deploy <<EOF
cd /home/deploy/${instancia_add}/frontend
pm2 start server.js --name ${instancia_add}-frontend
pm2 save
EOF
sleep 2
sudo su - root <<EOF
pm2 startup
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u deploy --hp /home/deploy
EOF
sleep 2
}
#######################################
# sets up nginx for frontend
# Arguments:
# None
#######################################
frontend_nginx_setup() {
print_banner
printf "${WHITE} 💻 Configurando nginx (frontend)...${GRAY_LIGHT}"
printf "\n\n"
sleep 2
frontend_hostname=$(echo "${frontend_url/https:\/\/}")
sudo su - root << EOF
cat > /etc/nginx/sites-available/${instancia_add}-frontend << 'END'
server {
server_name $frontend_hostname;
location / {
proxy_pass http://127.0.0.1:${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/${instancia_add}-frontend /etc/nginx/sites-enabled
EOF
sleep 2
}

244
instalador/lib/_inquiry.sh Normal file
View File

@@ -0,0 +1,244 @@
#!/bin/bash
get_mysql_root_password() {
print_banner
printf "${WHITE} 💻 Insira senha para o usuario Deploy e Banco de Dados (Não utilizar caracteres especiais):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " mysql_root_password
}
get_link_git() {
print_banner
printf "${WHITE} 💻 Insira o link do GITHUB do Atendechat que deseja instalar:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " link_git
}
get_instancia_add() {
print_banner
printf "${WHITE} 💻 Informe um nome para a Instancia/Empresa que será instalada (Não utilizar espaços ou caracteres especiais, Utilizar Letras minusculas; ):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " instancia_add
}
get_max_whats() {
print_banner
printf "${WHITE} 💻 Informe a Qtde de Conexões/Whats que a ${instancia_add} poderá cadastrar:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " max_whats
}
get_max_user() {
print_banner
printf "${WHITE} 💻 Informe a Qtde de Usuarios/Atendentes que a ${instancia_add} poderá cadastrar:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " max_user
}
get_frontend_url() {
print_banner
printf "${WHITE} 💻 Digite o domínio do FRONTEND/PAINEL para a ${instancia_add}:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " frontend_url
}
get_backend_url() {
print_banner
printf "${WHITE} 💻 Digite o domínio do BACKEND/API para a ${instancia_add}:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " backend_url
}
get_frontend_port() {
print_banner
printf "${WHITE} 💻 Digite a porta do FRONTEND para a ${instancia_add}; Ex: 3000 A 3999 ${GRAY_LIGHT}"
printf "\n\n"
read -p "> " frontend_port
}
get_backend_port() {
print_banner
printf "${WHITE} 💻 Digite a porta do BACKEND para esta instancia; Ex: 4000 A 4999 ${GRAY_LIGHT}"
printf "\n\n"
read -p "> " backend_port
}
get_redis_port() {
print_banner
printf "${WHITE} 💻 Digite a porta do REDIS/AGENDAMENTO MSG para a ${instancia_add}; Ex: 5000 A 5999 ${GRAY_LIGHT}"
printf "\n\n"
read -p "> " redis_port
}
get_empresa_delete() {
print_banner
printf "${WHITE} 💻 Digite o nome da Instancia/Empresa que será Deletada (Digite o mesmo nome de quando instalou):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " empresa_delete
}
get_empresa_atualizar() {
print_banner
printf "${WHITE} 💻 Digite o nome da Instancia/Empresa que deseja Atualizar (Digite o mesmo nome de quando instalou):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " empresa_atualizar
}
get_empresa_bloquear() {
print_banner
printf "${WHITE} 💻 Digite o nome da Instancia/Empresa que deseja Bloquear (Digite o mesmo nome de quando instalou):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " empresa_bloquear
}
get_empresa_desbloquear() {
print_banner
printf "${WHITE} 💻 Digite o nome da Instancia/Empresa que deseja Desbloquear (Digite o mesmo nome de quando instalou):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " empresa_desbloquear
}
get_empresa_dominio() {
print_banner
printf "${WHITE} 💻 Digite o nome da Instancia/Empresa que deseja Alterar os Dominios (Atenção para alterar os dominios precisa digitar os 2, mesmo que vá alterar apenas 1):${GRAY_LIGHT}"
printf "\n\n"
read -p "> " empresa_dominio
}
get_alter_frontend_url() {
print_banner
printf "${WHITE} 💻 Digite o NOVO domínio do FRONTEND/PAINEL para a ${empresa_dominio}:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " alter_frontend_url
}
get_alter_backend_url() {
print_banner
printf "${WHITE} 💻 Digite o NOVO domínio do BACKEND/API para a ${empresa_dominio}:${GRAY_LIGHT}"
printf "\n\n"
read -p "> " alter_backend_url
}
get_alter_frontend_port() {
print_banner
printf "${WHITE} 💻 Digite a porta do FRONTEND da Instancia/Empresa ${empresa_dominio}; A porta deve ser o mesma informada durante a instalação ${GRAY_LIGHT}"
printf "\n\n"
read -p "> " alter_frontend_port
}
get_alter_backend_port() {
print_banner
printf "${WHITE} 💻 Digite a porta do BACKEND da Instancia/Empresa ${empresa_dominio}; A porta deve ser o mesma informada durante a instalação ${GRAY_LIGHT}"
printf "\n\n"
read -p "> " alter_backend_port
}
get_urls() {
get_mysql_root_password
get_link_git
get_instancia_add
get_max_whats
get_max_user
get_frontend_url
get_backend_url
get_frontend_port
get_backend_port
get_redis_port
}
software_update() {
get_empresa_atualizar
frontend_update
backend_update
}
software_delete() {
get_empresa_delete
deletar_tudo
}
software_bloquear() {
get_empresa_bloquear
configurar_bloqueio
}
software_desbloquear() {
get_empresa_desbloquear
configurar_desbloqueio
}
software_dominio() {
get_empresa_dominio
get_alter_frontend_url
get_alter_backend_url
get_alter_frontend_port
get_alter_backend_port
configurar_dominio
}
inquiry_options() {
print_banner
printf "${WHITE} 💻 Bem vindo(a) ao Gerenciador Atendechat, Selecione abaixo a proxima ação!${GRAY_LIGHT}"
printf "\n\n"
printf " [0] Instalar Atendechat\n"
printf " [1] Atualizar Atendechat\n"
printf " [2] Deletar Atendechat\n"
printf " [3] Bloquear Atendechat\n"
printf " [4] Desbloquear Atendechat\n"
printf " [5] Alter. dominio Atendechat\n"
printf "\n"
read -p "> " option
case "${option}" in
0) get_urls ;;
1)
software_update
exit
;;
2)
software_delete
exit
;;
3)
software_bloquear
exit
;;
4)
software_desbloquear
exit
;;
5)
software_dominio
exit
;;
*) exit ;;
esac
}

542
instalador/lib/_system.sh Normal file
View File

@@ -0,0 +1,542 @@
#!/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
useradd -m -p $(openssl passwd -crypt ${mysql_root_password}) -s /bin/bash -G sudo deploy
usermod -aG sudo deploy
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 ${link_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
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
sudo su - root <<EOF
npm install -g pm2
EOF
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
}

View File

@@ -0,0 +1,6 @@
#!/bin/bash
source "${PROJECT_ROOT}"/lib/_backend.sh
source "${PROJECT_ROOT}"/lib/_frontend.sh
source "${PROJECT_ROOT}"/lib/_system.sh
source "${PROJECT_ROOT}"/lib/_inquiry.sh