blog

Instalando uma aplicação NodeJS no Debian 12 (bookworm)

Para instalar uma aplicação em NodeJS no Debian 12 (bookworm) pressiga com os seguintes passos.

1º Download e instalação do Node Source

Em https://github.com/nodesource/distributions selecione a versão desejada, nesse caso usaremos versão 20 para Debian

Using Debian, as root

curl -fsSL https://deb.nodesource.com/setup_20.x | bash - &&\
apt-get install -y nodejs

2ª Confira a versão

nodejs --version

3º Atualize o NPM

npm install npm@latest
npm install -g npm@10.4.0

4ª Após acessar o diretório com aplicação NodeJS, execute:

1 –  Para instalar as dependências

npm install

2 –  Para buildar os fontes

npm run build

3 –  Para executar aplicação

npm run start

5º Para configurar a aplicação como serviço, instale o PM2

npm install pm2 -g

6ª Adicionando a plicação no PM2 e Configurando ao AutoStartup

1- De dentro do diretório da aplicação, execute:

pm2 start 'npm run start' --name Frontend
pm2 list
pm2 save
pm2 startup
pm2 save
pm2 examples (para maiores informações)

 

 

Como instalar .NET 8 (dotnet 8) no Debian 12 (bookworm), Iniciar uma Aplicação ASP.Net MVC, Publicar, Compilar e Iniciar como Serviço – Copy

Segue um breve passo-a-passo de como instalar o .NET 8 no Ubuntu 22.04.

1 – Instalação do .NET SDK e RunTime

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0

sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-8.0

2 – Criando uma Aplicação MVC

mkdir /apps
cd /apps
dotnet new mvc -o teste
dotnet dev-certs https --trust

3 – Testando a Aplicação via Console

De dentro do diretório teste execute

dotnet run

Após realizar qualquer mudança utilize do build para compilar novamente

dotnet build

4 – Publicando uma Aplicação .NET

De dentro do diretório teste execute o dotnet com paramentro publish

dotnet publish -c Release -o ./bin/Publish

5 – Testando aplicação publicada, executando o DLL

dotnet bin/Publish/teste.dll

6 – Configurnado uma aplicação .NET como Serviço no Linux

Acessar o diretório System de Systemd

cd /etc/systemd/system

--> Criar o arquivo 
vim app.service

--> Editar o arquivo com os seguintes dados.

[Unit]
Description=App Teste

[Service]
WorkingDirectory=/app/teste/bin/Publish
ExecStart=/usr/bin/dotnet /app/teste/bin/Publish/teste.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=App-Teste
User=ubuntu

[Install]
WantedBy=multi-user.target

Instale e inicie o seviço

systemctl enable app.service

systemctl start app.service

se necessário

systemctl daemon-reload

Em um prompt de comando use o seguinte comando para acompanhar o log para possíveis erros.

journalctl | tail -n 300

Como instalar MySql 8 no Debian 12 (bookworm)

Como instalar MySql 8 no Debian 12.

Para realizar a instalação siga os seguintes passos;

1 º Realizar o update e se necessário, instalar o wget

apt update
apt install wget -y

2 º Realizar o download do repositório do MySql e instalação do mesmo.

wget https://repo.mysql.com//mysql-apt-config_0.8.29-1_all.deb
apt install ./mysql-apt-config_0.8.29-1_all.deb -y
apt update

Ps. Sinta-se avontade para baixar o resitório mais recente no site da MySQl

https://dev.mysql.com/downloads/

Em Configuring mysql-apt-config:

  1. Selecione Mysql Server e Cluster
  2. Confirme MySql Server
  3. Confirme com OK
  4. Confirme com OK

Caso precise refazer alguma configuração execute:

dpkg-reconfigure mysql-apt-config

Instale o MySql

apt update
apt install mysql-server -y

3º Configure os serviços

systemctl enable --now mysql
systemctl status mysql

4º Execute o Secure Instalations

mysql_secure_installation

 

Press y|Y for Yes, any other key for No: Y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

 

 

Como instalar .NET 8 (dotnet 8) no Ubuntu 22.04 (LTS), Iniciar uma Aplicação ASP.Net MVC, Publicar, Compilar e Iniciar como Serviço

Segue um breve passo-a-passo de como instalar o .NET 8 no Ubuntu 22.04.

1 – Instalação do .NET

declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

dpkg -i packages-microsoft-prod.deb

rm packages-microsoft-prod.deb

sudo apt update

apt install dotnet-sdk-8.0

2 – Criando uma Aplicação MVC

mkdir /apps
cd /apps
dotnet new mvc -o teste
dotnet dev-certs https --trust

3 – Testando a Aplicação via Console

De dentro do diretório teste execute

dotnet run

Após realizar qualquer mudança utilize do build para compilar novamente

dotnet build

4 – Publicando uma Aplicação .NET

De dentro do diretório teste execute o dotnet com paramentro publish

dotnet publish -c Release -o ./bin/Publish

5 – Testando aplicação publicada, executando o DLL

dotnet bin/Publish/teste.dll

6 – Configurnado uma aplicação .NET como Serviço no Linux

Acessar o diretório System de Systemd

cd /etc/systemd/system

--> Criar o arquivo 
vim app.service

--> Editar o arquivo com os seguintes dados.

[Unit]
Description=App Teste

[Service]
WorkingDirectory=/app/teste/bin/Publish
ExecStart=/usr/bin/dotnet /app/teste/bin/Publish/teste.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=App-Teste
User=ubuntu

[Install]
WantedBy=multi-user.target

Em um prompt de comando use o seguinte comando para acompanhar o log para possíveis erros.

tail -f /var/log/syslog

Instale e inicie o seviço

systemctl enable app.service

systemctl start app.service

se necessário

systemctl daemon-reload

 

FileBrowser Docker Cmpose

FileBrowser é um aplicativo que oferece uma solução para gerenciar arquivos e pastas em dispositivos móveis, permitindo aos usuários acessar, organizar e compartilhar seus dados de maneira eficiente. Ele atua como um explorador de arquivos avançado, fornecendo uma interface amigável para navegar pelo sistema de arquivos do dispositivo.

Com o FileBrowser, os usuários podem realizar diversas tarefas, como copiar, colar, renomear e excluir arquivos, além de criar e organizar pastas. O aplicativo também oferece recursos avançados, como a capacidade de conectar-se a servidores remotos, como FTP, SFTP, WebDAV e outros, permitindo o gerenciamento de arquivos em diferentes locais.

Além disso, o FileBrowser facilita a transferência de arquivos entre dispositivos, suportando a transferência de dados por meio de Wi-Fi e Bluetooth. Essa funcionalidade é útil para compartilhar documentos, fotos e outros tipos de arquivos entre dispositivos móveis ou entre dispositivos móveis e computadores.

Em resumo, o FileBrowser é uma ferramenta versátil para gerenciamento de arquivos em dispositivos móveis, oferecendo funcionalidades avançadas para facilitar o acesso, organização e compartilhamento de dados.

 

Ler mais

Download Oficial Windows Server e Windows 10

Download do Windows Server e Widows 10 e Windows 11 pelo site oficial da Microsoft

 

https://techcommunity.microsoft.com/t5/windows-server-for-it-pro/accessing-trials-and-kits-for-windows-server/m-p/3361205

 

Zabbix Server em Docker Compose

Segue a versão do yaml do docker compose para Zabbix  Server Mysql

Ler mais

Instalando N8N via Docker Compose

  • Para instalar n8n via docker compose utilize a seguinte yaml
  • Configure proxy reverso do Nginx de n8n.minhaempresa.com.br para 127.0.0.1:5678
version: "3.7"
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ./n8n_data:/home/node/.n8n
volumes:
  n8n_data:
    external: true
  • O arquivo .env deve estar no mesmo diretório do yaml
  • Chmar do docker com docker-compose up
  • Irá notar um erro de acesso o arquivo, então parar o docker e…
chmod -R 777 n8n_data

Com isso o acesso deve estar normalizado.

 

 

Integração Typebot com Chatwoot via N8N

Roteiro para criação de chatbot.

Pré requisitos
  • Ter instaldo e configurado o n8n.
  • Ter instaldo e configurado o TypeBot.
  • Ter instaldo e configurado o EvolutionAPI.

Passo 1 – Criar instância com EvolutionAPI

curl -X POST http://127.0.0.1:8081/instance/create \
-H "Content-Type: application/json" \
-H "apikey: Lqxb8hZvimasdfadsfIqQEYikZEmN5gYg3LKiHT" \
-d '{
    "instanceName": "TypeBot",
    "token": "",
    "qrcode": true,
    "number": "55629841xxxx6"
}'

Passo 2 – Configurar instância criada para conectar com TypeBot

curl -X POST http://127.0.0.1:8081/typebot/set/TypeBot \
-H "Content-Type: application/json" \
-H "apikey: Lqxb8hZvimZi2L0OXOxdfgsdfgdsgIqQEYikZEmN5gYg3LKiHT" \
-d '{
    "enabled": true,
    "url": "https://bot.meutypebot.com.br",
    "typebot":  "NomeDoFlowDoTypeBot",
    "expire": 20,
    "keyword_finish": "#SAIR",
    "delay_message": 1000,
    "unknown_message": "Mensagem não reconhecida",
    "listening_from_me": false
}'

Passo 3 – Ao concluir fluxo do TypeBot redirecionar conversa para o ChatWoot via N8N

  • Criar variável remoteJid para pegar o número do remetente.
  • Criar variável numeroLimpo para remover sufixo.
  • Após construir todo fluxo criar um Webhook com as seguintes variáveis
    • URL do Webhook – https://n8n.minhaempresa.com.br/webhook-test/typebot
    • Method POST
    • Body:
      {
        "number": "{{numeroLimpo}}",
        "name": "{{name}}"
      }

Passo 4- Configurar N8N para receber o webhook e enviar para Chatwoot

  • Fazer downlaod do flow n8n
  • Em Infobase1 Configurar
    • Token (Chatwoot)
    • Url Chatwoot
    • ID Conta
    • ID Caixa
    • NomeContato
      • TypeBot Minha Empresa
    • MensagemEnvio
      • ” Contato recebido via TypeBot “

Basicamente é isso.

Tutorial – EvolutionAPI – Instalando e Usando

Para o sucesso desse tutorial presume-se que o Chatwoot encontra-se instalado e configurado.

Documentação Oficial: http://doc.evolution-api.com/

Git para download: https://github.com/EvolutionAPI/evolution-api

Passo 1 – Baixar e instalar via Docker-Compose o EvolutionAPI

cd 
git clone https://github.com/EvolutionAPI/evolution-api.git
  • Renomear docker-compose.yaml.example para docker-compose.yaml.example
mv docker-compose.yaml.example docker-compose.yaml

Passo 2 – Configurar o arquivo .env

cd Docker
mv .env.exemple .env
vim .env
  • Principais ajustes dentro do arquivo .env são
  • Server URL : Endereço e porta do endopint que irá receber instruções de API
  • Name: Nome que irá aparecer no WhatsApp do Cliente
  • AUTHENTICATION_API_KEY: Senha que irá proteger a API do seu endpoint. Gere uma senha nova. Sugestão de gerador: https://generate-random.org/api-key-generator
# Server URL - Set your application url
SERVER_URL=http://192.168.0.254:8081

# Name that will be displayed on smartphone connection
CONFIG_SESSION_PHONE_CLIENT=CuidadoDigital

## Define a global apikey to access all instances.
### OBS: This key must be inserted in the request header to create an instance.
AUTHENTICATION_API_KEY=Lqxb8hZvimZi2L0OXOxeoy7OmF91tChJjnoC6h5tKejIqQEYikZEmN5gYg3LKiHT

  • Levantar o seviço dentro de ~/evolution-api
cd ~/evolution-api
docker-compose up -d
  • Teste o serviço com seguinte comando:
# Comando
curl 127.0.0.1:8081

# Resposta esperada
{"status":200,"message":"Welcome to the Evolution API, it is working!","version":"1.5.1"}

Passo 3 – Usando EvolutionAPI

  • Criando uma instância
  • Ajustar a URL para o seu endpoint
  • Ajustar APIKEY: ( a mesma do passo anterior)
  • Definir o InstanceName: ( Nome da caixa de entrada que irá aparecer dentro do chatwoot.
  • Chatwoot_account_id: Pegar o ID dentro do Chatwoot, a caixa será instalada dentro desse ID
  • Chatwoot_token: cndZK3xzxxxxxUNzfxxx8FPx (Pegar o Token dentro do Chatwoot e colar aqui)
  • Chatwoot_url: https://app.minhaempresa.com.br/ (Url do Chatwoot)
curl -X POST http://127.0.0.1:8081/instance/create \
-H "apikey: B6D711FCDE4D4120E713976" \
-H "Content-Type: application/json" \
-d '{
"instanceName": "Whatsapp",
"token": "",
"qrcode": true,
"chatwoot_account_id": 1,
"chatwoot_token": "cndZK3pd6safasdfas1seb27oUNzf8FPx",
"chatwoot_url": "https://app.minhaempresa.com.br/",
"chatwoot_sign_msg": true,
"chatwoot_reopen_conversation": true,
"chatwoot_conversation_pending": false
}'
  • Ajustando parametros de uma instância
  • Obs. O último parametro da URL é nome da caixa postal criada anteriormente.
  • reject_call: true ( Utilize esse recurso para rejeitar automaticamente chamadas)
  • msg_call: “Não recebemos ligação” ( Se reject_call estiver true uma mensagem será enviada)
  • groups_ignore: true ( Ignorar grupos de Whatsapp
  • always_online: true ( Mostrar sempre Online
  • read_messages: false ( Se false, as mensagens no smartphone aparecerão como não lidas. Se true as mensagens serão marcadas como lida)
  • read_status: false ( Ler status)
curl -X POST http://127.0.0.1:8081/settings/set/Whatsapp \
-H "apikey: B6D711FCDE4D4FD5936544120E713976" \
-H "Content-Type: application/json" \
-d '{
"reject_call": false,
"msg_call": "",
"groups_ignore": true,
"always_online": true,
"read_messages": false,
"read_status": false
}'
  • Logout de uma instância
curl -X DELETE http://127.0.0.1:8081/instance/logout/Whatsapp \
-H "apikey: B6D711FCDE4D4FD5936544120E713976" \
-H "Content-Type: application/json"
  • Apagando uma instância
curl -X DELETE http://127.0.0.1:8081/instance/delete/Whatsapp \
-H "apikey: B6D711FCDE4D4FD5936544120E713976" \
-H "Content-Type: application/json"
  • Buscando Instâncias Ativas
curl -X GET http://127.0.0.1:8081/instance/fetchInstances \
-H "apikey: B6D711FCDE4D4FD5936544120E713976" \
-H "Content-Type: application/json"
  • Reiniciando uma instência
curl -X GET http://127.0.0.1:8081/instance/restart/Whatsapp \
-H "apikey: B6D711FCDE4D4FD5936544120E713976" \
-H "Content-Type: application/json"