atendeticket 2.1.13 → 2.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TODO.md +23 -0
- package/appInstaller.js +1 -299
- package/instalador_antigo/LICENSE +5 -0
- package/instalador_antigo/Multizap.zip +0 -0
- package/instalador_antigo/README.md +10 -0
- package/instalador_antigo/config +3 -0
- package/instalador_antigo/instalar_nova_instancia +75 -0
- package/instalador_antigo/instalar_primaria +220 -0
- package/instalador_antigo/lib/_backend.sh +453 -0
- package/instalador_antigo/lib/_frontend.sh +342 -0
- package/instalador_antigo/lib/_inquiry.sh +247 -0
- package/instalador_antigo/lib/_system.sh +676 -0
- package/instalador_antigo/lib/manifest.sh +6 -0
- package/instalador_antigo/utils/_banner.sh +45 -0
- package/instalador_antigo/utils/manifest.sh +3 -0
- package/instalador_antigo/variables/_app.sh +15 -0
- package/instalador_antigo/variables/_background.sh +6 -0
- package/instalador_antigo/variables/_fonts.sh +16 -0
- package/instalador_antigo/variables/_general.sh +5 -0
- package/instalador_antigo/variables/manifest.sh +6 -0
- package/installers/system/certbotSetup.js +16 -0
- package/installers/system/copyProjectFiles.js +20 -0
- package/installers/system/index.js +12 -2
- package/package.json +1 -1
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# functions for setting up app backend
|
|
4
|
+
#######################################
|
|
5
|
+
# creates REDIS db using docker
|
|
6
|
+
# Arguments:
|
|
7
|
+
# None
|
|
8
|
+
#######################################
|
|
9
|
+
backend_redis_create() {
|
|
10
|
+
print_banner
|
|
11
|
+
printf "${WHITE} 💻 Criando Redis & Banco Postgres...${GRAY_LIGHT}"
|
|
12
|
+
printf "\n\n"
|
|
13
|
+
|
|
14
|
+
sleep 2
|
|
15
|
+
|
|
16
|
+
# Configurações automáticas do Redis
|
|
17
|
+
redis_host="localhost"
|
|
18
|
+
redis_password="${mysql_root_password}"
|
|
19
|
+
|
|
20
|
+
sudo su - root <<EOF
|
|
21
|
+
usermod -aG docker deploy
|
|
22
|
+
|
|
23
|
+
# Verifica se o container Redis já existe e remove se existir
|
|
24
|
+
if docker ps -a | grep -q "redis-${instancia_add}"; then
|
|
25
|
+
echo "🔄 Removendo container Redis existente..."
|
|
26
|
+
docker rm -f redis-${instancia_add}
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "🐳 Criando container Redis..."
|
|
30
|
+
# Cria o container Redis com configurações automáticas
|
|
31
|
+
docker run --name redis-${instancia_add} \
|
|
32
|
+
-p ${redis_port}:6379 \
|
|
33
|
+
--restart always \
|
|
34
|
+
--detach \
|
|
35
|
+
redis:alpine \
|
|
36
|
+
redis-server --requirepass ${redis_password}
|
|
37
|
+
|
|
38
|
+
# Aguarda o Redis inicializar
|
|
39
|
+
echo "⏳ Aguardando Redis inicializar..."
|
|
40
|
+
sleep 5
|
|
41
|
+
|
|
42
|
+
# Verifica se o Redis está rodando
|
|
43
|
+
if docker ps | grep -q "redis-${instancia_add}"; then
|
|
44
|
+
echo "✅ Redis criado com sucesso!"
|
|
45
|
+
echo " 📍 Porta: ${redis_port}"
|
|
46
|
+
echo " 🔑 Senha: mesma do banco de dados"
|
|
47
|
+
echo " 🏠 Host: localhost"
|
|
48
|
+
else
|
|
49
|
+
echo "❌ Erro ao criar Redis"
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
sleep 2
|
|
54
|
+
|
|
55
|
+
# Configuração do PostgreSQL
|
|
56
|
+
echo "🗄️ Configurando PostgreSQL..."
|
|
57
|
+
sudo su - postgres <<DBEOF
|
|
58
|
+
createdb ${instancia_add};
|
|
59
|
+
psql -c "CREATE USER ${instancia_add} SUPERUSER INHERIT CREATEDB CREATEROLE;"
|
|
60
|
+
psql -c "ALTER USER ${instancia_add} PASSWORD '${mysql_root_password}';"
|
|
61
|
+
DBEOF
|
|
62
|
+
|
|
63
|
+
EOF
|
|
64
|
+
|
|
65
|
+
sleep 2
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#######################################
|
|
69
|
+
# sets environment variable for backend.
|
|
70
|
+
# Arguments:
|
|
71
|
+
# None
|
|
72
|
+
#######################################
|
|
73
|
+
backend_set_env() {
|
|
74
|
+
print_banner
|
|
75
|
+
printf "${WHITE} 💻 Configurando variáveis de ambiente (backend)...${GRAY_LIGHT}"
|
|
76
|
+
printf "\n\n"
|
|
77
|
+
|
|
78
|
+
sleep 2
|
|
79
|
+
|
|
80
|
+
# ensure idempotency
|
|
81
|
+
backend_url=$(echo "${backend_url/https:\/\/}")
|
|
82
|
+
backend_url=${backend_url%%/*}
|
|
83
|
+
backend_url=https://$backend_url
|
|
84
|
+
|
|
85
|
+
# ensure idempotency
|
|
86
|
+
frontend_url=$(echo "${frontend_url/https:\/\/}")
|
|
87
|
+
frontend_url=${frontend_url%%/*}
|
|
88
|
+
frontend_url=https://$frontend_url
|
|
89
|
+
|
|
90
|
+
# Configurações automáticas do Redis
|
|
91
|
+
redis_host="localhost"
|
|
92
|
+
redis_password="${mysql_root_password}"
|
|
93
|
+
redis_uri="redis://:${redis_password}@${redis_host}:${redis_port}"
|
|
94
|
+
|
|
95
|
+
sudo su - deploy << EOF
|
|
96
|
+
cat <<[-]EOF > /home/deploy/${instancia_add}/backend/.env
|
|
97
|
+
NODE_ENV=
|
|
98
|
+
BACKEND_URL=${backend_url}
|
|
99
|
+
FRONTEND_URL=${frontend_url}
|
|
100
|
+
PROXY_PORT=443
|
|
101
|
+
PORT=${backend_port}
|
|
102
|
+
|
|
103
|
+
DB_HOST=localhost
|
|
104
|
+
DB_DIALECT=postgres
|
|
105
|
+
DB_USER=${instancia_add}
|
|
106
|
+
DB_PASS=${mysql_root_password}
|
|
107
|
+
DB_NAME=${instancia_add}
|
|
108
|
+
DB_PORT=5432
|
|
109
|
+
|
|
110
|
+
MASTER_KEY=senha_master
|
|
111
|
+
|
|
112
|
+
IMPORT_FALLBACK_FILE=1
|
|
113
|
+
|
|
114
|
+
TIMEOUT_TO_IMPORT_MESSAGE=1000
|
|
115
|
+
|
|
116
|
+
APP_TRIALEXPIRATION=3
|
|
117
|
+
|
|
118
|
+
JWT_SECRET=${jwt_secret}
|
|
119
|
+
JWT_REFRESH_SECRET=${jwt_refresh_secret}
|
|
120
|
+
|
|
121
|
+
# REDIS CONFIGURADO AUTOMATICAMENTE
|
|
122
|
+
REDIS_URI=${redis_uri}
|
|
123
|
+
REDIS_OPT_LIMITER_MAX=1
|
|
124
|
+
REDIS_OPT_LIMITER_DURATION=3000
|
|
125
|
+
|
|
126
|
+
FLOW_MENU_COOLDOWN_SEC=8
|
|
127
|
+
|
|
128
|
+
USER_LIMIT=${max_user}
|
|
129
|
+
CONNECTIONS_LIMIT=${max_whats}
|
|
130
|
+
CLOSED_SEND_BY_ME=true
|
|
131
|
+
|
|
132
|
+
VERIFY_TOKEN=whaticket
|
|
133
|
+
|
|
134
|
+
#METODOS DE PAGAMENTO
|
|
135
|
+
MP_ACCESS_TOKEN=
|
|
136
|
+
|
|
137
|
+
FACEBOOK_APP_ID=2813216208828642
|
|
138
|
+
FACEBOOK_APP_SECRET=8233912aeade366dd8e2ebef6be256b6
|
|
139
|
+
|
|
140
|
+
# EMAIL
|
|
141
|
+
SMTP_HOST="smtp.gmail.com"
|
|
142
|
+
SMTP_PORT="587"
|
|
143
|
+
SMTP_SECURE="false"
|
|
144
|
+
SMTP_USER="seuemail@gmail.com"
|
|
145
|
+
SMTP_PASS="suasenha"
|
|
146
|
+
SMTP_FROM="Redefinição de senha <seuemail@gmail.com>"
|
|
147
|
+
|
|
148
|
+
[-]EOF
|
|
149
|
+
|
|
150
|
+
echo "✅ Variáveis de ambiente configuradas com Redis automático"
|
|
151
|
+
EOF
|
|
152
|
+
|
|
153
|
+
sleep 2
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
#######################################
|
|
157
|
+
# installs node.js dependencies
|
|
158
|
+
# Arguments:
|
|
159
|
+
# None
|
|
160
|
+
#######################################
|
|
161
|
+
backend_node_dependencies() {
|
|
162
|
+
print_banner
|
|
163
|
+
printf "${WHITE} 💻 Instalando dependências do backend...${GRAY_LIGHT}"
|
|
164
|
+
printf "\n\n"
|
|
165
|
+
|
|
166
|
+
sleep 2
|
|
167
|
+
|
|
168
|
+
sudo su - deploy <<EOF
|
|
169
|
+
cd /home/deploy/${instancia_add}/backend
|
|
170
|
+
npm -f install
|
|
171
|
+
EOF
|
|
172
|
+
|
|
173
|
+
sleep 2
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
#######################################
|
|
177
|
+
# compiles backend code
|
|
178
|
+
# Arguments:
|
|
179
|
+
# None
|
|
180
|
+
#######################################
|
|
181
|
+
backend_node_build() {
|
|
182
|
+
print_banner
|
|
183
|
+
printf "${WHITE} 💻 Compilando o código do backend...${GRAY_LIGHT}"
|
|
184
|
+
printf "\n\n"
|
|
185
|
+
|
|
186
|
+
sleep 2
|
|
187
|
+
|
|
188
|
+
sudo su - deploy <<EOF
|
|
189
|
+
cd /home/deploy/${instancia_add}/backend
|
|
190
|
+
npm run build
|
|
191
|
+
|
|
192
|
+
# Verifica se o build foi bem-sucedido
|
|
193
|
+
if [ -d "dist" ] && [ -f "dist/server.js" ]; then
|
|
194
|
+
echo "✅ Build backend realizado com sucesso!"
|
|
195
|
+
else
|
|
196
|
+
echo "❌ Falha no build backend"
|
|
197
|
+
exit 1
|
|
198
|
+
fi
|
|
199
|
+
EOF
|
|
200
|
+
|
|
201
|
+
sleep 2
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
#######################################
|
|
205
|
+
# updates frontend code
|
|
206
|
+
# Arguments:
|
|
207
|
+
# None
|
|
208
|
+
#######################################
|
|
209
|
+
backend_update() {
|
|
210
|
+
print_banner
|
|
211
|
+
printf "${WHITE} 💻 Atualizando o backend...${GRAY_LIGHT}"
|
|
212
|
+
printf "\n\n"
|
|
213
|
+
|
|
214
|
+
sleep 2
|
|
215
|
+
|
|
216
|
+
sudo su - deploy <<EOF
|
|
217
|
+
cd /home/deploy/${empresa_atualizar}
|
|
218
|
+
pm2 stop ${empresa_atualizar}-backend
|
|
219
|
+
git pull
|
|
220
|
+
cd /home/deploy/${empresa_atualizar}/backend
|
|
221
|
+
npm -f install
|
|
222
|
+
npm update -f
|
|
223
|
+
npm -f install @types/fs-extra
|
|
224
|
+
rm -rf dist
|
|
225
|
+
npm run build
|
|
226
|
+
npx sequelize db:migrate
|
|
227
|
+
npx sequelize db:seed
|
|
228
|
+
pm2 start ${empresa_atualizar}-backend
|
|
229
|
+
pm2 save
|
|
230
|
+
EOF
|
|
231
|
+
|
|
232
|
+
sleep 2
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
#######################################
|
|
236
|
+
# runs db migrate
|
|
237
|
+
# Arguments:
|
|
238
|
+
# None
|
|
239
|
+
#######################################
|
|
240
|
+
backend_db_migrate() {
|
|
241
|
+
print_banner
|
|
242
|
+
printf "${WHITE} 💻 Executando db:migrate...${GRAY_LIGHT}"
|
|
243
|
+
printf "\n\n"
|
|
244
|
+
|
|
245
|
+
sleep 2
|
|
246
|
+
|
|
247
|
+
sudo su - deploy <<EOF
|
|
248
|
+
cd /home/deploy/${instancia_add}/backend
|
|
249
|
+
npx sequelize db:migrate
|
|
250
|
+
|
|
251
|
+
# Verifica se migrate foi bem-sucedido
|
|
252
|
+
if [ $? -eq 0 ]; then
|
|
253
|
+
echo "✅ Migrations executadas com sucesso!"
|
|
254
|
+
else
|
|
255
|
+
echo "❌ Erro ao executar migrations"
|
|
256
|
+
exit 1
|
|
257
|
+
fi
|
|
258
|
+
EOF
|
|
259
|
+
|
|
260
|
+
sleep 2
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
#######################################
|
|
264
|
+
# runs db seed
|
|
265
|
+
# Arguments:
|
|
266
|
+
# None
|
|
267
|
+
#######################################
|
|
268
|
+
backend_db_seed() {
|
|
269
|
+
print_banner
|
|
270
|
+
printf "${WHITE} 💻 Executando db:seed...${GRAY_LIGHT}"
|
|
271
|
+
printf "\n\n"
|
|
272
|
+
|
|
273
|
+
sleep 2
|
|
274
|
+
|
|
275
|
+
sudo su - deploy <<EOF
|
|
276
|
+
cd /home/deploy/${instancia_add}/backend
|
|
277
|
+
npx sequelize db:seed:all
|
|
278
|
+
|
|
279
|
+
# Verifica se seed foi bem-sucedido
|
|
280
|
+
if [ $? -eq 0 ]; then
|
|
281
|
+
echo "✅ Seeds executados com sucesso!"
|
|
282
|
+
else
|
|
283
|
+
echo "❌ Erro ao executar seeds"
|
|
284
|
+
exit 1
|
|
285
|
+
fi
|
|
286
|
+
EOF
|
|
287
|
+
|
|
288
|
+
sleep 2
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
#######################################
|
|
292
|
+
# starts backend using pm2 in
|
|
293
|
+
# production mode.
|
|
294
|
+
# Arguments:
|
|
295
|
+
# None
|
|
296
|
+
#######################################
|
|
297
|
+
backend_start_pm2() {
|
|
298
|
+
print_banner
|
|
299
|
+
printf "${WHITE} 💻 Iniciando pm2 (backend)...${GRAY_LIGHT}"
|
|
300
|
+
printf "\n\n"
|
|
301
|
+
|
|
302
|
+
sleep 2
|
|
303
|
+
|
|
304
|
+
sudo su - deploy <<EOF
|
|
305
|
+
cd /home/deploy/${instancia_add}/backend
|
|
306
|
+
|
|
307
|
+
# Para processo existente se houver
|
|
308
|
+
pm2 stop ${instancia_add}-backend 2>/dev/null || true
|
|
309
|
+
pm2 delete ${instancia_add}-backend 2>/dev/null || true
|
|
310
|
+
|
|
311
|
+
# Inicia o backend
|
|
312
|
+
pm2 start dist/server.js --name ${instancia_add}-backend
|
|
313
|
+
|
|
314
|
+
# Verifica se iniciou corretamente
|
|
315
|
+
if pm2 list | grep -q "${instancia_add}-backend"; then
|
|
316
|
+
echo "✅ Backend iniciado com sucesso no PM2"
|
|
317
|
+
else
|
|
318
|
+
echo "❌ Falha ao iniciar backend no PM2"
|
|
319
|
+
exit 1
|
|
320
|
+
fi
|
|
321
|
+
EOF
|
|
322
|
+
|
|
323
|
+
sleep 2
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
#######################################
|
|
327
|
+
# updates frontend code
|
|
328
|
+
# Arguments:
|
|
329
|
+
# None
|
|
330
|
+
#######################################
|
|
331
|
+
backend_nginx_setup() {
|
|
332
|
+
print_banner
|
|
333
|
+
printf "${WHITE} 💻 Configurando nginx (backend)...${GRAY_LIGHT}"
|
|
334
|
+
printf "\n\n"
|
|
335
|
+
|
|
336
|
+
sleep 2
|
|
337
|
+
|
|
338
|
+
backend_hostname=$(echo "${backend_url/https:\/\/}")
|
|
339
|
+
|
|
340
|
+
sudo su - root << EOF
|
|
341
|
+
# Remove configuração existente se houver
|
|
342
|
+
rm -f /etc/nginx/sites-enabled/${instancia_add}-backend
|
|
343
|
+
rm -f /etc/nginx/sites-available/${instancia_add}-backend
|
|
344
|
+
|
|
345
|
+
cat > /etc/nginx/sites-available/${instancia_add}-backend << 'END'
|
|
346
|
+
server {
|
|
347
|
+
server_name $backend_hostname;
|
|
348
|
+
location / {
|
|
349
|
+
proxy_pass http://127.0.0.1:${backend_port};
|
|
350
|
+
proxy_http_version 1.1;
|
|
351
|
+
proxy_set_header Upgrade \$http_upgrade;
|
|
352
|
+
proxy_set_header Connection 'upgrade';
|
|
353
|
+
proxy_set_header Host \$host;
|
|
354
|
+
proxy_set_header X-Real-IP \$remote_addr;
|
|
355
|
+
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
356
|
+
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
357
|
+
proxy_cache_bypass \$http_upgrade;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
END
|
|
361
|
+
|
|
362
|
+
# Cria link simbólico se não existir
|
|
363
|
+
if [ ! -f "/etc/nginx/sites-enabled/${instancia_add}-backend" ]; then
|
|
364
|
+
ln -s /etc/nginx/sites-available/${instancia_add}-backend /etc/nginx/sites-enabled
|
|
365
|
+
fi
|
|
366
|
+
|
|
367
|
+
echo "✅ Nginx backend configurado para ${backend_hostname}"
|
|
368
|
+
EOF
|
|
369
|
+
|
|
370
|
+
sleep 2
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
#######################################
|
|
374
|
+
# verifies backend installation
|
|
375
|
+
# Arguments:
|
|
376
|
+
# None
|
|
377
|
+
#######################################
|
|
378
|
+
backend_verify_installation() {
|
|
379
|
+
print_banner
|
|
380
|
+
printf "${WHITE} 💻 Verificando instalação do backend...${GRAY_LIGHT}"
|
|
381
|
+
printf "\n\n"
|
|
382
|
+
|
|
383
|
+
sleep 2
|
|
384
|
+
|
|
385
|
+
sudo su - deploy <<EOF
|
|
386
|
+
echo "🔍 Verificando backend..."
|
|
387
|
+
|
|
388
|
+
# Verifica PM2
|
|
389
|
+
if pm2 list | grep -q "${instancia_add}-backend"; then
|
|
390
|
+
echo "✅ PM2 backend: OK"
|
|
391
|
+
else
|
|
392
|
+
echo "❌ PM2 backend: FALHA"
|
|
393
|
+
exit 1
|
|
394
|
+
fi
|
|
395
|
+
|
|
396
|
+
# Verifica se responde na porta
|
|
397
|
+
sleep 5
|
|
398
|
+
if curl -f http://localhost:${backend_port}/ >/dev/null 2>&1; then
|
|
399
|
+
echo "✅ Backend respondendo: OK"
|
|
400
|
+
else
|
|
401
|
+
echo "⚠️ Backend não respondeu imediatamente, aguardando..."
|
|
402
|
+
sleep 10
|
|
403
|
+
if curl -f http://localhost:${backend_port}/ >/dev/null 2>&1; then
|
|
404
|
+
echo "✅ Backend respondendo: OK"
|
|
405
|
+
else
|
|
406
|
+
echo "❌ Backend não responde: FALHA"
|
|
407
|
+
exit 1
|
|
408
|
+
fi
|
|
409
|
+
fi
|
|
410
|
+
EOF
|
|
411
|
+
|
|
412
|
+
sleep 2
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
#######################################
|
|
416
|
+
# verifies redis installation
|
|
417
|
+
# Arguments:
|
|
418
|
+
# None
|
|
419
|
+
#######################################
|
|
420
|
+
backend_verify_redis() {
|
|
421
|
+
print_banner
|
|
422
|
+
printf "${WHITE} 💻 Verificando instalação do Redis...${GRAY_LIGHT}"
|
|
423
|
+
printf "\n\n"
|
|
424
|
+
|
|
425
|
+
sleep 2
|
|
426
|
+
|
|
427
|
+
sudo su - root <<EOF
|
|
428
|
+
echo "🔍 Verificando Redis..."
|
|
429
|
+
|
|
430
|
+
# Verifica container
|
|
431
|
+
if docker ps | grep -q "redis-${instancia_add}"; then
|
|
432
|
+
echo "✅ Container Redis: OK"
|
|
433
|
+
else
|
|
434
|
+
echo "❌ Container Redis: FALHA"
|
|
435
|
+
exit 1
|
|
436
|
+
fi
|
|
437
|
+
|
|
438
|
+
# Testa conexão com Redis
|
|
439
|
+
if docker exec redis-${instancia_add} redis-cli -a ${mysql_root_password} ping | grep -q "PONG"; then
|
|
440
|
+
echo "✅ Conexão Redis: OK"
|
|
441
|
+
else
|
|
442
|
+
echo "❌ Conexão Redis: FALHA"
|
|
443
|
+
exit 1
|
|
444
|
+
fi
|
|
445
|
+
|
|
446
|
+
echo "📊 Redis configurado automaticamente:"
|
|
447
|
+
echo " 🏠 Host: localhost"
|
|
448
|
+
echo " 🔑 Senha: mesma do banco"
|
|
449
|
+
echo " 📍 Porta: ${redis_port}"
|
|
450
|
+
EOF
|
|
451
|
+
|
|
452
|
+
sleep 2
|
|
453
|
+
}
|