14 KiB
Arcadia Suite - Guia Completo de Hospedagem e Deploy
Indice
- Requisitos do Servidor
- Variaveis de Ambiente
- Instalacao
- Banco de Dados
- Servicos Python
- Metabase (Arcadia Insights)
- Build e Producao
- Configuracao do Servidor Web (Nginx)
- Process Manager (PM2)
- SSL/HTTPS
- Estrutura de Portas
- Arcadia Plus (Laravel)
- Manutencao e Backups
- Troubleshooting
1. Requisitos do Servidor
Minimo Recomendado
- SO: Ubuntu 22.04 LTS ou Debian 12
- CPU: 4 vCPUs
- RAM: 8 GB (16 GB recomendado)
- Disco: 50 GB SSD
- Node.js: v20.x ou superior
- Python: 3.11 ou superior
- PostgreSQL: 15 ou superior
- Java: OpenJDK 11+ (para Metabase)
- PHP: 8.1+ (para Arcadia Plus, opcional)
- Composer: 2.x (para Arcadia Plus, opcional)
Instalacao de Dependencias (Ubuntu/Debian)
# Atualizar sistema
sudo apt update && sudo apt upgrade -y
# Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Python 3.11
sudo apt install -y python3.11 python3.11-venv python3-pip
# PostgreSQL 15
sudo apt install -y postgresql postgresql-contrib
# Java (para Metabase)
sudo apt install -y openjdk-11-jre-headless
# Ferramentas auxiliares
sudo apt install -y git nginx certbot python3-certbot-nginx build-essential
2. Variaveis de Ambiente
Crie um arquivo .env na raiz do projeto:
# === BANCO DE DADOS ===
DATABASE_URL=postgresql://arcadia_user:SUA_SENHA_AQUI@localhost:5432/arcadia_suite
PGHOST=localhost
PGPORT=5432
PGUSER=arcadia_user
PGPASSWORD=SUA_SENHA_AQUI
PGDATABASE=arcadia_suite
# === OPENAI (IA) ===
OPENAI_API_KEY=sk-sua-chave-openai-aqui
# === ERPNext (opcional) ===
ERPNEXT_URL=https://seu-erpnext.com
ERPNEXT_API_KEY=sua-api-key
ERPNEXT_API_SECRET=seu-api-secret
# === GITHUB (opcional - para XOS Pipeline) ===
GITHUB_TOKEN=ghp_seu-token-github
# === PRODUCAO ===
NODE_ENV=production
PORT=5000
SESSION_SECRET=gere-uma-string-secreta-longa-e-aleatoria
# === METABASE ===
MB_DB_TYPE=postgres
MB_DB_DBNAME=arcadia_metabase
MB_DB_PORT=5432
MB_DB_USER=arcadia_user
MB_DB_PASS=SUA_SENHA_AQUI
MB_DB_HOST=localhost
MB_JETTY_PORT=8088
METABASE_PORT=8088
METASET_ADMIN_EMAIL=admin@arcadia.app
METASET_ADMIN_PASSWORD=SuaSenhaMetaSet
3. Instalacao
# Clonar o repositorio
git clone https://github.com/SEU_USUARIO/arcadia-suite.git
cd arcadia-suite
# Instalar dependencias Node.js
npm install
# Instalar dependencias Python
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r python-service/requirements.txt
pip install fastapi uvicorn pandas numpy httpx pydantic nfelib lxml signxml \
cryptography zeep beautifulsoup4 psycopg2-binary matplotlib pymongo \
python-multipart python-docx pyopenssl
# Copiar arquivo de ambiente
cp .env.example .env
# Edite o .env com suas credenciais
nano .env
4. Banco de Dados
Criar banco e usuario
sudo -u postgres psql
-- Criar usuario
CREATE USER arcadia_user WITH PASSWORD 'SUA_SENHA_SEGURA';
-- Criar banco principal
CREATE DATABASE arcadia_suite OWNER arcadia_user;
-- Criar banco do Metabase (separado)
CREATE DATABASE arcadia_metabase OWNER arcadia_user;
-- Permissoes
GRANT ALL PRIVILEGES ON DATABASE arcadia_suite TO arcadia_user;
GRANT ALL PRIVILEGES ON DATABASE arcadia_metabase TO arcadia_user;
\q
Executar migracoes (Drizzle ORM)
# Sincronizar schema com o banco
npx drizzle-kit push
5. Servicos Python
O projeto utiliza servicos Python para funcionalidades especificas. Eles sao iniciados automaticamente pelo servidor Node.js, mas podem ser executados manualmente para testes:
| Servico | Porta | Funcao | Inicio Automatico |
|---|---|---|---|
| Contabil | 8003 | Motor contabil | Sim |
| BI Engine | 8004 | Business Intelligence | Sim |
| Automations | 8005 | Motor de automacoes | Sim |
| Scientist | 8001 | IA, embeddings, analise de dados | Opcional* |
| Fisco | 8002 | Motor fiscal NF-e/NFC-e | Opcional* |
| Communication | 8006 | Motor de comunicacao | Opcional* |
*Servicos opcionais podem ser ativados adicionando suas chamadas em server/index.ts.
Os servicos Contabil, BI e Automations sao iniciados automaticamente pelo server/index.ts.
6. Metabase (Arcadia Insights)
O Metabase e usado como motor de BI invisivel. Para instala-lo:
# Criar diretorio
mkdir -p metabase/plugins
# Baixar Metabase (versao 0.50.x recomendada)
wget https://downloads.metabase.com/v0.50.31/metabase.jar -O metabase/metabase.jar
# Testar execucao
java -jar metabase/metabase.jar &
O Metabase sera executado na porta 8088 e proxied pelo Node.js em /api/bi/metaset/* e /metabase/.
O script de inicio esta em metabase/start-metabase.sh e e gerenciado automaticamente pelo servidor Node.js.
7. Build e Producao
# Build do frontend (Vite) + backend
npm run build
# Iniciar em producao
npm run start
O comando npm run start executa NODE_ENV=production node dist/index.cjs na porta 5000.
8. Configuracao do Servidor Web (Nginx)
Crie o arquivo de configuracao:
sudo nano /etc/nginx/sites-available/arcadia-suite
server {
listen 80;
server_name seu-dominio.com.br;
# Redirecionar HTTP para HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name seu-dominio.com.br;
# SSL (sera configurado pelo Certbot)
ssl_certificate /etc/letsencrypt/live/seu-dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seu-dominio.com.br/privkey.pem;
# Limites
client_max_body_size 50M;
# Proxy principal (Node.js na porta 5000)
location / {
proxy_pass http://127.0.0.1:5000;
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-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
}
# WebSocket (Socket.IO)
location /socket.io/ {
proxy_pass http://127.0.0.1:5000;
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_read_timeout 86400;
}
# Arcadia Plus (Laravel, opcional)
location /plus/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Ativar o site
sudo ln -s /etc/nginx/sites-available/arcadia-suite /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
9. Process Manager (PM2)
Use PM2 para manter o servidor rodando:
# Instalar PM2 globalmente
sudo npm install -g pm2
# Iniciar a aplicacao
pm2 start dist/index.cjs --name arcadia-suite --env production
# Salvar a lista de processos
pm2 save
# Configurar para iniciar no boot
pm2 startup
Arquivo ecosystem (opcional)
Crie ecosystem.config.cjs:
module.exports = {
apps: [
{
name: "arcadia-suite",
script: "dist/index.cjs",
env: {
NODE_ENV: "production",
PORT: 5000,
},
instances: 1,
max_memory_restart: "1G",
log_date_format: "YYYY-MM-DD HH:mm:ss",
error_file: "logs/error.log",
out_file: "logs/output.log",
},
{
name: "arcadia-metabase",
script: "java",
args: "-jar metabase/metabase.jar",
interpreter: "none",
env: {
MB_DB_TYPE: "postgres",
MB_DB_DBNAME: "arcadia_metabase",
MB_DB_PORT: "5432",
MB_DB_USER: "arcadia_user",
MB_DB_PASS: "SUA_SENHA_AQUI",
MB_DB_HOST: "localhost",
MB_JETTY_PORT: "8088",
},
max_memory_restart: "2G",
},
],
};
# Iniciar com ecosystem
pm2 start ecosystem.config.cjs
pm2 save
10. SSL/HTTPS
# Certificado gratuito com Let's Encrypt
sudo certbot --nginx -d seu-dominio.com.br
# Renovacao automatica (ja configurada pelo Certbot)
sudo certbot renew --dry-run
11. Estrutura de Portas
| Porta | Servico | Acesso |
|---|---|---|
| 5000 | Node.js (Express + Vite) | Principal - proxied pelo Nginx |
| 8088 | Metabase (Arcadia Insights) | Interno - proxied via /api/bi/metaset e /metabase |
| 8003 | Python Contabil | Interno - inicio automatico |
| 8004 | Python BI Engine | Interno - inicio automatico |
| 8005 | Python Automations | Interno - inicio automatico |
| 8001 | Python Scientist | Interno - opcional |
| 8002 | Python Fisco | Interno - opcional |
| 8006 | Node Communication | Interno - opcional |
| 8080 | Arcadia Plus (Laravel) | Interno - proxied via /plus |
Apenas a porta 80 (HTTP) e 443 (HTTPS) devem estar expostas publicamente via Nginx.
12. Arcadia Plus (Laravel)
Se voce utiliza o modulo Plus (ERP Laravel):
cd plus
# Instalar dependencias PHP
composer install --no-dev --optimize-autoloader
# Configurar ambiente
cp .env.example .env
php artisan key:generate
# Configurar banco (usar schema separado no mesmo PostgreSQL)
# Edite plus/.env com as credenciais do banco
# Migracoes
php artisan migrate
# Otimizar para producao
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Servir (porta 8080)
php artisan serve --host=0.0.0.0 --port=8080
13. Manutencao e Backups
Backup do Banco de Dados
# Criar backup
pg_dump -U arcadia_user -h localhost arcadia_suite > backup_$(date +%Y%m%d_%H%M%S).sql
# Restaurar backup
psql -U arcadia_user -h localhost arcadia_suite < backup_20260209.sql
Atualizar a Aplicacao
cd /caminho/para/arcadia-suite
# Parar a aplicacao
pm2 stop arcadia-suite
# Atualizar codigo
git pull origin main
# Reinstalar dependencias
npm install
# Rebuild
npm run build
# Migrar banco (se necessario)
npx drizzle-kit push
# Reiniciar
pm2 restart arcadia-suite
Logs
# Ver logs em tempo real
pm2 logs arcadia-suite
# Ver logs do Nginx
sudo tail -f /var/log/nginx/error.log
14. Troubleshooting
Erro: "Cannot find module"
npm install
npm run build
Erro: "ECONNREFUSED" no banco
# Verificar se PostgreSQL esta rodando
sudo systemctl status postgresql
sudo systemctl start postgresql
Erro: "Port already in use"
# Encontrar processo na porta
lsof -i :5000
kill -9 PID_DO_PROCESSO
Servicos Python nao iniciam
# Verificar Python
python3.11 --version
# Verificar ambiente virtual
source .venv/bin/activate
pip list | grep fastapi
Metabase nao inicia
# Verificar Java
java -version
# Verificar se metabase.jar existe
ls -la metabase/metabase.jar
# Executar manualmente para ver erros
java -jar metabase/metabase.jar
Hospedagem em Cloud (Alternativas)
VPS Recomendados
- Hetzner: A partir de EUR 4/mes (melhor custo-beneficio)
- DigitalOcean: A partir de USD 12/mes (4GB RAM)
- Vultr: A partir de USD 12/mes
- AWS EC2: t3.medium (sob demanda)
- Contabo: A partir de EUR 5/mes (alto recurso por preco)
Deploy com Docker (Alternativa)
Se preferir usar Docker, crie um Dockerfile:
FROM node:20-slim
WORKDIR /app
# Instalar Python e Java
RUN apt-get update && apt-get install -y \
python3.11 python3.11-venv python3-pip \
openjdk-11-jre-headless \
&& rm -rf /var/lib/apt/lists/*
# Copiar e instalar dependencias
COPY package.json ./
RUN npm install --production
# Instalar dependencias Python
COPY python-service/requirements.txt ./python-requirements.txt
RUN python3.11 -m venv /app/.venv && \
/app/.venv/bin/pip install -r python-requirements.txt
# Copiar codigo
COPY . .
# Build
RUN npm run build
EXPOSE 5000
CMD ["npm", "run", "start"]
# docker-compose.yml
version: "3.8"
services:
app:
build: .
ports:
- "5000:5000"
environment:
- DATABASE_URL=postgresql://arcadia_user:senha@db:5432/arcadia_suite
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: arcadia_user
POSTGRES_PASSWORD: senha
POSTGRES_DB: arcadia_suite
volumes:
- pgdata:/var/lib/postgresql/data
metabase:
image: metabase/metabase:v0.50.31
ports:
- "8088:8088"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: arcadia_metabase
MB_DB_PORT: 5432
MB_DB_USER: arcadia_user
MB_DB_PASS: senha
MB_DB_HOST: db
MB_JETTY_PORT: 8088
volumes:
pgdata:
Checklist de Deploy
- Servidor provisionado com requisitos minimos
- PostgreSQL instalado e configurado
- Node.js 20 instalado
- Python 3.11 instalado
- Repositorio clonado
- Dependencias instaladas (npm install)
- Dependencias Python instaladas
- Arquivo .env configurado com todas as variaveis
- Banco de dados criado e migracoes executadas
- Build de producao executado (npm run build)
- Metabase baixado e configurado
- PM2 configurado e aplicacao rodando
- Nginx configurado como reverse proxy
- SSL/HTTPS configurado com Certbot
- Firewall configurado (portas 80 e 443 abertas)
- Backup automatico do banco configurado
- Dominio apontando para o servidor
Documento gerado em 09/02/2026 - Arcadia Suite v1.0