Este guia explica como configurar e rodar o backend e o front-end do Crypto Arbitrage Service localmente.
📹 Tutorial em Vídeo
Para uma explicação visual e passo a passo do processo de instalação e configuração, assista ao tutorial em vídeo:
Assistir tutorial no YouTube
🪟 Instalação no Windows
Para usuários do Windows, recomendamos usar o WSL 2 (Windows Subsystem for Linux) para executar o projeto. O WSL 2 permite rodar um ambiente Linux completo dentro do Windows, oferecendo melhor desempenho e compatibilidade com as ferramentas necessárias para o projeto.Requisitos
- Windows 10 versão 2004 ou superior (Build 19041+) ou Windows 11
- Máquina compatível com virtualização (geralmente já habilitada)
- Pelo menos 4GB de RAM (recomendado 8GB ou mais)
Passos básicos
-
Instalar o WSL 2
- Abra o PowerShell ou Terminal como administrador
- Execute:
wsl --install - Isso instalará o WSL 2 e o Ubuntu por padrão
- Reinicie o computador quando solicitado
-
Configurar o WSL 2
- Após reiniciar, abra o Ubuntu (disponível no menu Iniciar)
- Crie um usuário e senha quando solicitado
- Atualize o WSL para a versão mais recente:
wsl --update - Defina o WSL 2 como padrão:
wsl --set-default-version 2
-
Instalar o Docker
- Você pode usar o Docker Desktop com integração WSL 2 (mais fácil) ou o Docker Engine diretamente no WSL 2 (mais leve)
- O Docker Desktop pode ser baixado em: https://www.docker.com/products/docker-desktop/
- Após instalar, ative a integração com sua distribuição Linux no Docker Desktop
-
Executar o script de instalação
- Acesse o projeto dentro do WSL 2 (não use
/mnt/c, prefira/home/seu_usuario) - Execute o script
setup.shconforme descrito na seção Instalação Automatizada (Linux)
- Acesse o projeto dentro do WSL 2 (não use
Para melhor performance, mantenha seus projetos dentro do sistema de arquivos do Linux (
/home/seu_usuario) e não no sistema de arquivos do Windows (/mnt/c).Recursos adicionais
Para um guia completo e detalhado sobre WSL 2 e Docker no Windows, consulte o repositório oficial: Guia WSL2 + Docker Quickstart Este guia inclui informações sobre:- Instalação detalhada do WSL 2
- Configuração do Docker Desktop e Docker Engine
- Otimizações de performance
- Dicas e truques para desenvolvimento
- Solução de problemas comuns
🚀 Instalação Automatizada (Linux)
Para facilitar a instalação em máquinas Linux, o projeto inclui um script de setup automatizado que executa todos os passos necessários para configurar o ambiente de desenvolvimento.Como executar o script:
-
Certifique-se de que você tem permissões de execução no script:
-
Execute o script na raiz do projeto:
O que o script faz:
O scriptsetup.sh automatiza os seguintes passos:
-
Instalação do Docker e Docker Compose
- Verifica se o Docker está instalado
- Instala o Docker caso não esteja presente
- Verifica e configura o Docker Compose
-
Inicialização dos serviços Docker
- Inicia os containers do MongoDB e RabbitMQ via Docker Compose
- Aguarda os serviços estarem prontos para conexão
- Verifica se os serviços estão respondendo nas portas corretas
-
Configuração do arquivo .env
- Cria o arquivo
.envna raiz do projeto baseado em.env.example - Configura automaticamente as URIs do MongoDB e RabbitMQ para localhost
- Faz backup do arquivo
.envexistente caso já exista
- Cria o arquivo
-
Instalação do Go (Golang)
- Verifica se o Go está instalado
- Instala o Go versão 1.23.4 caso não esteja presente
- Verifica compatibilidade com a versão requerida pelo projeto
-
Compilação do Backend
- Sincroniza e corrige o
go.mod - Baixa todas as dependências do Go
- Compila o projeto backend gerando o binário
crypto-core
- Sincroniza e corrige o
-
Inicialização do Backend
- Inicia o backend em background
- Verifica se MongoDB e RabbitMQ estão acessíveis
- Salva o PID do processo em
crypto-core/backend.pid - Logs disponíveis em
crypto-core/backend.log
-
Instalação do Node.js
- Verifica se o Node.js está instalado
- Instala o Node.js versão 20.x caso não esteja presente (via NodeSource)
-
Instalação das dependências do Front-end
- Navega até a pasta
front-argitragem - Executa
npm installpara instalar todas as dependências
- Navega até a pasta
-
Inicialização do Front-end
- Constrói o projeto front-end (build de produção)
- Inicia o servidor front-end em modo produção
- Salva o PID do processo em
front-argitragem/frontend.pid - Logs disponíveis em
front-argitragem/frontend.log
Serviços após a instalação:
Após a execução bem-sucedida do script, os seguintes serviços estarão rodando:- MongoDB:
localhost:27017 - RabbitMQ:
localhost:5672(Management:localhost:15672) - Backend: Porta configurada no
.env(padrão: 8080) - Front-end: Porta configurada no build (verifique os logs)
Gerenciamento dos serviços:
Para parar os serviços iniciados pelo script:🛠️ Backend
O backend foi desenvolvido em Golang (versão 1.20) e está localizado na pastacrypto-core. Ele depende de serviços como MongoDB, RabbitMQ e opcionalmente Redis para cache, que podem ser executados via Docker. Caso o Redis não esteja disponível, o sistema automaticamente utiliza cache em memória.
Passos para rodar o backend:
- Certifique-se de que você tem o Docker instalado na sua máquina.
- Navegue até a pasta do backend:
- Suba os serviços necessários com o Docker Compose:
- Execute o backend:
🔑 Variáveis de Ambiente do Backend
O backend utiliza diversas variáveis de ambiente para configurar integrações e serviços externos. Abaixo está uma descrição de cada uma delas:- BYBIT_API_KEY: Chave de API para acessar a ByBit
- BYBIT_SECRET_KEY: Chave secreta para acessar a ByBit
- KRAKEN_API_KEY: Chave de api para acessar a Kraken
- KRAKEN_API_SECRET: Chave secreta para acessar a Kraken
- API_KEY_CRYPTO_COM: Chave de API para acessar a Crypto.com
- CRYPTO_COM_SECRET_KEY: Chave secreta para acessar a Crypto.com
- API_KEY_BINANCE: Chave de API para acessar a API da Binance.
- SECRET_KEY_BINANCE: Chave secreta correspondente à API da Binance.
- API_KEY_OKX: Chave de API para acessar a API da OKX.
- SECRET_KEY_OKX: Chave secreta correspondente à API da OKX.
- PASSPHRASE_OKX: Frase de segurança necessária para autenticação na API da OKX.
-
MONGO_URI: URI de conexão com o banco de dados MongoDB. Exemplo:
mongodb://localhost:27017. - FREE_CURRENCY_API_KEY: Chave de API para acessar o serviço de conversão de moedas Free Currency API.
- EXCHANGERATE_API_KEY: Chave de API para acessar o serviço de conversão de moedas ExchangeRate API como fallback.
-
AMQP_URI: URI de conexão com o servidor RabbitMQ. Exemplo:
amqp://adm:123456@localhost:5672/virtualhost. - TWITTER_CONSUMER_KEY: Chave de consumidor para integração com a API do Twitter.
- TWITTER_CONSUMER_SECRET: Chave secreta de consumidor para integração com a API do Twitter.
- PANIC_RECOVERY: Faz a aplicacao se recuperar de panicos (erros inesperados).
-
REDIS_HOST: Endereço do servidor Redis. Exemplo:
localhost:6379. recomendado caso voce va utilizar em alguma vm ou em um ambiente fora de containers - AWESOME_API_KEY: Chave de API para obter as cotações do Dólar. Disponível em https://awesomeapi.com.br/conta
.env na raiz do projeto ou diretamente no ambiente do sistema operacional.
🌐 Front-end
O front-end foi desenvolvido em React e está localizado na pastafront-arbitragem. Ele utiliza o npm para gerenciar dependências e rodar o servidor local.
Passos para rodar o front-end:
- Certifique-se de que você tem o Node.js (versão 18.10.0 ou superior) instalado.
- Navegue até a pasta do front-end:
- Instale as dependências do projeto:
- Inicie o servidor local:
🐳 Dependências via Docker
As dependências do backend, como MongoDB e RabbitMQ, são gerenciadas via Docker. Para subir os serviços necessários, execute o seguinte comando na pastacrypto-core:
- MongoDB:
localhost:27017 - RabbitMQ:
localhost:5672(Management UI:localhost:15672)
☁️ Provedores de Serviços Gerenciados (Alternativas Gratuitas)
Como alternativa à instalação local via Docker, você pode utilizar serviços gerenciados gratuitos para desenvolvimento e testes. Isso pode ser útil para simplificar a configuração inicial ou para testar o projeto sem precisar configurar todos os serviços localmente.MongoDB Gerenciado
Você pode usar um MongoDB gerenciado gratuito (como MongoDB Atlas) em vez de executar o MongoDB localmente via Docker. Tutorial em vídeo: Como configurar MongoDB Atlas gratuito Após criar sua conta e cluster no MongoDB Atlas, você receberá uma URI de conexão que deve ser configurada na variável de ambienteMONGO_URI no arquivo .env.
RabbitMQ Gerenciado
Existem serviços de mensageria gerenciados gratuitos que podem substituir o RabbitMQ local. Tutorial em vídeo: Como configurar RabbitMQ gerenciado gratuito Após configurar o serviço, atualize a variável de ambienteAMQP_URI no arquivo .env com a URI de conexão fornecida pelo provedor.
APIs de Conversão de Moedas
O projeto utiliza duas APIs de conversão de moedas como fallback. Você pode obter chaves de API gratuitas nos seguintes serviços:Free Currency API
- Dashboard: Free Currency API Dashboard
- Variável de ambiente:
FREE_CURRENCY_API_KEY
FREE_CURRENCY_API_KEY no arquivo .env.
ExchangeRate API
- Dashboard: ExchangeRate API Dashboard
- Variável de ambiente:
EXCHANGERATE_API_KEY
EXCHANGERATE_API_KEY no arquivo .env.
Ambas as APIs são usadas como fallback. Se uma falhar, o sistema tentará usar a outra automaticamente. Recomendamos configurar ambas para maior confiabilidade.
🚀 Sugestões de Publicação
Front-end - Netlify
Para publicar o front-end do projeto, recomendamos o uso do Netlify, uma plataforma de hospedagem gratuita especializada em aplicações web modernas. Dashboard: NetlifyVantagens do Netlify
- Plano gratuito generoso - Inclui 100GB de largura de banda e 300 minutos de build por mês
- Deploy contínuo - Integração automática com GitHub, GitLab e Bitbucket
- CDN global - Distribuição de conteúdo em servidores ao redor do mundo para melhor performance
- HTTPS automático - Certificados SSL gratuitos e renovação automática
- Preview de branches - Visualize mudanças de pull requests antes de fazer merge
- Fácil configuração - Setup simples através de interface web ou arquivo de configuração
- Serverless Functions - Suporte para funções serverless (opcional)
- Formulários - Gerenciamento de formulários sem backend (opcional)
Como publicar
O Netlify oferece duas formas principais de fazer deploy: Opção 1: Deploy via Git (Recomendado)- Crie uma conta gratuita no Netlify
- Conecte seu repositório Git ao Netlify
- Configure o build command:
npm run build - Configure o publish directory:
dist(ou o diretório de build do seu projeto) - O Netlify fará o deploy automaticamente a cada push no repositório
- Crie uma conta gratuita no Netlify
- Execute o build do projeto localmente:
npm run build - Acesse a área de deploy manual no dashboard do Netlify
- Arraste e solte a pasta de build (geralmente
dist) diretamente na interface do Netlify - O deploy será realizado instantaneamente