Skip to content

Latest commit

 

History

History
632 lines (447 loc) · 13 KB

INSTALL_VPS_UBUNTU_20_22.md

File metadata and controls

632 lines (447 loc) · 13 KB

Manual de Instação do izing.io na VPS

Observação:

  • Antes de começar a instalação é necessário ter criado antecipadamente os subdomínios e já estarem apontados para o IP da VPS.
  • Feito ubuntu 20
  • Nesse modelo vamos usar docker porque versão Postgresql do repositorio UBUNTU 20 ta dando erro com izing
  • Senha usada 123@mudar
  • Dominio Frontend: izing.seusite.com.br
  • Dominio backend: backend.seusite.com.br

================================================

  1. Alterando para root
sudo su root
  1. Setar Time Zone para São Paulo e atualizar sistema
timedatectl set-timezone America/Sao_Paulo && apt update && apt upgrade -y
  1. Reiniciar para atualizar kernel
reboot
  1. Apos reniciar conectar no servidor novamente - Alterando para root
sudo su root
  1. Intalar pacotes necessários
apt install -y ffmpeg fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 apt-transport-https ca-certificates software-properties-common curl 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 python2-minimal build-essential libxshmfence-dev nginx
  1. Adicionar repositorio Docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. Instalar docker
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. limpar pacotes não são mais usados
apt autoremove -y
  1. Instalar POSTGRESQL no Docker
docker run --name postgresql -e POSTGRES_USER=izing -e POSTGRES_PASSWORD=123@mudar -e TZ="America/Sao_Paulo" -p 5432:5432 --restart=always -v /data:/var/lib/postgresql/data -d postgres
  1. Instalar Redis no Docker
docker run --name redis-izing -e TZ="America/Sao_Paulo" -p 6379:6379 --restart=always -d redis:latest redis-server --appendonly yes --requirepass "123@mudar"
  1. Instalar Portainer no Docker
docker run -d --name portainer -p 9000:9000 -p 9443:9443 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
  1. baixar chave repositorio google crome
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmour -o /usr/share/keyrings/chrome-keyring.gpg 
  1. adicionar repositorio
sudo sh -c 'echo "deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/chrome-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list'
  1. update apt
sudo apt update 
  1. instalar google crome
sudo apt install -y google-chrome-stable 
  1. remover arquivo padrao nginx
rm /etc/nginx/sites-enabled/default
  1. Criar o usário deploy
adduser deploy
  1. Permisão sudo deploy
usermod -aG sudo deploy
  1. Permisão docker deploy
usermod -aG docker deploy
  1. Alterar para o novo usuário
su deploy
  1. Realizar o download do node 20.x
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
  1. Instalar o node
sudo apt-get install -y nodejs
  1. Acessar o diretório raiz
cd ~
  1. baixar o repositório do izing.open.io
git clone https://github.com/cleitonme/izing.open.io.git izing.io
  1. Copiar o env de exemplo para o backend
cp izing.io/backend/.env.example izing.io/backend/.env
  1. Rodar o comando abaixo 2x para gerar JWT_SECRET e JWT_REFRESH_SECRET
openssl rand -base64 32
  1. Editar os dados abaixo e colar os valores gerados no item 31.
# ambiente
NODE_ENV=dev

# URL do backend para construção dos hooks
BACKEND_URL=https://backend.seusite.com.br

# URL do front para liberação do cors
FRONTEND_URL=https://izing.seusite.com.br

# Porta utilizada para proxy com o serviço do backend
PROXY_PORT=443

# Porta que o serviço do backend deverá ouvir
PORT=3000


# conexão com o banco de dados
DB_DIALECT=postgres
DB_TIMEZONE=-03:00
DB_PORT=5432
POSTGRES_HOST=localhost
POSTGRES_USER=izing
POSTGRES_PASSWORD=123@mudar
POSTGRES_DB=postgres


# Chaves para criptografia do token jwt
JWT_SECRET=gerado no passo 31
JWT_REFRESH_SECRET=gerado no passo 31

# Dados de conexão com o REDIS
IO_REDIS_SERVER=localhost
IO_REDIS_PORT='6379'
IO_REDIS_DB_SESSION='2'
IO_REDIS_PASSWORD=123@mudar

#CHROME_BIN=/usr/bin/google-chrome
CHROME_BIN=/usr/bin/google-chrome-stable
#CHROME_BIN=null

# tempo para randomização da mensagem de horário de funcionamento
MIN_SLEEP_BUSINESS_HOURS=10000
MAX_SLEEP_BUSINESS_HOURS=20000

# tempo para randomização das mensagens do bot
MIN_SLEEP_AUTO_REPLY=4000
MAX_SLEEP_AUTO_REPLY=6000

# tempo para randomização das mensagens gerais
MIN_SLEEP_INTERVAL=2000
MAX_SLEEP_INTERVAL=5000


# dados do RabbitMQ / Para não utilizar, basta comentar a var AMQP_URL
RABBITMQ_DEFAULT_USER=admin
RABBITMQ_DEFAULT_PASS=123456
# AMQP_URL='amqp://admin:123456@host.docker.internal:5672?connection_attempts=5&retry_delay=5'

# api oficial (integração em desenvolvimento)
API_URL_360=https://waba-sandbox.360dialog.io

# usado para mosrar opções não disponíveis normalmente.
ADMIN_DOMAIN=izing.io

# Dados para utilização do canal do facebook
VUE_FACEBOOK_APP_ID=3237415623048660
FACEBOOK_APP_SECRET_KEY=3266214132b8c98ac59f3e957a5efeaaa13500

# Forçar utilizar versão definida via cache (https://wppconnect.io/pt-BR/whatsapp-versions/)
#WEB_VERSION=2.2409.2

# Customizar opções do pool de conexões DB
#POSTGRES_POOL_MAX=100
#POSTGRES_POOL_MIN=10
#POSTGRES_POOL_ACQUIRE=30000
#POSTGRES_POOL_IDLE=10000

# Limitar Uso do Izing Usuario e Conexões
USER_LIMIT=99
CONNECTIONS_LIMIT=99
  1. Abrir para edição o arquivo .env com o comando abaixo e prencher com os dados acima. Para salvar se usa Ctrl + x
nano izing.io/backend/.env
  1. Acessando pasta do backend
cd izing.io/backend
  1. Instalando as dependências
npm install --force
  1. Buildando o backend
npm run build
  1. Reniciando docker
docker container restart postgresql
  1. Reniciando docker
docker container restart redis-izing
  1. Reniciando docker
docker container restart portainer
  1. Criando as tabelas no BD
npx sequelize db:migrate
  1. Inserindo dados em algumas tabelas do BD
npx sequelize db:seed:all
  1. Instalando o PM2
sudo npm install -g pm2
  1. Iniciando o backend com PM2
pm2 start dist/server.js --name izing-backend
  1. Gerar Startup
pm2 startup ubuntu -u deploy
  1. Gerar status parte 2
sudo env PATH=$PATH:/usr/bin pm2 startup ubuntu -u deploy --hp /home/deploy
  1. Acessando pasta do frontend
cd ../frontend
  1. copiando .env do example
cp .env.example .env
  1. Editando o arquivo .env com o comando abaixo e prencher com os dados do item 42. Para salvar se usa Ctrl + x
nano .env
  1. Dados env frontend
VUE_URL_API='https://backend.seusite.com.br'
VUE_FACEBOOK_APP_ID='23156312477653241'
  1. Criar arquivo server.js com dados do item 44. Para salvar se usa Ctrl + x
nano server.js
  1. Dados para gerar 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, 'dist/pwa')))
app.get('/*', function (req, res) {
  res.sendFile(path.join(__dirname, 'dist/pwa', 'index.html'))
})
app.listen(4444)
  1. Instalando as dependências
npm install --force
  1. Instalando Quasar
npm i @quasar/cli
  1. Buildando o frontend
npm run build
  1. Iniciando o frontend com PM2
pm2 start server.js --name izing-frontend
  1. Salvando os serviços iniciados pelo PM2
pm2 save
  1. Listar os serviços iniciados pelo PM2
pm2 list
  1. Editar os dados abaixo com a URL que será usada para acessar o frontend.
server {
  server_name izing.seusite.com.br;

  location / {
    proxy_pass http://127.0.0.1:4444;
    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;
  }

}
  1. Criar e editar o arquivo izing-frontend com o comando abaixo e prencher com os dados do item 52. Para salvar se usa Ctrl + x
sudo nano /etc/nginx/sites-available/izing-frontend
  1. Editar os dados abaixo com a URL que será usada para acessar o backend.
server {
  server_name backend.seusite.com.br;

  location / {
    proxy_pass http://127.0.0.1:3000;
    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;
  }

}
  1. Criar e editar o arquivo izing-frontend com o comando abaixo e prencher com os dados do item 54. Para salvar se usa Ctrl + x
sudo nano /etc/nginx/sites-available/izing-backend
  1. Criar link simbólico para o arquivo izing-frontend
sudo ln -s /etc/nginx/sites-available/izing-frontend /etc/nginx/sites-enabled/
  1. Criar link simbólico para o arquivo izing-backend
sudo ln -s /etc/nginx/sites-available/izing-backend /etc/nginx/sites-enabled/
  1. Editar o arquivo de configuração do nginx com o comando abaixo e prencher com os dados do item 59. adicionar antes# server_tokens off;. Para salvar se usa Ctrl + x
sudo nano /etc/nginx/nginx.conf
  1. adicionar antes# server_tokens off;
underscores_in_headers on;	
client_max_body_size 100M;
large_client_header_buffers 16 5120k;
  1. Testar as configurações do nginx
sudo nginx -t
  1. Restartar o nginx
sudo service nginx restart
  1. Instalar o suporte a pacotes Snap
sudo apt-get install snapd
  1. Instalar o pacote do notes
sudo snap install notes
  1. Instalar o pacote do certbot(SSL)
sudo snap install --classic certbot
  1. Gerar certificado
sudo certbot --nginx
  1. reniciar serviços docker
docker container restart portainer
  1. reniciar serviços docker
docker container restart postgresql
  1. reniciar serviços docker
docker container restart redis-izing

Pronto sistema instalado so acessar frontend

Usuário painel SaaS

Usuário

super@izing.io

Senha:

123456

Usuário padrão para acesso

Usuário

admin@izing.io

Senha:

123456

Problemas conexão?

  1. Outra versão js pode se tentar Na pasta backend execute
npm r whatsapp-web.js
npm install github:pedroslopez/whatsapp-web.js
rm .wwebjs_auth -Rf
rm .wwebjs_cache -Rf
pm2 restart all

Para reinstalar o whatsapp.js.. verifique no repositorio oficial se não tem alguma mais atual

Erros

"Internal server error: SequelizeConnectionError: could not open file "global/pg_filenode.map": Permission denied"

docker container restart postgresql
docker exec -u root postgresql bash -c "chown -R postgres:postgres /var/lib/postgresql/data"
docker container restart postgresql

Acesso Portainer gerar senha

"Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer."

docker container restart portainer

Depois acesse novamente url http://seuip:9000/

Recomendação de VPS boa e barata

WHAZING

Consultoria particular

Para quem gostaria de uma consultoria ou que eu faça instalação pode chamar no whatsapp (será cobrado por isso) 48 999416725