# 馃殌 Gu铆a de Despliegue ## 脥ndice 1. [Requisitos del Servidor](#requisitos-del-servidor) 2. [Despliegue de Base de Datos](#despliegue-de-base-de-datos) 3. [Despliegue del Backend](#despliegue-del-backend) 4. [Despliegue del Frontend](#despliegue-del-frontend) 5. [Configuraci贸n de Proxy Inverso (Nginx)](#configuraci贸n-de-proxy-inverso-nginx) 6. [Configuraci贸n de PM2](#configuraci贸n-de-pm2) 7. [SSL con Certbot](#ssl-con-certbot) 8. [Verificaci贸n Post-Despliegue](#verificaci贸n-post-despliegue) 9. [Rollback](#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 ```bash sudo apt update sudo apt install postgresql postgresql-contrib sudo systemctl enable postgresql ``` ### 2. Crear Base de Datos y Usuario ```bash sudo -u postgres psql ``` ```sql 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 ```bash scp backupcondatos22122025.sql usuario@servidor:/tmp/ ssh usuario@servidor sudo -u postgres psql -d hotel_hacienda -f /tmp/backupcondatos22122025.sql ``` ### 4. Verificar Funciones ```bash sudo -u postgres psql -d hotel_hacienda -c "\df" ``` --- ## Despliegue del Backend ### 1. Clonar Repositorio ```bash cd /var/www git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git cd hotel-hacienda/backend/hotel_hacienda ``` ### 2. Instalar Dependencias ```bash npm install --production ``` ### 3. Configurar Variables de Entorno ```bash cp .env.example .env nano .env ``` ```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 ```bash npm install -g pm2 pm2 start src/server.js --name hotel-api pm2 save pm2 startup ``` --- ## Despliegue del Frontend ### 1. Compilar para Producci贸n ```bash cd /var/www/hotel-hacienda/frontend/Frontend-Hotel npm install ``` ### 2. Configurar Environment de Producci贸n ```bash echo "VITE_API_BASE_URL=https://hotel.consultoria-as.com/api" > .env ``` ### 3. Build ```bash npm run build ``` Esto genera la carpeta `dist/` con los archivos est谩ticos. --- ## Configuraci贸n de Proxy Inverso (Nginx) ### 1. Instalar Nginx ```bash sudo apt install nginx ``` ### 2. Configuraci贸n del Sitio ```bash sudo nano /etc/nginx/sites-available/hotel-hacienda ``` ```nginx 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 ```bash sudo ln -s /etc/nginx/sites-available/hotel-hacienda /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ``` --- ## SSL con Certbot ```bash 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 ```bash pm2 stop hotel-api # Restaurar c贸digo anterior con git git checkout npm install pm2 restart hotel-api ``` ### Base de Datos ```bash # 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 ```bash # Recompilar versi贸n anterior git checkout 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.