Primeiro commit
This commit is contained in:
309
DEPLOY-GUIDE.md
Normal file
309
DEPLOY-GUIDE.md
Normal file
@@ -0,0 +1,309 @@
|
||||
# 🚀 Guia de Deploy - Liberi Kids Sistema de Estoque
|
||||
|
||||
## 📋 Pré-requisitos
|
||||
|
||||
- Node.js 18+ instalado
|
||||
- Conta no Supabase (já configurada)
|
||||
- Dados de acesso ao Supabase
|
||||
|
||||
## 🌐 Opções de Deploy
|
||||
|
||||
### 1. 🖥️ **SERVIDOR LOCAL (Produção)**
|
||||
|
||||
#### Preparação do Build
|
||||
```bash
|
||||
# 1. Entre na pasta do projeto
|
||||
cd /home/tiago/Downloads/app_estoque
|
||||
|
||||
# 2. Instale dependências (se não instaladas)
|
||||
npm install
|
||||
|
||||
# 3. Entre na pasta do cliente
|
||||
cd client
|
||||
|
||||
# 4. Instale dependências do frontend
|
||||
npm install
|
||||
|
||||
# 5. Faça o build de produção
|
||||
npm run build
|
||||
|
||||
# 6. Volte para a pasta raiz
|
||||
cd ..
|
||||
```
|
||||
|
||||
#### Configuração do Servidor
|
||||
```bash
|
||||
# 1. Crie arquivo de configuração de produção
|
||||
cp .env.example .env.production
|
||||
|
||||
# 2. Edite as variáveis de ambiente
|
||||
nano .env.production
|
||||
```
|
||||
|
||||
**Conteúdo do .env.production:**
|
||||
```env
|
||||
NODE_ENV=production
|
||||
PORT=5000
|
||||
SUPABASE_URL=sua_url_do_supabase
|
||||
SUPABASE_ANON_KEY=sua_chave_anonima_do_supabase
|
||||
```
|
||||
|
||||
#### Executar em Produção
|
||||
```bash
|
||||
# Opção 1: Execução simples
|
||||
npm start
|
||||
|
||||
# Opção 2: Com PM2 (recomendado)
|
||||
npm install -g pm2
|
||||
pm2 start server-supabase.js --name "liberi-kids"
|
||||
pm2 startup
|
||||
pm2 save
|
||||
```
|
||||
|
||||
#### Configurar Nginx (Opcional)
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name seu-dominio.com;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. ☁️ **DEPLOY EM NUVEM**
|
||||
|
||||
#### A. **Vercel (Recomendado - Gratuito)**
|
||||
|
||||
1. **Preparação:**
|
||||
```bash
|
||||
# 1. Instale Vercel CLI
|
||||
npm install -g vercel
|
||||
|
||||
# 2. Faça login
|
||||
vercel login
|
||||
|
||||
# 3. Configure o projeto
|
||||
vercel
|
||||
```
|
||||
|
||||
2. **Configuração no Vercel:**
|
||||
- Build Command: `cd client && npm run build`
|
||||
- Output Directory: `client/build`
|
||||
- Install Command: `npm install && cd client && npm install`
|
||||
|
||||
3. **Variáveis de Ambiente no Vercel:**
|
||||
```
|
||||
SUPABASE_URL=sua_url_do_supabase
|
||||
SUPABASE_ANON_KEY=sua_chave_anonima_do_supabase
|
||||
```
|
||||
|
||||
#### B. **Netlify (Alternativa Gratuita)**
|
||||
|
||||
1. **Via Git:**
|
||||
- Conecte seu repositório GitHub
|
||||
- Build Command: `cd client && npm run build`
|
||||
- Publish Directory: `client/build`
|
||||
|
||||
2. **Via CLI:**
|
||||
```bash
|
||||
npm install -g netlify-cli
|
||||
netlify login
|
||||
netlify deploy --prod --dir=client/build
|
||||
```
|
||||
|
||||
#### C. **Railway (Backend + Frontend)**
|
||||
|
||||
1. **Preparação:**
|
||||
```bash
|
||||
# 1. Instale Railway CLI
|
||||
npm install -g @railway/cli
|
||||
|
||||
# 2. Login
|
||||
railway login
|
||||
|
||||
# 3. Deploy
|
||||
railway deploy
|
||||
```
|
||||
|
||||
#### D. **Heroku (Pago)**
|
||||
|
||||
1. **Preparação:**
|
||||
```bash
|
||||
# 1. Instale Heroku CLI
|
||||
# 2. Login
|
||||
heroku login
|
||||
|
||||
# 3. Crie app
|
||||
heroku create liberi-kids-estoque
|
||||
|
||||
# 4. Configure variáveis
|
||||
heroku config:set SUPABASE_URL=sua_url
|
||||
heroku config:set SUPABASE_ANON_KEY=sua_chave
|
||||
|
||||
# 5. Deploy
|
||||
git push heroku main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. 🐳 **DOCKER (Containerização)**
|
||||
|
||||
#### Dockerfile
|
||||
```dockerfile
|
||||
# Dockerfile
|
||||
FROM node:18-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copiar package.json
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
|
||||
# Copiar código do servidor
|
||||
COPY server-supabase.js ./
|
||||
COPY sql/ ./sql/
|
||||
|
||||
# Copiar e buildar frontend
|
||||
COPY client/ ./client/
|
||||
WORKDIR /app/client
|
||||
RUN npm install && npm run build
|
||||
|
||||
# Voltar para raiz
|
||||
WORKDIR /app
|
||||
|
||||
EXPOSE 5000
|
||||
|
||||
CMD ["node", "server-supabase.js"]
|
||||
```
|
||||
|
||||
#### Docker Compose
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
liberi-kids:
|
||||
build: .
|
||||
ports:
|
||||
- "5000:5000"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- SUPABASE_URL=${SUPABASE_URL}
|
||||
- SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY}
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
#### Comandos Docker
|
||||
```bash
|
||||
# Build e run
|
||||
docker-compose up -d
|
||||
|
||||
# Ou build manual
|
||||
docker build -t liberi-kids .
|
||||
docker run -p 5000:5000 -e SUPABASE_URL=sua_url liberi-kids
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 **Configurações Importantes**
|
||||
|
||||
### 1. **Variáveis de Ambiente**
|
||||
```env
|
||||
# Obrigatórias
|
||||
SUPABASE_URL=https://seu-projeto.supabase.co
|
||||
SUPABASE_ANON_KEY=sua_chave_anonima
|
||||
|
||||
# Opcionais
|
||||
NODE_ENV=production
|
||||
PORT=5000
|
||||
```
|
||||
|
||||
### 2. **Configuração do Supabase**
|
||||
- Certifique-se que as políticas RLS estão configuradas
|
||||
- Verifique se todas as tabelas foram criadas
|
||||
- Configure CORS se necessário
|
||||
|
||||
### 3. **Segurança**
|
||||
- Use HTTPS em produção
|
||||
- Configure firewall adequadamente
|
||||
- Mantenha as chaves do Supabase seguras
|
||||
- Use variáveis de ambiente para dados sensíveis
|
||||
|
||||
---
|
||||
|
||||
## 📱 **Acesso Móvel**
|
||||
|
||||
### PWA (Progressive Web App)
|
||||
A aplicação já está configurada como PWA:
|
||||
- Funciona offline (parcialmente)
|
||||
- Pode ser instalada no celular
|
||||
- Interface responsiva
|
||||
|
||||
### Configuração de Domínio
|
||||
```bash
|
||||
# Para usar domínio próprio
|
||||
# 1. Configure DNS apontando para seu servidor
|
||||
# 2. Configure SSL/TLS (Let's Encrypt)
|
||||
# 3. Atualize configurações do Supabase se necessário
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚨 **Troubleshooting**
|
||||
|
||||
### Problemas Comuns:
|
||||
1. **Erro de CORS:** Configure headers no servidor
|
||||
2. **Build falha:** Verifique dependências do Node.js
|
||||
3. **Supabase não conecta:** Verifique URLs e chaves
|
||||
4. **Arquivos não encontrados:** Verifique paths do build
|
||||
|
||||
### Logs e Monitoramento:
|
||||
```bash
|
||||
# PM2 logs
|
||||
pm2 logs liberi-kids
|
||||
|
||||
# Docker logs
|
||||
docker logs container-name
|
||||
|
||||
# Vercel logs
|
||||
vercel logs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 **Recomendações**
|
||||
|
||||
### Para Pequenas Empresas:
|
||||
1. **Vercel** (frontend) + **Supabase** (backend/DB) - **GRATUITO**
|
||||
2. **Railway** (fullstack) - **Barato e simples**
|
||||
|
||||
### Para Empresas Médias:
|
||||
1. **VPS** (DigitalOcean, Linode) + **Docker**
|
||||
2. **AWS/Google Cloud** com auto-scaling
|
||||
|
||||
### Para Desenvolvimento:
|
||||
1. **Servidor local** com PM2
|
||||
2. **Docker** para ambiente consistente
|
||||
|
||||
---
|
||||
|
||||
## 📞 **Suporte**
|
||||
|
||||
Se precisar de ajuda com o deploy:
|
||||
1. Verifique os logs de erro
|
||||
2. Confirme configurações do Supabase
|
||||
3. Teste APIs individualmente
|
||||
4. Verifique conectividade de rede
|
||||
|
||||
**A aplicação está pronta para produção! 🎉**
|
||||
Reference in New Issue
Block a user