chore: sincroniza projeto para gitea

This commit is contained in:
Tiago
2025-11-29 21:31:52 -03:00
parent 33d8645eb4
commit 7e7a0f8867
129 changed files with 24999 additions and 6757 deletions

395
DEPLOY-SERVIDOR-LOCAL.md Normal file
View File

@@ -0,0 +1,395 @@
# 🖥️ Deploy em Servidor Local - Liberi Kids
Guia completo para rodar o sistema no servidor local e manter funcionando automaticamente, mesmo após reinicializações.
---
## 📋 Pré-requisitos
```bash
# Node.js 18+
node --version
# NPM
npm --version
# PM2 (gerenciador de processos)
sudo npm install -g pm2
```
---
## 🚀 Método 1: PM2 (Recomendado - Mais Fácil)
### 1⃣ Instalação Inicial
```bash
# 1. Entre no diretório do projeto
cd /home/tiago/Downloads/app_estoque_v1.0.0
# 2. Instale as dependências
npm install
cd client && npm install && cd ..
# 3. Configure o .env
cp .env.example .env
nano .env # Configure suas credenciais do Supabase
# 4. Faça o build do frontend
npm run build
```
### 2⃣ Iniciar com PM2
```bash
# Inicia o servidor com PM2
pm2 start ecosystem.config.js
# Verifica o status
pm2 status
# Ver logs em tempo real
pm2 logs liberi-kids-estoque
# Ver logs específicos
pm2 logs liberi-kids-estoque --lines 100
```
### 3⃣ Configurar Inicialização Automática
```bash
# Salva a configuração atual
pm2 save
# Configura para iniciar no boot do sistema
pm2 startup
# Execute o comando que o PM2 mostrar (algo como):
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u seu-usuario --hp /home/seu-usuario
```
### 4⃣ Comandos Úteis do PM2
```bash
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Parar aplicação
pm2 stop liberi-kids-estoque
# Remover do PM2
pm2 delete liberi-kids-estoque
# Ver informações detalhadas
pm2 show liberi-kids-estoque
# Monitorar em tempo real
pm2 monit
# Ver logs de erro
pm2 logs liberi-kids-estoque --err
# Limpar logs antigos
pm2 flush
```
### 5⃣ Atualizar Aplicação
```bash
# 1. Faça as alterações no código
# 2. Se alterou o frontend, faça o build
cd client && npm run build && cd ..
# 3. Reinicie o PM2
pm2 restart liberi-kids-estoque
# Ou faça reload sem downtime
pm2 reload liberi-kids-estoque
```
---
## 🔧 Método 2: Systemd (Mais Robusto)
### 1⃣ Criar Serviço Systemd
```bash
# Crie o arquivo de serviço
sudo nano /etc/systemd/system/liberi-kids.service
```
**Conteúdo do arquivo:**
```ini
[Unit]
Description=Liberi Kids - Sistema de Estoque
After=network.target
[Service]
Type=simple
User=tiago
WorkingDirectory=/home/tiago/Downloads/app_estoque_v1.0.0
Environment=NODE_ENV=production
Environment=PORT=5000
ExecStart=/usr/bin/node server-supabase.js
Restart=always
RestartSec=10
StandardOutput=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/system.log
StandardError=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/error.log
[Install]
WantedBy=multi-user.target
```
### 2⃣ Ativar o Serviço
```bash
# Criar diretório de logs
mkdir -p logs
# Recarregar systemd
sudo systemctl daemon-reload
# Habilitar para iniciar no boot
sudo systemctl enable liberi-kids
# Iniciar o serviço
sudo systemctl start liberi-kids
# Verificar status
sudo systemctl status liberi-kids
```
### 3⃣ Comandos do Systemd
```bash
# Ver status
sudo systemctl status liberi-kids
# Parar serviço
sudo systemctl stop liberi-kids
# Reiniciar serviço
sudo systemctl restart liberi-kids
# Ver logs
sudo journalctl -u liberi-kids -f
# Ver logs das últimas 100 linhas
sudo journalctl -u liberi-kids -n 100
# Desabilitar inicialização automática
sudo systemctl disable liberi-kids
```
---
## 🔥 Script de Deploy Rápido
Criei um script para facilitar o deploy. Execute:
```bash
chmod +x scripts/deploy-servidor.sh
./scripts/deploy-servidor.sh
```
---
## 🌐 Configurar Nginx (Opcional)
Se quiser usar um domínio ou porta 80/443:
```bash
# Instalar Nginx
sudo apt install nginx -y
# Criar configuração
sudo nano /etc/nginx/sites-available/liberi-kids
```
**Configuração do Nginx:**
```nginx
server {
listen 80;
server_name seu-dominio.com; # ou IP do servidor
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_cache_bypass $http_upgrade;
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;
}
}
```
```bash
# Ativar site
sudo ln -s /etc/nginx/sites-available/liberi-kids /etc/nginx/sites-enabled/
# Testar configuração
sudo nginx -t
# Reiniciar Nginx
sudo systemctl restart nginx
```
---
## 🔒 Configurar Firewall
```bash
# Permitir porta 5000
sudo ufw allow 5000/tcp
# Ou se usar Nginx
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Verificar status
sudo ufw status
```
---
## 📊 Monitoramento
### Ver uso de recursos
```bash
# Com PM2
pm2 monit
# Processos
htop
# Espaço em disco
df -h
# Memória
free -h
```
### Logs
```bash
# PM2
pm2 logs liberi-kids-estoque --lines 200
# Systemd
sudo journalctl -u liberi-kids -f
# Logs customizados
tail -f logs/pm2-error.log
tail -f logs/pm2-out.log
```
---
## 🔄 Backup Automático
Adicione ao crontab:
```bash
# Editar crontab
crontab -e
# Adicionar linha para backup diário às 3h da manhã
0 3 * * * cd /home/tiago/Downloads/app_estoque_v1.0.0 && ./backup-projeto-completo.sh
```
---
## ⚠️ Troubleshooting
### Aplicação não inicia
```bash
# Verificar logs
pm2 logs liberi-kids-estoque
# Verificar se a porta está em uso
sudo lsof -i :5000
# Matar processo na porta
sudo kill -9 $(sudo lsof -t -i:5000)
# Reiniciar
pm2 restart liberi-kids-estoque
```
### Alto uso de memória
```bash
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Limpar cache do npm
npm cache clean --force
# Verificar processos
pm2 monit
```
### Erros de permissão
```bash
# Dar permissões corretas
sudo chown -R $USER:$USER /home/tiago/Downloads/app_estoque_v1.0.0
# Permissões de execução
chmod +x server-supabase.js
```
---
## 📝 Resumo - Comandos Principais
```bash
# ✅ Iniciar aplicação
pm2 start ecosystem.config.js
# ✅ Ver status
pm2 status
# ✅ Ver logs
pm2 logs liberi-kids-estoque
# ✅ Reiniciar
pm2 restart liberi-kids-estoque
# ✅ Salvar configuração
pm2 save
# ✅ Configurar auto-inicialização
pm2 startup
# ✅ Acessar aplicação
# http://seu-ip:5000
```
---
## 🎯 Próximos Passos
1. ✅ Sistema rodando com PM2
2. ⚙️ Configurar Nginx (opcional)
3. 🔒 Configurar SSL com Let's Encrypt (opcional)
4. 📊 Configurar monitoramento
5. 💾 Configurar backups automáticos
---
## 📞 Suporte
- **Logs PM2**: `pm2 logs liberi-kids-estoque`
- **Status**: `pm2 status`
- **Monitoramento**: `pm2 monit`
**Aplicação rodando em**: http://localhost:5000
**Catálogo público**: http://localhost:5000/catalogo