Files
rx.scoreodonto.com/dental-server/bkp/docs/INSTALACAO-DENTAL-SERVER.md
T
VPS 4 Builder f30c4fe002
continuous-integration/webhook Deploy concluido (rx.scoreodonto.com)
chore: mover docs, scripts e arquivos obsoletos para dental-server/bkp/
2026-05-27 02:18:54 +02:00

7.3 KiB

🦷 MANUAL DE INSTALAÇÃO - DENTAL SERVER v2.0

📋 SUMÁRIO

  1. Pré-requisitos
  2. Upload de Arquivos
  3. Configuração no VPS
  4. Banco de Dados
  5. PM2 e Nginx
  6. Verificação

PRÉ-REQUISITOS

No aaPanel:

  • Node.js instalado (versão 16+)
  • PM2 instalado globalmente
  • Nginx configurado
  • SSL/HTTPS configurado (Let's Encrypt)
  • Porta 3000 liberada (ou outra porta configurada)

No terminal do VPS:

# Verificar Node.js
node --version

# Verificar PM2
pm2 --version

# Se não tiver PM2:
npm install -g pm2

📤 UPLOAD DE ARQUIVOS

1. Estrutura no VPS:

Crie a pasta no seu VPS (normalmente em /www/wwwroot/dental-server ou similar):

mkdir -p /www/wwwroot/dental-server
cd /www/wwwroot/dental-server

2. Arquivos para upload:

Faça upload de TODOS estes arquivos para o servidor:

dental-server/
├── routes/
│   └── images.js          ← API de imagens
├── public/
│   ├── index.html         ← Interface web
│   ├── style.css          ← Estilos
│   └── app.js             ← JavaScript
├── installer/
│   └── check-installation.js
├── image-processor.js     ← Processamento de imagens
├── migration-v2.sql       ← SQL para atualizar banco
├── package.json           ← Se não tiver, criar
├── server.js              ← Arquivo principal (existente)
├── database.js            ← Conexão MySQL (existente)
└── INSTALACAO-DENTAL-SERVER.md

⚙️ CONFIGURAÇÃO NO VPS

1. Instalar dependências:

cd /www/wwwroot/dental-server

# Instalar npm packages
npm install

Se o package.json não existir, crie:

npm init -y
npm install express socket.io sharp dotenv cors cookie-parser bcrypt jsonwebtoken mysql2

2. Criar arquivo .env:

nano .env

Adicione (ajuste conforme seu setup):

# Porta do servidor
PORT=3000

# Ambiente
NODE_ENV=production

# JWT Secret (mude para algo seguro!)
JWT_SECRET=sua_chave_secreta_super_segura_aqui

# Session Secret
SESSION_SECRET=outra_chave_secreta

# Banco de dados MySQL
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=sua_senha_mysql
DB_NAME=dental_images

# Uploads
UPLOAD_DIR=/www/wwwroot/dental-server/uploads
PROCESSED_DIR=/www/wwwroot/dental-server/processed

# SSL/Domínio
ALLOWED_ORIGINS=https://seu-dominio.com
TRUST_PROXY=true

Salve com Ctrl+O e Ctrl+X.

3. Criar pastas necessárias:

mkdir -p uploads processed logs
chmod 755 uploads processed logs

🗄️ BANCO DE DADOS

Opção A: Via Terminal MySQL:

cd /www/wwwroot/dental-server

# Criar banco de dados (se não existir)
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS dental_images CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Executar migration
mysql -u root -p dental_images < migration-simple.sql

Opção B: Via phpMyAdmin ou MySQL Workbench:

  1. Crie o banco de dados dental_images
  2. Selecione o banco
  3. Importe o arquivo migration-simple.sql

Verificar estrutura:

mysql -u root -p dental_images -e "DESCRIBE images;"

Deve mostrar todas as colunas incluindo as novas:

  • enabled, tooth_number, tooth_side, patient_name_resumed
  • original_image_id, rotation, flip_horizontal, flip_vertical

🚀 PM2 E NGINX

1. Iniciar com PM2:

cd /www/wwwroot/dental-server

# Iniciar servidor
pm2 start server.js --name dental-server

# Salvar configuração
pm2 save

# Ver status
pm2 status dental-server

# Ver logs
pm2 logs dental-server

2. Configurar Nginx (Proxy Reverso):

No aaPanel:

  1. Vá em WebsiteSua lista de sites → Clique em Configuração
  2. Vá em ConfiguraçãoPainel de configuração

Adicione este código ANTES do último }:

# Dental Server Proxy
location / {
    proxy_pass http://127.0.0.1:3000;
    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;
}

# Socket.IO support
location /socket.io/ {
    proxy_pass http://127.0.0.1:3000;
    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;
}

Salve e teste a configuração:

nginx -t

Se tudo OK, recarregue:

nginx -s reload
# ou
service nginx reload

VERIFICAÇÃO

1. Testar servidor:

# Ver se está rodando
pm2 status dental-server

# Ver logs em tempo real
pm2 logs dental-server --lines 50

# Reiniciar se necessário
pm2 restart dental-server

2. Acessar no navegador:

  1. Login: https://seu-dominio.com/login

    • Usuário: rcesar ou rcesar@rcesar.com
    • Senha: Rc362514
  2. Interface: https://seu-dominio.com/

    • Você verá o gerenciador de imagens
  3. Installer: https://seu-dominio.com/install

    • Para reconfigurar ou atualizar

3. Testar upload do cliente:

Configure o cliente Windows para apontar para https://seu-dominio.com e envie uma imagem de teste.


🔧 COMANDOS ÚTEIS

# Ver status PM2
pm2 status

# Ver logs
pm2 logs dental-server

# Reiniciar
pm2 restart dental-server

# Parar
pm2 stop dental-server

# Iniciar
pm2 start dental-server

# Deletar
pm2 delete dental-server

# Ver informações
pm2 info dental-server

# Monitoramento
pm2 monit

🐛 TROUBLESHOOTING

Erro: "Cannot find module"

npm install

Erro: "Port already in use"

# Ver quem está usando a porta 3000
lsof -i :3000

# Matar processo
kill -9 <PID>

# Ou mudar porta no .env
PORT=3001

Erro no banco de dados MySQL

# Verificar conexão MySQL
mysql -u root -p -e "USE dental_images; SHOW TABLES;"

# Ver estrutura
mysql -u root -p dental_images -e "DESCRIBE images;"

# Verificar usuário e senha
mysql -u root -p -e "SELECT User, Host FROM mysql.user;"

Nginx não carrega

# Verificar configuração
nginx -t

# Ver logs do Nginx
tail -f /var/log/nginx/error.log

Socket.IO não conecta

Verifique se adicionou as configurações de proxy do Socket.IO no Nginx e se o cors está configurado no server.js.


📝 PRÓXIMOS PASSOS

  1. Configure o cliente Windows com o IP/domínio do servidor
  2. Faça upload de imagens de teste
  3. Teste todas as funcionalidades:
    • Transformações (rotação, flip)
    • Download com nome personalizado
    • Apagar versões
    • Habilitar/Desabilitar

📞 SUPORTE

Para problemas:

  1. Verifique os logs: pm2 logs dental-server
  2. Verifique o banco: mysql -u root -p dental_images -e "SELECT * FROM images LIMIT 5;"
  3. Verifique Nginx: tail -f /var/log/nginx/error.log

Última atualização: 2025-01-26
Versão: 2.0.0
Autor: Rcesar