arcadiasuite/docs/DEPLOY_VPS.md

8.1 KiB

Guia de Deploy - Arcádia Suite em VPS

Este guia explica como fazer o deploy do Arcádia Suite em um servidor VPS (Ubuntu 22.04).


Requisitos Mínimos do Servidor

Recurso Mínimo Recomendado
RAM 4 GB 8 GB
CPU 2 cores 4 cores
Armazenamento 40 GB SSD 80 GB SSD
Sistema Ubuntu 22.04 LTS Ubuntu 22.04 LTS

1. Preparação do Servidor

1.1 Atualizar o sistema

sudo apt update && sudo apt upgrade -y

1.2 Instalar dependências básicas

sudo apt install -y curl wget git build-essential software-properties-common

2. Instalar Node.js 20

# Adicionar repositório NodeSource
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# Instalar Node.js
sudo apt install -y nodejs

# Verificar instalação
node --version  # Deve mostrar v20.x.x
npm --version

3. Instalar Python 3.11

# Adicionar repositório
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update

# Instalar Python 3.11
sudo apt install -y python3.11 python3.11-venv python3.11-dev python3-pip

# Definir como padrão (opcional)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1

# Verificar instalação
python3.11 --version

4. Instalar e Configurar PostgreSQL

4.1 Instalar PostgreSQL

sudo apt install -y postgresql postgresql-contrib

4.2 Criar banco de dados e usuário

# Acessar PostgreSQL
sudo -u postgres psql

# Executar os comandos SQL:
CREATE USER arcadia WITH PASSWORD 'sua_senha_segura';
CREATE DATABASE arcadia_suite OWNER arcadia;
GRANT ALL PRIVILEGES ON DATABASE arcadia_suite TO arcadia;
\q

4.3 Configurar acesso (se necessário)

# Editar pg_hba.conf para permitir conexões locais
sudo nano /etc/postgresql/14/main/pg_hba.conf

# Adicionar linha:
# local   arcadia_suite   arcadia                                 md5

# Reiniciar PostgreSQL
sudo systemctl restart postgresql

5. Instalar Nginx

sudo apt install -y nginx

# Habilitar na inicialização
sudo systemctl enable nginx
sudo systemctl start nginx

6. Instalar PM2 (Gerenciador de Processos)

sudo npm install -g pm2

# Configurar para iniciar automaticamente
pm2 startup systemd

7. Clonar e Configurar o Projeto

7.1 Criar diretório e clonar

# Criar diretório da aplicação
sudo mkdir -p /var/www/arcadia
sudo chown $USER:$USER /var/www/arcadia

# Clonar o repositório (substitua pela URL do seu repo)
cd /var/www/arcadia
git clone https://github.com/seu-usuario/arcadia-suite.git .

7.2 Instalar dependências Node.js

npm install

7.3 Configurar ambiente Python

# Criar ambiente virtual
python3.11 -m venv venv

# Ativar ambiente
source venv/bin/activate

# Instalar dependências Python
pip install fastapi uvicorn nfelib lxml signxml python-dotenv psycopg2-binary

# Desativar ambiente
deactivate

8. Configurar Variáveis de Ambiente

8.1 Criar arquivo .env

nano /var/www/arcadia/.env

8.2 Adicionar variáveis

# Banco de Dados
DATABASE_URL=postgresql://arcadia:sua_senha_segura@localhost:5432/arcadia_suite
PGHOST=localhost
PGPORT=5432
PGUSER=arcadia
PGPASSWORD=sua_senha_segura
PGDATABASE=arcadia_suite

# Ambiente
NODE_ENV=production

# ERPNext (se usar)
ERPNEXT_URL=https://seu-erpnext.com
ERPNEXT_API_KEY=sua_api_key
ERPNEXT_API_SECRET=seu_api_secret

# OpenAI (se usar IA)
OPENAI_API_KEY=sua_chave_openai

# Sessão
SESSION_SECRET=gere_uma_chave_aleatoria_longa_aqui

9. Build da Aplicação

cd /var/www/arcadia

# Build do frontend
npm run build

# Executar migrações do banco
npm run db:push

10. Configurar PM2

10.1 Criar arquivo de configuração

nano /var/www/arcadia/ecosystem.config.js

10.2 Conteúdo do arquivo

module.exports = {
  apps: [
    {
      name: 'arcadia-main',
      script: 'npm',
      args: 'run start',
      cwd: '/var/www/arcadia',
      env: {
        NODE_ENV: 'production',
        PORT: 5000
      },
      instances: 1,
      autorestart: true,
      watch: false,
      max_memory_restart: '1G'
    },
    {
      name: 'arcadia-fisco',
      script: '/var/www/arcadia/venv/bin/python',
      args: '-m uvicorn server.fisco.main:app --host 0.0.0.0 --port 8002',
      cwd: '/var/www/arcadia',
      autorestart: true,
      watch: false
    },
    {
      name: 'arcadia-contabil',
      script: '/var/www/arcadia/venv/bin/python',
      args: '-m uvicorn server.contabil.main:app --host 0.0.0.0 --port 8003',
      cwd: '/var/www/arcadia',
      autorestart: true,
      watch: false
    }
  ]
};

10.3 Iniciar aplicações

cd /var/www/arcadia
pm2 start ecosystem.config.js
pm2 save

11. Configurar Nginx

11.1 Criar configuração do site

sudo nano /etc/nginx/sites-available/arcadia

11.2 Conteúdo da configuração

server {
    listen 80;
    server_name seu-dominio.com.br www.seu-dominio.com.br;

    location / {
        proxy_pass http://localhost: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_cache_bypass $http_upgrade;
        proxy_read_timeout 86400;
    }

    # WebSocket para Socket.IO
    location /socket.io/ {
        proxy_pass http://localhost: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;
    }

    # APIs FastAPI
    location /api/fisco/ {
        proxy_pass http://localhost:8002/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/contabil/ {
        proxy_pass http://localhost:8003/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

11.3 Ativar site

sudo ln -s /etc/nginx/sites-available/arcadia /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

12. Instalar Certificado SSL (Let's Encrypt)

# Instalar Certbot
sudo apt install -y certbot python3-certbot-nginx

# Obter certificado
sudo certbot --nginx -d seu-dominio.com.br -d www.seu-dominio.com.br

# Renovação automática (já configurado por padrão)
sudo certbot renew --dry-run

13. Firewall (UFW)

# Habilitar UFW
sudo ufw enable

# Permitir SSH
sudo ufw allow OpenSSH

# Permitir HTTP e HTTPS
sudo ufw allow 'Nginx Full'

# Verificar status
sudo ufw status

14. Comandos Úteis

Gerenciamento PM2

# Ver status das aplicações
pm2 status

# Ver logs
pm2 logs arcadia-main
pm2 logs --lines 100

# Reiniciar aplicação
pm2 restart arcadia-main

# Reiniciar todas
pm2 restart all

# Parar aplicação
pm2 stop arcadia-main

Atualizar Aplicação

cd /var/www/arcadia

# Puxar atualizações
git pull

# Instalar novas dependências
npm install

# Rebuild
npm run build

# Reiniciar
pm2 restart all

Backup do Banco de Dados

# Backup
pg_dump -U arcadia arcadia_suite > backup_$(date +%Y%m%d).sql

# Restaurar
psql -U arcadia arcadia_suite < backup_arquivo.sql

15. Checklist Final

  • PostgreSQL rodando e acessível
  • Variáveis de ambiente configuradas (.env)
  • Build do frontend concluído
  • Migrações do banco executadas
  • PM2 iniciado com todas as aplicações
  • Nginx configurado e rodando
  • Certificado SSL instalado
  • Firewall configurado
  • Domínio apontando para o servidor

Suporte

Em caso de problemas:

  1. Verifique os logs: pm2 logs
  2. Verifique o Nginx: sudo tail -f /var/log/nginx/error.log
  3. Verifique o PostgreSQL: sudo journalctl -u postgresql

Guia criado para Arcádia Suite - Business Operating System