8.1 KiB
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:
- Verifique os logs:
pm2 logs - Verifique o Nginx:
sudo tail -f /var/log/nginx/error.log - Verifique o PostgreSQL:
sudo journalctl -u postgresql
Guia criado para Arcádia Suite - Business Operating System