Files
hotel-hacienda/docs/DEPLOYMENT.md
Consultoria AS 411d517ba4 docs: documentación extensiva del proyecto
- README.md con guía completa de instalación y arquitectura
- docs/BACKEND.md — guía detallada del API
- docs/FRONTEND.md — guía del SPA React
- docs/DATABASE.md — funciones SQL y patrones de datos
- docs/API.md — referencia completa de endpoints REST
- docs/DEPLOYMENT.md — guía de despliegue en producción
- docs/TROUBLESHOOTING.md — solución de problemas comunes
- CHANGELOG.md — historial de cambios
- CONTRIBUTING.md — guía de contribución
2026-06-09 16:26:09 -07:00

5.0 KiB

🚀 Guía de Despliegue

Índice

  1. Requisitos del Servidor
  2. Despliegue de Base de Datos
  3. Despliegue del Backend
  4. Despliegue del Frontend
  5. Configuración de Proxy Inverso (Nginx)
  6. Configuración de PM2
  7. SSL con Certbot
  8. Verificación Post-Despliegue
  9. Rollback

Requisitos del Servidor

  • Ubuntu 22.04 LTS (recomendado)
  • 2GB RAM mínimo
  • Node.js 18+
  • PostgreSQL 13+
  • Nginx
  • PM2 (opcional pero recomendado)
  • Git

Despliegue de Base de Datos

1. Instalar PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable postgresql

2. Crear Base de Datos y Usuario

sudo -u postgres psql
CREATE DATABASE hotel_hacienda;
CREATE USER hoteluser WITH ENCRYPTED PASSWORD 'password_seguro';
GRANT ALL PRIVILEGES ON DATABASE hotel_hacienda TO hoteluser;
\q

3. Restaurar Backup

scp backupcondatos22122025.sql usuario@servidor:/tmp/
ssh usuario@servidor
sudo -u postgres psql -d hotel_hacienda -f /tmp/backupcondatos22122025.sql

4. Verificar Funciones

sudo -u postgres psql -d hotel_hacienda -c "\df"

Despliegue del Backend

1. Clonar Repositorio

cd /var/www
git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git
cd hotel-hacienda/backend/hotel_hacienda

2. Instalar Dependencias

npm install --production

3. Configurar Variables de Entorno

cp .env.example .env
nano .env
PORT=3000
URL_CORS=https://hotel.consultoria-as.com

DB_HOST=localhost
DB_PORT=5432
DB_USER=hoteluser
DB_PASSWORD=password_seguro
DB_NAME=hotel_hacienda

EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=soporte@horuxfin.com
EMAIL_PASS=app_password

STRIPE_SECRET_KEY=sk_live_...

FACTURAS_API_URL=https://api.facturas.com/v1/
FACTURAS_ISSUER_RFC=RFC_DEL_HOTEL
FACTURAS_TYPE=I
FACTURAS_API_TOKEN=token_aqui

BANXICO_TOKEN=token_banxico

4. Iniciar con PM2

npm install -g pm2
pm2 start src/server.js --name hotel-api
pm2 save
pm2 startup

Despliegue del Frontend

1. Compilar para Producción

cd /var/www/hotel-hacienda/frontend/Frontend-Hotel
npm install

2. Configurar Environment de Producción

echo "VITE_API_BASE_URL=https://hotel.consultoria-as.com/api" > .env

3. Build

npm run build

Esto genera la carpeta dist/ con los archivos estáticos.


Configuración de Proxy Inverso (Nginx)

1. Instalar Nginx

sudo apt install nginx

2. Configuración del Sitio

sudo nano /etc/nginx/sites-available/hotel-hacienda
server {
    listen 80;
    server_name hotel.consultoria-as.com;

    # Frontend estático
    location / {
        root /var/www/hotel-hacienda/frontend/Frontend-Hotel/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    # Backend API
    location /api/ {
        proxy_pass http://localhost:3000/api/;
        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;
    }

    # Logs
    access_log /var/log/nginx/hotel-access.log;
    error_log /var/log/nginx/hotel-error.log;
}

3. Activar Sitio

sudo ln -s /etc/nginx/sites-available/hotel-hacienda /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

SSL con Certbot

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d hotel.consultoria-as.com
sudo systemctl enable certbot.timer

Verificación Post-Despliegue

Checklist

  • Backend responde: curl https://hotel.consultoria-as.com/api/employees
  • Frontend carga sin errores en navegador
  • Login funciona correctamente
  • Base de datos tiene datos correctos
  • Emails se envían (probar recuperación de contraseña)
  • CORS permite el dominio correcto
  • PM2 muestra el proceso activo: pm2 list
  • Nginx no muestra errores: sudo tail -f /var/log/nginx/hotel-error.log

Rollback

Backend

pm2 stop hotel-api
# Restaurar código anterior con git
git checkout <commit-anterior>
npm install
pm2 restart hotel-api

Base de Datos

# Restaurar backup previo
sudo -u postgres pg_dump hotel_hacienda > backup_antes_del_cambio.sql
sudo -u postgres psql -d hotel_hacienda -f backup_seguro.sql

Frontend

# Recompilar versión anterior
git checkout <commit-anterior>
cd frontend/Frontend-Hotel
npm run build

Nota: Mantener siempre un backup reciente de la base de datos antes de cualquier despliegue que modifique funciones SQL.