arcadiasuite/HOSPEDAGEM.md

14 KiB

Arcadia Suite - Guia Completo de Hospedagem e Deploy

Indice

  1. Requisitos do Servidor
  2. Variaveis de Ambiente
  3. Instalacao
  4. Banco de Dados
  5. Servicos Python
  6. Metabase (Arcadia Insights)
  7. Build e Producao
  8. Configuracao do Servidor Web (Nginx)
  9. Process Manager (PM2)
  10. SSL/HTTPS
  11. Estrutura de Portas
  12. Arcadia Plus (Laravel)
  13. Manutencao e Backups
  14. 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